aboutsummaryrefslogtreecommitdiff
path: root/modules/rss.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-24 06:48:48 +0100
committerGravatar jesopo2019-06-24 06:48:48 +0100
commit8adf320e659ed329ce2a621e6c59a0bc5fa8f7c4 (patch)
treecf10a87352d264f82ae45b797949bea9e9ce6e7c /modules/rss.py
parentmove _check() after timeouted queue.get() so deadlines are met accurately (diff)
signature
Get RSS feed and mark all IDs as "seen" when first adding the URL
Diffstat (limited to 'modules/rss.py')
-rw-r--r--modules/rss.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/modules/rss.py b/modules/rss.py
index c6b23514..d7d369da 100644
--- a/modules/rss.py
+++ b/modules/rss.py
@@ -73,6 +73,15 @@ class Module(ModuleManager.BaseModule):
channel.set_setting("rss-seen-ids", new_ids)
+ def _check_url(self, url):
+ try:
+ feed = feedparser.parse(url)
+ except:
+ feed = None
+ if not feed or not feed["feed"]:
+ return None
+ return [entry["id"] for entry in feed["entries"]]
+
@utils.hook("received.command.rss", min_args=1, channel_only=True)
def rss(self, event):
"""
@@ -97,6 +106,12 @@ class Module(ModuleManager.BaseModule):
url = event["args_split"][1]
if url in rss_hooks:
raise utils.EventError("That URL is already being watched")
+
+ seen_ids = self._check_url(url)
+ if seen_ids == None:
+ raise utils.EventError("Failed to read feed")
+ event["target"].set_setting("rss-seen-ids", seen_ids)
+
rss_hooks.append(url)
changed = True
message = "Added RSS feed"