From e05dfe63724ae4aa4845c6fb5e7f8d5aa0974e16 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 3 Sep 2023 17:56:52 +0300 Subject: Implement RSS spec stuff --- app/utils.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'app/utils.py') diff --git a/app/utils.py b/app/utils.py index 824d370..77ea775 100644 --- a/app/utils.py +++ b/app/utils.py @@ -1,17 +1,25 @@ +import time +from typing import TypeAlias, Union from app.Item import Item from dataclasses import asdict +from app.PluginInterface import Params -def get_param(key: str, params: dict[str, str]) -> str: +ItemDictValue: TypeAlias = Union[str, dict[str, "ItemDictValue"], list["ItemDictValue"]] +ItemDict: TypeAlias = dict[str, ItemDictValue] + + +def get_param(key: str, params: Params) -> str: if key not in params: raise Exception(f"no {key} field in config entry: " + str(params)) return params[key] -def item_to_dict(item: Item) -> dict[str, str]: +def item_to_dict(item: Item) -> ItemDict: return asdict(item) -def dict_to_item(d: dict[str, str]) -> Item: - return Item(**d) +def dict_to_item(d: ItemDict) -> Item: + pub_date, rest = (lambda pub_date, **rest: (pub_date, rest))(**d) # type: ignore + return Item(pub_date=time.struct_time(pub_date), **rest) # type: ignore -- cgit v1.3