From 8adf320e659ed329ce2a621e6c59a0bc5fa8f7c4 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 24 Jun 2019 06:48:48 +0100 Subject: [PATCH] Get RSS feed and mark all IDs as "seen" when first adding the URL --- modules/rss.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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"