Ignoriere Feed, wenn HTTP-Code >= 400

This commit is contained in:
Andreas Bielawski
2016-12-13 21:13:27 +01:00
parent 919afe252a
commit 4d9a498e50

115
bot.py
View File

@ -295,63 +295,66 @@ def check_rss(bot, job):
last = r.get('pythonbot:rss:' + url + ':last_entry') last = r.get('pythonbot:rss:' + url + ':last_entry')
feed_data = feedparser.parse(url) feed_data = feedparser.parse(url)
if not 'title' in feed_data.feed: if feed_data.status < 400:
feed_title = feed_data.feed.link if not 'title' in feed_data.feed:
else: feed_title = feed_data.feed.link
feed_title = feed_data.feed.title
newentr = get_new_entries(last, feed_data.entries)
text = ''
for k2, v2 in enumerate(newentr):
if not 'title' in v2:
title = 'Kein Titel'
else:
title = remove_tags(v2.title).lstrip()
if not 'link' in v2:
link = feed_data.feed.link
link_name = link
else:
link = v2.link
f = re.search('^https?://feedproxy\.google\.com/~r/(.+?)/.*', link) # feedproxy.google.com
if f:
link_name = f.group(1)
else: else:
link_name = urlparse(link).netloc feed_title = feed_data.feed.title
link_name = re.sub('^www\d?\.', '', link_name) # www. newentr = get_new_entries(last, feed_data.entries)
if 'content' in v2: text = ''
content = remove_tags(v2.content[0].value).lstrip() for k2, v2 in enumerate(newentr):
content = cleanRSS(content) if not 'title' in v2:
if len(content) > 250: title = 'Kein Titel'
content = content[0:250] + '...' else:
elif 'summary' in v2: title = remove_tags(v2.title).lstrip()
content = remove_tags(v2.summary).lstrip() if not 'link' in v2:
content = cleanRSS(content) link = feed_data.feed.link
if len(content) > 250: link_name = link
content = content[0:250] + '...' else:
else: link = v2.link
content = '' f = re.search('^https?://feedproxy\.google\.com/~r/(.+?)/.*', link) # feedproxy.google.com
# Für 1 Nachricht pro Beitrag, tue dies: if f:
# Entferne hier das "text + "... link_name = f.group(1)
text = text + '\n<b>' + title + '</b>\n<i>' + feed_title + '</i>\n' + content + '\n<a href="' + link + '">Auf ' + link_name + ' weiterlesen</a>\n' else:
# ...und setze hier vor jeder Zeile 2 zusätzliche Leerzeichen link_name = urlparse(link).netloc
if text != '': link_name = re.sub('^www\d?\.', '', link_name) # www.
if not 'id' in newentr[0]: if 'content' in v2:
newlast = newentr[0].link content = remove_tags(v2.content[0].value).lstrip()
else: content = cleanRSS(content)
newlast = newentr[0].id if len(content) > 250:
r.set('pythonbot:rss:' + url + ':last_entry', newlast) content = content[0:250] + '...'
for k2, receiver in enumerate(list(r.smembers(v))): elif 'summary' in v2:
try: content = remove_tags(v2.summary).lstrip()
bot.sendMessage(receiver, text, parse_mode=ParseMode.HTML, disable_web_page_preview=True) content = cleanRSS(content)
except Unauthorized: if len(content) > 250:
print('Chat ' + receiver + ' existiert nicht mehr, lösche aus Abonnenten-Liste') content = content[0:250] + '...'
r.srem(v, receiver) else:
r.delete('pythonbot:rss:' + receiver) content = ''
except ChatMigrated as e: # Für 1 Nachricht pro Beitrag, tue dies:
print('Chat migriert: ' + receiver + ' -> ' + str(e.new_chat_id)) # Entferne hier das "text + "...
r.srem(v, receiver) text = text + '\n<b>' + title + '</b>\n<i>' + feed_title + '</i>\n' + content + '\n<a href="' + link + '">Auf ' + link_name + ' weiterlesen</a>\n'
r.sadd(v, e.new_chat_id) # ...und setze hier vor jeder Zeile 2 zusätzliche Leerzeichen
r.rename('pythonbot:rss:' + receiver, 'pythonbot:rss:' + str(e.new_chat_id)) if text != '':
bot.sendMessage(e.new_chat_id, text, parse_mode=ParseMode.HTML, disable_web_page_preview=True) if not 'id' in newentr[0]:
newlast = newentr[0].link
else:
newlast = newentr[0].id
r.set('pythonbot:rss:' + url + ':last_entry', newlast)
for k2, receiver in enumerate(list(r.smembers(v))):
try:
bot.sendMessage(receiver, text, parse_mode=ParseMode.HTML, disable_web_page_preview=True)
except Unauthorized:
print('Chat ' + receiver + ' existiert nicht mehr, lösche aus Abonnenten-Liste')
r.srem(v, receiver)
r.delete('pythonbot:rss:' + receiver)
except ChatMigrated as e:
print('Chat migriert: ' + receiver + ' -> ' + str(e.new_chat_id))
r.srem(v, receiver)
r.sadd(v, e.new_chat_id)
r.rename('pythonbot:rss:' + receiver, 'pythonbot:rss:' + str(e.new_chat_id))
bot.sendMessage(e.new_chat_id, text, parse_mode=ParseMode.HTML, disable_web_page_preview=True)
else:
print('HTTP-Fehler: ' + str(feed_data.status))
print('----------') print('----------')
def error(bot, update, error): def error(bot, update, error):