X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;ds=inline;f=sid%2Ffeeds.py;h=1b31b5cf1e9bd8212d2417aca872e390f6950cf4;hb=7d86dbccdf08456db533d3bec787b9784b6854d6;hp=5494a95e6daf0f7e386b354abfcb36df4dd85e7d;hpb=4a7f23317ab2236a85c3a17a00a52ac034c9bad7;p=sid.git
diff --git a/sid/feeds.py b/sid/feeds.py
index 5494a95..1b31b5c 100644
--- a/sid/feeds.py
+++ b/sid/feeds.py
@@ -19,6 +19,9 @@ import threading
import time
import traceback
+from urllib.error import URLError
+from urllib.parse import urlparse
+
from feedparser import parse as feed_parse
from .plugin import Plugin, botcmd
@@ -122,7 +125,11 @@ class FeedMonitor(threading.Thread):
for feed in self.feeds_list:
try:
self.new_posts(feed)
- except Exception as err:
+ except ConnectionError as err: # Non fatal exception
+ self.plugin.log.error('connection error on %s: %s', feed, err)
+ except URLError as err: # Non fatal exception
+ self.plugin.log.error('error for "%s": %s', feed, err.reason)
+ except Exception as err: # Unknown execption, killing thread anyway
self.plugin.log.error('feeds thread crashed: %s', err)
self.plugin.log.error(''.join(traceback.format_exc()))
self.thread_killed = True
@@ -163,16 +170,18 @@ class Feeds(Plugin):
@botcmd
def feeds(self, rcv, args):
- """feeds monitors debian project related feeds.
+ """Monitors debian project related feeds.
* ``!feeds`` : registred feeds list
* ``!feeds last`` : last check time"""
if 'last' in args:
- self.reply(rcv, 'Last feeds check: %s' % self.th_mon.last_check)
+ date = '{:%Y-%m-%d %H:%M} (utc)'.format(self.th_mon.last_check)
+ self.reply(rcv, f'Last feeds check: {date}')
return
- html = ['{1}'.format(html_escape(u),
- html_escape(u[7:])
- ) for u in Feeds.FEEDS]
+ html = ['{1}'.format(
+ html_escape(u),
+ html_escape('{1}{2}'.format(*urlparse(u)))
+ ) for u in Feeds.FEEDS]
msg = {'mbody': 'Feeds:\n' + '\n'.join(Feeds.FEEDS),
'mhtml': 'Feeds:
' + '
'.join(html)}
self.reply(rcv, msg)