#!/usr/bin/env python3 import datetime from typing import Dict, List, Optional import xml from dateutil.parser import parse import generic_news_rss_renderer as gnrss # https://www.theurbanist.org/feed/ class urbanist_renderer(gnrss.generic_news_rss_renderer): """Read the The Urbanist feed.""" 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 ) self.debug = True def debug_prefix(self) -> str: return f"urbanist({self.page_title})" def get_headlines_page_prefix(self) -> str: return "urbanist" def get_details_page_prefix(self) -> str: return "urbanist-details" def should_use_https(self) -> bool: return True def get_event_time(self, item: xml.etree.ElementTree.Element) -> Optional[datetime.datetime]: return parse(self.find_pubdate(item)) def item_is_interesting_for_headlines( self, title: str, description: str, item: xml.etree.ElementTree.Element ) -> bool: return self.find_pubdate(item) is not None and 'urbanist' not in title.lower() def do_details(self) -> bool: return True def item_is_interesting_for_article( self, title: str, description: str, item: xml.etree.ElementTree.Element ) -> bool: return len(description) > 30 # Test #x = urbanist_renderer( # {"Fetch News" : 1, # "Shuffle News" : 1}, # "www.theurbanist.org", # [ "/feed/" ], # "Test" ) #if x.fetch_news() == 0: # print("Error fetching news, no items fetched.") #else: # x.shuffle_news()