Working on voice command logic.
[kiosk.git] / seattletimes_rss_renderer.py
index 18ed2fc3b97e9de3c64e32538a7349d160be6bf1..13a9416e5e8b0884963540e3c098d19bf12a4441 100644 (file)
@@ -1,4 +1,9 @@
+#!/usr/bin/env python3
+
 import datetime
+from typing import Dict, List
+import xml
+
 import generic_news_rss_renderer as gnrss
 
 
@@ -8,7 +13,8 @@ class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer):
             "Nation",
             "World",
             "Life",
-            "Technology" "Local News",
+            "Technology",
+            "Local News",
             "Food",
             "Drink",
             "Today File",
@@ -22,24 +28,32 @@ class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer):
         ]
     )
 
-    def __init__(self, name_to_timeout_dict, feed_site, feed_uris, page_title):
+    def __init__(
+        self,
+        name_to_timeout_dict: Dict[str, int],
+        feed_site: str,
+        feed_uris: List[str],
+        page_title: str,
+    ):
         super(seattletimes_rss_renderer, self).__init__(
             name_to_timeout_dict, feed_site, feed_uris, page_title
         )
 
-    def debug_prefix(self):
+    def debug_prefix(self) -> str:
         return "seattletimes"
 
-    def get_headlines_page_prefix(self):
+    def get_headlines_page_prefix(self) -> str:
         return "seattletimes-nonnews"
 
-    def get_details_page_prefix(self):
+    def get_details_page_prefix(self) -> str:
         return "seattletimes-details-nonnews"
 
-    def should_use_https(self):
+    def should_use_https(self) -> bool:
         return True
 
-    def item_is_interesting_for_headlines(self, title, description, item):
+    def item_is_interesting_for_headlines(
+        self, title: str, description: str, item: xml.etree.ElementTree.Element
+    ) -> bool:
         if item.tag != "item":
             self.debug_print("Item.tag isn't item?!")
             return False
@@ -49,26 +63,23 @@ class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer):
 
         details = {}
         for detail in item.getchildren():
-            self.debug_print(
-                "detail %s => %s (%s)" % (detail.tag, detail.attrib, detail.text)
-            )
-            if detail.text != None:
+            self.debug_print(f"detail {detail.tag} => {detail.attrib} ({detail.text})")
+            if detail.text is not None:
                 details[detail.tag] = detail.text
         if "category" not in details:
             self.debug_print("No category in details?!")
-            self.debug_print(details)
+            self.debug_print(details.__repr__())
             return False
-
         interesting = False
         for x in seattletimes_rss_renderer.interesting_categories:
             if x in details["category"]:
                 self.debug_print("%s looks like a good category." % x)
                 interesting = True
-        if not interesting:
-            return False
-        return True
+        return interesting
 
-    def item_is_interesting_for_article(self, title, description, item):
+    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):
             self.debug_print("%s: is too old!" % title)
             return False