| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  | #!/usr/bin/env python | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  | #coding: utf-8 | 
					
						
							| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-26 20:20:51 +01:00
										 |  |  | from models import Base, Feed, Feedinfo, Entry | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from sqlalchemy import create_engine | 
					
						
							|  |  |  | from sqlalchemy.orm import sessionmaker | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  | from datetime import datetime, timedelta | 
					
						
							| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  | import feedparser | 
					
						
							| 
									
										
										
										
											2010-10-29 00:13:00 +02:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2013-03-26 20:20:51 +01:00
										 |  |  | import codecs | 
					
						
							|  |  |  | #import urllib | 
					
						
							| 
									
										
										
										
											2013-03-20 20:30:54 +01:00
										 |  |  | import urllib2 | 
					
						
							| 
									
										
										
										
											2013-03-26 20:20:51 +01:00
										 |  |  | #import hn | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  | import html2text | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  | import ConfigParser | 
					
						
							| 
									
										
										
										
											2010-10-31 19:46:13 +01:00
										 |  |  | from optparse import OptionParser | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  | from cStringIO import StringIO | 
					
						
							|  |  |  | from email.mime.multipart import MIMEMultipart | 
					
						
							|  |  |  | from email.mime.text import MIMEText | 
					
						
							|  |  |  | from email.header import Header | 
					
						
							|  |  |  | from email import Charset | 
					
						
							|  |  |  | from email.generator import Generator | 
					
						
							|  |  |  | import smtplib | 
					
						
							| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 20:09:44 +01:00
										 |  |  | def send_mail(sender, receiver, subject, body): | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  |     print 'sending to %s: %s' % (receiver[0], subject) | 
					
						
							|  |  |  |     Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8') | 
					
						
							|  |  |  |     mail = MIMEMultipart('alternative') | 
					
						
							|  |  |  |     mail['Subject'] = "%s" % Header(subject, 'utf-8') | 
					
						
							|  |  |  |     mail['From'] = "\"%s\" <%s>" % (Header(sender[0], 'utf-8'), sender[1]) | 
					
						
							|  |  |  |     mail['To'] = "\"%s\" <%s>" % (Header(receiver[0], 'utf-8'), receiver[1]) | 
					
						
							|  |  |  |     textpart = MIMEText(body, 'plain', 'utf-8') | 
					
						
							|  |  |  |     mail.attach(textpart) | 
					
						
							|  |  |  |     str_io = StringIO() | 
					
						
							|  |  |  |     gen = Generator(str_io, False) | 
					
						
							|  |  |  |     gen.flatten(mail) | 
					
						
							|  |  |  |     s = smtplib.SMTP('localhost') | 
					
						
							|  |  |  |     s.sendmail("", receiver[1], str_io.getvalue()) | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  | def get_entry_text(entry): | 
					
						
							|  |  |  |     if entry.readability: | 
					
						
							|  |  |  |         text = entry.readability | 
					
						
							|  |  |  |     elif entry.fullpage: | 
					
						
							|  |  |  |         text = entry.fullpage | 
					
						
							|  |  |  |     elif entry.summary: | 
					
						
							|  |  |  |         text = entry.summary | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         text = 'no text, sorry' | 
					
						
							|  |  |  |     return text | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  | def mail_daily_digest(session, sender, receiver, prefix): | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  |     print 'mailing daily digest...' | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |     entries = session.query(Feed, Feedinfo, Entry).\ | 
					
						
							|  |  |  |                 filter(Feed.id == Feedinfo.feed_id).\ | 
					
						
							|  |  |  |                 filter(Feed.id == Entry.feed_id).\ | 
					
						
							|  |  |  |                 filter(Feed.enabled == 1).\ | 
					
						
							|  |  |  |                 filter(Feed.daily == 1).\ | 
					
						
							|  |  |  |                 filter(Entry.sent == None).\ | 
					
						
							|  |  |  |                 order_by(desc(Entry.firstfetched), Feedinfo.title, Entry.title).\ | 
					
						
							|  |  |  |                 all() | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  |     body = '' | 
					
						
							| 
									
										
										
										
											2010-10-31 11:05:28 +01:00
										 |  |  |     count = 0 | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |     for feed, feedinfo, entry in entries: | 
					
						
							| 
									
										
										
										
											2010-10-31 11:05:28 +01:00
										 |  |  |         count = count + 1 | 
					
						
							| 
									
										
										
										
											2013-03-20 20:30:54 +01:00
										 |  |  |         link = entry.link | 
					
						
							|  |  |  |         if entry.resolvedlink: | 
					
						
							|  |  |  |             link = entry.resolvedlink | 
					
						
							| 
									
										
										
										
											2013-03-21 21:42:28 +01:00
										 |  |  |         try: | 
					
						
							|  |  |  |             body = body + '=> %s - %s\n' % (entry.firstfetched.strftime('%y%m%d-%H%M'), feedinfo.title) | 
					
						
							| 
									
										
										
										
											2013-03-21 23:43:10 +01:00
										 |  |  |             body = body + '   %s\n' % entry.title | 
					
						
							| 
									
										
										
										
											2013-03-21 21:42:28 +01:00
										 |  |  |             body = body + '%s\n' % get_entry_text(entry)[0:100] | 
					
						
							|  |  |  |             body = body + '%s\n\n' % link | 
					
						
							|  |  |  |         except: | 
					
						
							|  |  |  |             print 'ERROR processing entry %s' % entry.id; | 
					
						
							|  |  |  |             print sys.exc_info() | 
					
						
							|  |  |  |             print 'not sending mail' | 
					
						
							|  |  |  |             return | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |     if count > 0: | 
					
						
							|  |  |  |         today = datetime.now() | 
					
						
							|  |  |  |         subject = '%s (%s) - %d entries' % (today.strftime('%y%m%d'), today.strftime('%A'), count) | 
					
						
							|  |  |  |         if prefix != '': | 
					
						
							|  |  |  |             subject = '%s %s' % (prefix, subject) | 
					
						
							|  |  |  |         send_mail(sender, receiver, subject, body) | 
					
						
							|  |  |  |         for feed, feedinfo, entry in entries: | 
					
						
							|  |  |  |             entry.sent = datetime.now() | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         print 'no unmailed digest-entries found... not sending mail.' | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  | def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix): | 
					
						
							| 
									
										
										
										
											2013-03-19 20:09:44 +01:00
										 |  |  |     subject = '%s' % (entry.title) | 
					
						
							|  |  |  |     if prefix != '': | 
					
						
							|  |  |  |         subject = '%s %s' % (prefix, subject) | 
					
						
							| 
									
										
										
										
											2013-03-20 20:30:54 +01:00
										 |  |  |     link = entry.link | 
					
						
							|  |  |  |     if entry.resolvedlink: | 
					
						
							|  |  |  |         link = entry.resolvedlink | 
					
						
							| 
									
										
										
										
											2013-03-19 20:24:49 +01:00
										 |  |  |     body = '%s\n\n' % get_entry_text(entry) | 
					
						
							|  |  |  |     body = body + '%s\n' % feedinfo.link | 
					
						
							| 
									
										
										
										
											2013-03-20 20:30:54 +01:00
										 |  |  |     body = body + '%s\n' % link | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  |     sender[0] = feedinfo.title | 
					
						
							| 
									
										
										
										
											2013-03-19 20:09:44 +01:00
										 |  |  |     send_mail(sender, receiver, subject, body) | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |     entry.sent = datetime.now() | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  | def mail_single_entries(session, sender, receiver, prefix): | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  |     print 'mailing single entries...' | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |     count = 0 | 
					
						
							|  |  |  |     entries = session.query(Feed, Feedinfo, Entry).\ | 
					
						
							|  |  |  |                 filter(Feed.id == Feedinfo.feed_id).\ | 
					
						
							|  |  |  |                 filter(Feed.id == Entry.feed_id).\ | 
					
						
							|  |  |  |                 filter(Feed.enabled == 1).\ | 
					
						
							| 
									
										
										
										
											2013-03-22 20:47:20 +01:00
										 |  |  |                 filter(Feed.daily == 0 or Feed.daily == None).\ | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |                 filter(Entry.sent == None).\ | 
					
						
							|  |  |  |                 all() | 
					
						
							|  |  |  |     for feed, feedinfo, entry in entries: | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  |         mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix) | 
					
						
							| 
									
										
										
										
											2013-03-19 23:03:33 +01:00
										 |  |  |         count = count + 1 | 
					
						
							|  |  |  |     if count > 0: | 
					
						
							|  |  |  |         print 'sent %d mails' % count | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         print 'no unmailed single entries found... not sending mail.' | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-30 00:21:24 +02:00
										 |  |  | def fetch_readability(link): | 
					
						
							|  |  |  |     text = hn.upgradeLink(link) | 
					
						
							|  |  |  |     text = text.decode('utf8') | 
					
						
							|  |  |  |     return text | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-29 09:09:25 +02:00
										 |  |  | def fetch_full_page(link): | 
					
						
							|  |  |  |     opener = urllib.FancyURLopener({}) | 
					
						
							|  |  |  |     response = opener.open(link) | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |     html = response.read() | 
					
						
							|  |  |  |     html = html.decode('utf8') | 
					
						
							|  |  |  |     text = html2text.html2text(html) | 
					
						
							|  |  |  |     return text.encode('latin-1', 'replace') | 
					
						
							| 
									
										
										
										
											2010-10-29 09:09:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  | def process_feed_entry(session, feed, entry): | 
					
						
							| 
									
										
										
										
											2013-03-21 22:38:44 +01:00
										 |  |  |     thisentry = session.query(Entry).\ | 
					
						
							|  |  |  |                 filter(Entry.title == entry.title).\ | 
					
						
							|  |  |  |                 filter(Entry.link == entry.link).\ | 
					
						
							|  |  |  |                 first() | 
					
						
							|  |  |  |     if thisentry: | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |         print '  entry already known <%s>' % entry.title | 
					
						
							| 
									
										
										
										
											2013-03-21 22:38:44 +01:00
										 |  |  |         thisentry.lastfetched = datetime.now() | 
					
						
							|  |  |  |         session.commit() | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |         return 0 | 
					
						
							| 
									
										
										
										
											2013-03-21 22:38:44 +01:00
										 |  |  |     else: | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |         print '  new entry <%s>' % entry.title | 
					
						
							| 
									
										
										
										
											2010-10-29 09:09:25 +02:00
										 |  |  |         thisentry = Entry(entry) | 
					
						
							| 
									
										
										
										
											2013-03-20 20:30:54 +01:00
										 |  |  |         if feed.resolveredirects: | 
					
						
							|  |  |  |             print '    fetching final link <%s>' % entry.link | 
					
						
							|  |  |  |             request = urllib2.Request(entry.link) | 
					
						
							|  |  |  |             opener = urllib2.build_opener() | 
					
						
							|  |  |  |             result = opener.open(request) | 
					
						
							|  |  |  |             thisentry.resolvedlink = result.url | 
					
						
							|  |  |  |             print '    final link: <%s>' % result.url | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  |         if feed.fullpage: | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |             print '    fetching full page <%s>' % entry.link | 
					
						
							| 
									
										
										
										
											2010-10-29 09:09:25 +02:00
										 |  |  |             thisentry.fullpage = fetch_full_page(entry.link) | 
					
						
							| 
									
										
										
										
											2010-10-30 11:16:37 +02:00
										 |  |  |         if feed.readability: | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |             print '    fetching readability <%s>' % entry.link | 
					
						
							| 
									
										
										
										
											2010-10-30 00:21:24 +02:00
										 |  |  |             thisentry.readability = fetch_readability(entry.link) | 
					
						
							| 
									
										
										
										
											2010-10-31 14:20:12 +01:00
										 |  |  |         if feed.html2textsummary: | 
					
						
							|  |  |  |             print '    converting summary' | 
					
						
							| 
									
										
										
										
											2013-03-20 23:20:54 +01:00
										 |  |  |             h2t = html2text.HTML2Text() | 
					
						
							|  |  |  |             h2t.body_width = 0 | 
					
						
							| 
									
										
										
										
											2013-03-20 23:28:48 +01:00
										 |  |  |             if feed.html2textignoreimages: | 
					
						
							|  |  |  |                 h2t.ignore_images = True | 
					
						
							| 
									
										
										
										
											2013-03-21 23:43:10 +01:00
										 |  |  |             thisentry.summary = h2t.handle(thisentry.summary) | 
					
						
							| 
									
										
										
										
											2010-10-29 09:09:25 +02:00
										 |  |  |         feed.entry.append(thisentry) | 
					
						
							| 
									
										
										
										
											2013-03-21 22:38:44 +01:00
										 |  |  |         session.commit() | 
					
						
							| 
									
										
										
										
											2010-10-31 13:30:26 +01:00
										 |  |  |         return 1 | 
					
						
							| 
									
										
										
										
											2010-10-29 00:28:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  | def fetch_single_feed(session, feed): | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |     print 'processing %s' % feed.url | 
					
						
							| 
									
										
										
										
											2013-03-26 21:26:59 +01:00
										 |  |  |     thisfeedinfo = session.query(Feedinfo).\ | 
					
						
							|  |  |  |                 filter(Feedinfo.feed_id==feed.id).\ | 
					
						
							|  |  |  |                 first() | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |     fetched = False | 
					
						
							| 
									
										
										
										
											2013-03-26 21:26:59 +01:00
										 |  |  |     if thisfeedinfo: | 
					
						
							|  |  |  |         feed.feedinfo = thisfeedinfo | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |         nextfetch = (feed.feedinfo.lastfetched + timedelta(minutes=feed.frequency)) | 
					
						
							|  |  |  |         if datetime.now() > nextfetch: | 
					
						
							| 
									
										
										
										
											2013-03-26 21:26:59 +01:00
										 |  |  |             print 'feed known, fetching...' | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |             parser = feedparser.parse(feed.url) | 
					
						
							|  |  |  |             fetched = True | 
					
						
							|  |  |  |             feed.feedinfo.update(parser) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             print 'not fetching before: %s' % nextfetch | 
					
						
							| 
									
										
										
										
											2013-03-26 21:26:59 +01:00
										 |  |  |     else: | 
					
						
							|  |  |  |         print 'feed seems to be new, fetching...' | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |         parser = feedparser.parse(feed.url) | 
					
						
							|  |  |  |         fetched = True | 
					
						
							| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  |         feed.feedinfo = Feedinfo(parser) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 21:18:38 +01:00
										 |  |  |     if fetched: | 
					
						
							|  |  |  |         print 'processing feed entries:' | 
					
						
							|  |  |  |         entries_new = 0 | 
					
						
							|  |  |  |         entries_total = 0 | 
					
						
							|  |  |  |         for entry in parser.entries: | 
					
						
							|  |  |  |             entries_total = entries_total + 1 | 
					
						
							|  |  |  |             entries_new = entries_new + process_feed_entry(session, feed, entry) | 
					
						
							|  |  |  |             session.commit() | 
					
						
							|  |  |  |         print 'updated %d of %d entries' % (entries_new, entries_total) | 
					
						
							| 
									
										
										
										
											2010-10-29 00:28:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  | def fetch_all_feeds(session): | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  |     print 'fetching all feeds...' | 
					
						
							| 
									
										
										
										
											2010-10-29 00:28:25 +02:00
										 |  |  |     for feed in session.query(Feed).filter_by(enabled=1).order_by(Feed.id): | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  |         fetch_single_feed(session, feed) | 
					
						
							| 
									
										
										
										
											2010-10-29 00:28:25 +02:00
										 |  |  |         print | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-30 11:39:19 +02:00
										 |  |  | if __name__ == '__main__': | 
					
						
							| 
									
										
										
										
											2013-03-26 20:20:51 +01:00
										 |  |  |     streamWriter = codecs.lookup('utf-8')[-1] | 
					
						
							|  |  |  |     sys.stdout = streamWriter(sys.stdout) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  |     config = ConfigParser.ConfigParser() | 
					
						
							|  |  |  |     config.read('atomstrom.conf') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-21 23:43:10 +01:00
										 |  |  |     dbconnectstring = '%s://%s:%s@%s/%s?charset=utf8' % ( | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  |         config.get('database', 'engine'), | 
					
						
							|  |  |  |         config.get('database', 'user'), | 
					
						
							|  |  |  |         config.get('database', 'password'), | 
					
						
							|  |  |  |         config.get('database', 'hostname'), | 
					
						
							|  |  |  |         config.get('database', 'database'), | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     engine = create_engine(dbconnectstring) | 
					
						
							|  |  |  |     Base.metadata.create_all(engine) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Session = sessionmaker(bind=engine) | 
					
						
							|  |  |  |     session = Session() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     #session.add(Feed('http://www.heise.de/newsticker/heise-atom.xml', 1, 0, 0, 1, 1)) | 
					
						
							|  |  |  |     #session.add(Feed('http://blog.schatenseite.de/feed/', 1, 0, 0, 1, 1)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-31 19:46:13 +01:00
										 |  |  |     parser = OptionParser() | 
					
						
							|  |  |  |     parser.add_option("-f", "--fetch", action="store_true", dest="fetch", default=False, help="fetch all feeds") | 
					
						
							|  |  |  |     parser.add_option("-s", "--single", action="store_true", dest="single", default=False, help="send single mails") | 
					
						
							|  |  |  |     parser.add_option("-d", "--daily", action="store_true", dest="daily", default=False, help="send daily digest") | 
					
						
							|  |  |  |     (options, args) = parser.parse_args() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if options.fetch: | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  |         fetch_all_feeds(session) | 
					
						
							| 
									
										
										
										
											2010-10-31 19:46:13 +01:00
										 |  |  |     if options.single: | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  |         sender = [config.get('email', 'sender_name'), config.get('email', 'sender_address')] | 
					
						
							|  |  |  |         receiver = [config.get('email', 'receiver_name'), config.get('email', 'receiver_address')] | 
					
						
							| 
									
										
										
										
											2013-03-19 20:09:44 +01:00
										 |  |  |         prefix = config.get('email', 'prefix_single') | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  |         mail_single_entries(session, sender, receiver, prefix) | 
					
						
							| 
									
										
										
										
											2010-10-31 19:46:13 +01:00
										 |  |  |     if options.daily: | 
					
						
							| 
									
										
										
										
											2013-03-22 22:05:15 +01:00
										 |  |  |         sender = [config.get('email', 'sender_name'), config.get('email', 'sender_address')] | 
					
						
							|  |  |  |         receiver = [config.get('email', 'receiver_name'), config.get('email', 'receiver_address')] | 
					
						
							| 
									
										
										
										
											2013-03-19 19:32:10 +01:00
										 |  |  |         prefix = config.get('email', 'prefix_digest') | 
					
						
							|  |  |  |         mail_daily_digest(session, sender, receiver, prefix) | 
					
						
							| 
									
										
										
										
											2013-03-19 07:15:24 +01:00
										 |  |  |     if not (options.fetch or options.single or options.daily): | 
					
						
							|  |  |  |         parser.print_help() | 
					
						
							| 
									
										
										
										
											2010-10-26 23:02:37 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-18 19:28:47 +01:00
										 |  |  |     session.commit() |