Convert to use pyutilz / scottutilz libraries.
[kiosk.git] / stock_renderer.py
index ee71306c38eb3b0f3bf927a09a0a388642e734e0..40ced0fb94a85fab390ee086ca6cdae2a78bfdd9 100644 (file)
@@ -1,13 +1,18 @@
 #!/usr/bin/env python3
 
+import logging
 from typing import Dict, List, Optional, Tuple
+
 import yfinance as yf  # type: ignore
 
 import file_writer
 import renderer
 
 
-class stock_quote_renderer(renderer.debuggable_abstaining_renderer):
+logger = logging.getLogger(__file__)
+
+
+class stock_quote_renderer(renderer.abstaining_renderer):
     """Render the stock prices page."""
 
     def __init__(
@@ -16,18 +21,17 @@ class stock_quote_renderer(renderer.debuggable_abstaining_renderer):
             symbols: List[str],
             display_subs: Dict[str, str] = None,
     ) -> None:
-        super(stock_quote_renderer, self).__init__(name_to_timeout_dict, False)
+        super().__init__(name_to_timeout_dict)
         self.symbols = symbols
         self.display_subs = display_subs
 
-    def debug_prefix(self) -> str:
-        return "stock"
-
     @staticmethod
     def get_ticker_name(ticker: yf.ticker.Ticker) -> str:
         """Get friendly name of a ticker."""
         info = ticker.get_info()
-        return info["shortName"]
+        if "shortName" in info:
+            return info["shortName"]
+        return ticker
 
     @staticmethod
     def get_price(ticker: yf.ticker.Ticker) -> Optional[float]:
@@ -73,15 +77,14 @@ class stock_quote_renderer(renderer.debuggable_abstaining_renderer):
             symbols_finished = 0
             for symbol in self.symbols:
                 ticker = yf.Ticker(symbol)
-                print(type(ticker))
                 # print(ticker.get_info())
                 if ticker is None:
-                    self.debug_print(f"Unknown symbol {symbol} -- ignored.")
+                    logger.debug(f"Unknown symbol {symbol} -- ignored.")
                     continue
                 name = stock_quote_renderer.get_ticker_name(ticker)
                 price = stock_quote_renderer.get_price(ticker)
                 if price is None:
-                    self.debug_print(f"No price information for {symbol} -- skipped.")
+                    logger.debug(f"No price information for {symbol} -- skipped.")
                     continue
                 (percent_change, delta) = stock_quote_renderer.get_change_and_delta(
                     ticker, price
@@ -131,5 +134,5 @@ class stock_quote_renderer(renderer.debuggable_abstaining_renderer):
         return True
 
 # Test
-#x = stock_quote_renderer({}, ["MSFT", "GOOG", "BTC-USD", "OPTAX", "GC=F", "VNQ"], { "BTC-USD": "BTC", "GC=F": "GOLD" })
+#x = stock_quote_renderer({}, ["MSFT", "GOOG", "BTC-USD", "ABHYX", "GC=F", "VNQ"], { "BTC-USD": "BTC", "GC=F": "GOLD" })
 #x.periodic_render(None)