1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 11:34:18 +00:00

A WIP RSS monitor

This commit is contained in:
Steffo 2019-10-17 13:49:09 +02:00
parent 351540e62c
commit 3d0b03a8ad

42
royalnet/monitors/rss.py Normal file
View file

@ -0,0 +1,42 @@
import typing
import feedparser
import asyncio
import datetime
from .monitor import Monitor
from ..utils import asyncify
class RssMonitor(Monitor):
def __init__(self, url: str, interval: float, *, loop: asyncio.AbstractEventLoop):
super().__init__(interval, loop=loop)
self.url: str = url
self._last_feed: feedparser.FeedParserDict = None
@property
def feed_title(self) -> typing.Optional[str]:
if self._last_feed is None:
return None
return self._last_feed.feed.title
@property
def feed_link(self) -> typing.Optional[str]:
if self._last_feed is None:
return None
return self._last_feed.feed.link
@property
def feed_description(self) -> typing.Optional[str]:
if self._last_feed is None:
return None
return self._last_feed.feed.description
@property
def feed_published(self) -> typing.Optional[datetime.datetime]:
if self._last_feed is None:
return None
return self._last_feed.feed.published_parsed
async def check(self):
self._last_feed = await asyncify(feedparser.parse, self.url)
# TODO
...