RSSFeed documentation

This commit is contained in:
Corban-Lee Jones 2024-07-09 23:23:53 +01:00
parent 03551d55e9
commit 9e23acf966

View File

@ -184,6 +184,7 @@ class RSSItem:
@dataclass(slots=True) @dataclass(slots=True)
class RSSFeed: class RSSFeed:
"""Represents an RSS Feed, including its items."""
title: str title: str
description: str description: str
@ -194,9 +195,17 @@ class RSSFeed:
items: list[RSSItem] = None items: list[RSSItem] = None
def __post_init__(self): def __post_init__(self):
self.items = [] self.items = [] # can't use factory with dataclass slots, so this is second best.
def add_item(self, item: RSSItem): def add_item(self, item: RSSItem):
"""Add a given `RSSItem` to this feed's list of entries.
Parameters
----------
item: RSSItem
The item to add.
"""
if not isinstance(item, RSSItem): if not isinstance(item, RSSItem):
raise TypeError("item must be an instance of RSSItem") raise TypeError("item must be an instance of RSSItem")
@ -204,6 +213,18 @@ class RSSFeed:
@classmethod @classmethod
def from_parsed_feed(cls, pf: FeedParserDict): def from_parsed_feed(cls, pf: FeedParserDict):
"""Returns an instance of `RSSItem` from a given `FeedParserDict`.
Parameters
----------
pf: FeedParserDict
The parsed feed being represented.
Returns
-------
RSSItem
"""
title = pf.feed.get('title', None) title = pf.feed.get('title', None)
description = pf.feed.get('description', None) description = pf.feed.get('description', None)
link = pf.feed.get('link', None) link = pf.feed.get('link', None)