diff options
| author | 2019-06-24 06:48:48 +0100 | |
|---|---|---|
| committer | 2019-06-24 06:48:48 +0100 | |
| commit | 8adf320e659ed329ce2a621e6c59a0bc5fa8f7c4 (patch) | |
| tree | cf10a87352d264f82ae45b797949bea9e9ce6e7c /modules/rss.py | |
| parent | move _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.py | 15 |
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" |
