#!/usr/bin/env python3 import logging from typing import Dict, List import xml import generic_news_rss_renderer as gnrss logger = logging.getLogger(__file__) class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer): interesting_categories = frozenset( [ "Nation", "World", "Life", "Technology", "Local News", "Food", "Drink", "Today File", "Seahawks", "Oddities", "Packfic NW", "Home", "Garden", "Travel", "Outdoors", ] ) def __init__( self, name_to_timeout_dict: Dict[str, int], feed_site: str, feed_uris: List[str], page_title: str, ): super().__init__( name_to_timeout_dict, feed_site, feed_uris, page_title ) def get_headlines_page_prefix(self) -> str: return "seattletimes-nonnews" def get_details_page_prefix(self) -> str: return "seattletimes-details-nonnews" def should_use_https(self) -> bool: return True def item_is_interesting_for_headlines( self, title: str, description: str, item: xml.etree.ElementTree.Element ) -> bool: if item.tag != "item": logger.debug(f'{title}: item.tag ({item}) isn\'t "item"?!') return False if self.is_item_older_than_n_days(item, 14): logger.info(f'{title}: too old to be interesting.') return False details = {} for detail in list(item): logger.debug( f'detail {detail.tag} => {detail.attrib} ({detail.text})' ) if detail.text is not None: details[detail.tag] = detail.text if 'category' not in details: logger.debug(f'{title}: no category in details?') return False interesting = False for x in seattletimes_rss_renderer.interesting_categories: if x in details["category"]: logger.debug( f'{x} looks like a good category.' ) interesting = True break return interesting def item_is_interesting_for_article( self, title: str, description: str, item: xml.etree.ElementTree.Element ) -> bool: if self.is_item_older_than_n_days(item, 14): logger.info( f'{title}: is too old to be interesting.' ) return False return len(description) >= 65 # Test #x = seattletimes_rss_renderer({"Test", 123}, # "www.seattletimes.com", # [ "/outdoors/feed/", '/live/feed/' ], # "nonnews") #x.periodic_render("Fetch News") #x.periodic_render("Shuffle News")