From b335495aadc9f5116a88d0359087ae33c9524aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gl=C3=BCpker?= Date: Wed, 1 May 2024 10:20:30 +0200 Subject: Fix dataclass usage --- rss.py | 30 ++---------------------------- rss_types.py | 21 +++++++++++++++++++++ test.py | 12 ++++++++++++ zdf.py | 35 ++++++++++++++++++++--------------- 4 files changed, 55 insertions(+), 43 deletions(-) create mode 100755 rss_types.py create mode 100755 test.py diff --git a/rss.py b/rss.py index ccf0cb5..dc16628 100755 --- a/rss.py +++ b/rss.py @@ -1,8 +1,9 @@ #!/usr/bin/env python3 -from dataclasses import dataclass from datetime import datetime +from rss_types import RSSFeed + def _format_date(dt): """convert a datetime into an RFC 822 formatted date @@ -50,39 +51,12 @@ def _format_date(dt): ) -@dataclass -class RSSItem: - title: str - url: str - content: str - date: str - enclosures: list[str] - guid: str - - -@dataclass -class RSSFeed: - title: str - url: str - description: str - content: list[RSSItem] - - def escape(str): str = str.replace("&", "&") return str def buildRSS(feed_data: RSSFeed): - """ - feed_data = { - title, url, description, - content = [{ - title, url, content, date, [enclosures], guid - }] - } - """ - feed = f""" diff --git a/rss_types.py b/rss_types.py new file mode 100755 index 0000000..4217b29 --- /dev/null +++ b/rss_types.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +from dataclasses import dataclass + + +@dataclass +class RSSItem: + title: str + url: str + content: str + date: str + enclosures: list[str] + guid: str + + +@dataclass +class RSSFeed: + title: str + url: str + description: str + content: list[RSSItem] diff --git a/test.py b/test.py new file mode 100755 index 0000000..ed1e198 --- /dev/null +++ b/test.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 + +import logging + +from rss import buildRSS +from zdf import zdf + +logging.basicConfig(level=logging.INFO) + +zdf_data = zdf("comedy/heute-show") +rss = buildRSS(zdf_data) +print(rss) diff --git a/zdf.py b/zdf.py index 3c6d903..0d5adc1 100755 --- a/zdf.py +++ b/zdf.py @@ -1,8 +1,12 @@ +#!/usr/bin/env python3 + import logging from datetime import datetime from urllib.request import Request, urlopen from xml.dom.minidom import parseString +from rss_types import RSSFeed, RSSItem + def getText(dom, element): textNode = dom.getElementsByTagName(element)[0].firstChild @@ -31,7 +35,7 @@ def zdf(feed): title = getText(xml, "title") description = getText(xml, "description") - content = [] + rss_items = [] for show in xml.getElementsByTagName("item"): s_url = getText(show, "link") if not s_url: @@ -61,22 +65,23 @@ def zdf(feed): s_desc = getText(show, "description") s_guid = getText(show, "guid") - content.append( - { - "title": s_title, - "url": s_url, - "content": s_desc, - "date": s_date, - "guid": s_guid, - } + rss_items.append( + RSSItem( + title=s_title, + url=s_url, + content=s_desc, + date=s_date, + guid=s_guid, + enclosures=[], + ) ) - return { - "title": title, - "url": url, - "description": description, - "content": content, - } + return RSSFeed( + title=title, + url=url, + description=description, + content=rss_items, + ) except Exception as exc: logging.error("Working with zdf failed.", exc_info=exc) return None -- cgit v1.2.3