4 from typing import Dict, List
7 import generic_news_rss_renderer as gnrss
10 logger = logging.getLogger(__file__)
13 class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer):
14 interesting_categories = frozenset(
36 name_to_timeout_dict: Dict[str, int],
42 name_to_timeout_dict, feed_site, feed_uris, page_title
45 def get_headlines_page_prefix(self) -> str:
46 return "seattletimes-nonnews"
48 def get_details_page_prefix(self) -> str:
49 return "seattletimes-details-nonnews"
51 def should_use_https(self) -> bool:
54 def item_is_interesting_for_headlines(
55 self, title: str, description: str, item: xml.etree.ElementTree.Element
57 if item.tag != "item":
58 logger.debug(f'{title}: item.tag ({item}) isn\'t "item"?!')
60 if self.is_item_older_than_n_days(item, 14):
61 logger.info(f'{title}: too old to be interesting.')
65 for detail in list(item):
67 f'detail {detail.tag} => {detail.attrib} ({detail.text})'
69 if detail.text is not None:
70 details[detail.tag] = detail.text
71 if 'category' not in details:
72 logger.debug(f'{title}: no category in details?')
75 for x in seattletimes_rss_renderer.interesting_categories:
76 if x in details["category"]:
78 f'{x} looks like a good category.'
84 def item_is_interesting_for_article(
85 self, title: str, description: str, item: xml.etree.ElementTree.Element
87 if self.is_item_older_than_n_days(item, 14):
89 f'{title}: is too old to be interesting.'
92 return len(description) >= 65
96 #x = seattletimes_rss_renderer({"Test", 123},
97 # "www.seattletimes.com",
98 # [ "/outdoors/feed/", '/live/feed/' ],
100 #x.periodic_render("Fetch News")
101 #x.periodic_render("Shuffle News")