minor change in db-structure, made mailtext column selectable
This commit is contained in:
parent
d1d127744c
commit
d60783b6aa
26
atomstrom.py
26
atomstrom.py
@ -38,17 +38,6 @@ def send_mail(sender, receiver, subject, body):
|
|||||||
s = smtplib.SMTP('localhost')
|
s = smtplib.SMTP('localhost')
|
||||||
s.sendmail("", receiver[1], str_io.getvalue())
|
s.sendmail("", receiver[1], str_io.getvalue())
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
def truncate_text(content, length=100, suffix='...'):
|
def truncate_text(content, length=100, suffix='...'):
|
||||||
content = " ".join(content.split())
|
content = " ".join(content.split())
|
||||||
if len(content) <= length:
|
if len(content) <= length:
|
||||||
@ -76,7 +65,7 @@ def mail_daily_digest(session, sender, receiver, prefix):
|
|||||||
try:
|
try:
|
||||||
body = body + '=> %s - %s\n' % (entry.firstfetched.strftime('%y%m%d-%H%M'), feedinfo.title)
|
body = body + '=> %s - %s\n' % (entry.firstfetched.strftime('%y%m%d-%H%M'), feedinfo.title)
|
||||||
body = body + ' %s\n' % entry.title
|
body = body + ' %s\n' % entry.title
|
||||||
body = body + '%s\n' % truncate_text(get_entry_text(entry), 250)
|
body = body + '%s\n' % truncate_text(entry.get_text(), 250)
|
||||||
body = body + '%s\n\n' % link
|
body = body + '%s\n\n' % link
|
||||||
except:
|
except:
|
||||||
print 'ERROR processing entry %s' % entry.id;
|
print 'ERROR processing entry %s' % entry.id;
|
||||||
@ -101,7 +90,7 @@ def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix):
|
|||||||
link = entry.link
|
link = entry.link
|
||||||
if entry.resolvedlink:
|
if entry.resolvedlink:
|
||||||
link = entry.resolvedlink
|
link = entry.resolvedlink
|
||||||
body = '%s\n\n' % get_entry_text(entry)
|
body = '%s\n\n' % entry.get_text()
|
||||||
body = body + '%s\n' % feedinfo.link
|
body = body + '%s\n' % feedinfo.link
|
||||||
body = body + '%s\n' % link
|
body = body + '%s\n' % link
|
||||||
sender[0] = feedinfo.title
|
sender[0] = feedinfo.title
|
||||||
@ -165,13 +154,20 @@ def process_feed_entry(session, feed, entry):
|
|||||||
if feed.readability:
|
if feed.readability:
|
||||||
print ' fetching readability <%s>' % entry.link
|
print ' fetching readability <%s>' % entry.link
|
||||||
thisentry.readability = fetch_readability(entry.link)
|
thisentry.readability = fetch_readability(entry.link)
|
||||||
if feed.html2textsummary:
|
if feed.html2textcontent:
|
||||||
print ' converting summary'
|
print ' converting summary'
|
||||||
h2t = html2text.HTML2Text()
|
h2t = html2text.HTML2Text()
|
||||||
h2t.body_width = 0
|
h2t.body_width = 0
|
||||||
if feed.html2textignoreimages:
|
if feed.html2textignoreimages:
|
||||||
h2t.ignore_images = True
|
h2t.ignore_images = True
|
||||||
thisentry.summary = h2t.handle(thisentry.summary)
|
if feed.contentcolumn == 'summary':
|
||||||
|
thisentry.summary = h2t.handle(thisentry.summary)
|
||||||
|
elif feed.contentcolumn == 'content':
|
||||||
|
thisentry.content = h2t.handle(thisentry.content)
|
||||||
|
elif feed.contentcolumn == 'fullpage':
|
||||||
|
thisentry.fullpage = h2t.handle(thisentry.fullpage)
|
||||||
|
elif feed.contentcolumn == 'readability':
|
||||||
|
thisentry.readability = h2t.handle(thisentry.readability)
|
||||||
feed.entry.append(thisentry)
|
feed.entry.append(thisentry)
|
||||||
session.commit()
|
session.commit()
|
||||||
return 1
|
return 1
|
||||||
|
@ -57,3 +57,15 @@ class Entry(Base):
|
|||||||
pp.pprint(entry.get('enclosures'))
|
pp.pprint(entry.get('enclosures'))
|
||||||
#self.enclosures = entry.get('enclosures')
|
#self.enclosures = entry.get('enclosures')
|
||||||
self.lastfetched = datetime.now()
|
self.lastfetched = datetime.now()
|
||||||
|
|
||||||
|
def get_text(self):
|
||||||
|
if self.feed.contentcolumn == 'summary':
|
||||||
|
text = self.summary
|
||||||
|
elif self.feed.contentcolumn == 'content':
|
||||||
|
text = self.content
|
||||||
|
elif self.feed.contentcolumn == 'fullpage':
|
||||||
|
text = self.fullpage
|
||||||
|
elif self.feed.contentcolumn == 'readability':
|
||||||
|
text = self.readability
|
||||||
|
return text
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#coding: utf-8
|
#coding: utf-8
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, Boolean
|
from sqlalchemy import Column, Integer, String, Boolean, Enum
|
||||||
|
|
||||||
from models import Base
|
from models import Base
|
||||||
|
|
||||||
@ -15,16 +15,17 @@ class Feed(Base):
|
|||||||
resolveredirects = Column(Boolean)
|
resolveredirects = Column(Boolean)
|
||||||
readability = Column(Boolean)
|
readability = Column(Boolean)
|
||||||
fullpage = Column(Boolean)
|
fullpage = Column(Boolean)
|
||||||
html2textsummary = Column(Boolean)
|
contentcolumn = Column(Enum('summary', 'content', 'fullpage', 'readability'))
|
||||||
|
html2textcontent = Column(Boolean)
|
||||||
html2textignoreimages = Column(Boolean)
|
html2textignoreimages = Column(Boolean)
|
||||||
enabled = Column(Boolean)
|
enabled = Column(Boolean)
|
||||||
|
|
||||||
def __init__(self, url, daily, readability, fullpage, enabled, html2textsummary):
|
def __init__(self, url, daily, readability, fullpage, enabled, html2textcontent):
|
||||||
self.url = url
|
self.url = url
|
||||||
self.daily = daily
|
self.daily = daily
|
||||||
self.readability = readability
|
self.readability = readability
|
||||||
self.fullpage = fullpage
|
self.fullpage = fullpage
|
||||||
self.html2textsummary = html2textsummary
|
self.html2textcontent = html2textcontent
|
||||||
self.enabled = enabled
|
self.enabled = enabled
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user