X-Git-Url: http://git.kaliko.me/?a=blobdiff_plain;f=sid%2Ffeeds.py;h=1b31b5cf1e9bd8212d2417aca872e390f6950cf4;hb=3989896273f97b95cbb26fc87021870d778e03d8;hp=7fba4e25151b390d6c46370b26d28f05efbf8e24;hpb=dc4ac4f37ac6b92014ec41f6233ada96c8484adb;p=sid.git
diff --git a/sid/feeds.py b/sid/feeds.py
index 7fba4e2..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,18 +170,18 @@ class Feeds(Plugin):
@botcmd
def feeds(self, rcv, args):
- """feeds monitors debian project related feeds.
-
- **commands**:
+ """Monitors debian project related feeds.
- * ``!feeds`` : registred feeds list
+ * ``!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)