4 from typing import Dict, List
7 import generic_news_rss_renderer as gnrss
10 logger = logging.getLogger(__name__)
13 class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer):
14 interesting_categories = frozenset(
36 name_to_timeout_dict: Dict[str, int],
41 super().__init__(name_to_timeout_dict, feed_site, feed_uris, page_title)
43 def get_headlines_page_prefix(self) -> str:
44 return "seattletimes-nonnews"
46 def get_details_page_prefix(self) -> str:
47 return "seattletimes-details-nonnews"
49 def should_use_https(self) -> bool:
52 def item_is_interesting_for_headlines(
53 self, title: str, description: str, item: xml.etree.ElementTree.Element
55 if item.tag != "item":
56 logger.debug(f'{title}: item.tag ({item}) isn\'t "item"?!')
58 if self.is_item_older_than_n_days(item, 14):
59 logger.info(f"{title}: too old to be interesting.")
63 for detail in list(item):
64 logger.debug(f"detail {detail.tag} => {detail.attrib} ({detail.text})")
65 if detail.text is not None:
66 details[detail.tag] = detail.text
67 if "category" not in details:
68 logger.debug(f"{title}: no category in details?")
71 for x in seattletimes_rss_renderer.interesting_categories:
72 if x in details["category"]:
73 logger.debug(f"{x} looks like a good category.")
78 def item_is_interesting_for_article(
79 self, title: str, description: str, item: xml.etree.ElementTree.Element
81 if self.is_item_older_than_n_days(item, 14):
82 logger.info(f"{title}: is too old to be interesting.")
84 return len(description) >= 65
88 # x = seattletimes_rss_renderer({"Test", 123},
89 # "www.seattletimes.com",
90 # [ "/outdoors/feed/", '/live/feed/' ],
92 # x.periodic_render("Fetch News")
93 # x.periodic_render("Shuffle News")