X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=stevens_renderer.py;h=bba06030b90e7924327f5238ebc8bf0f3e2957be;hb=477c84bcdefc573278ec8ed8974d5be8baac562d;hp=18f300b2e1b7aed53bdb412ec975e0c9eeab891e;hpb=d6990436e08a57ce211b10058dc61fb223cb94ec;p=kiosk.git diff --git a/stevens_renderer.py b/stevens_renderer.py index 18f300b..bba0603 100644 --- a/stevens_renderer.py +++ b/stevens_renderer.py @@ -1,45 +1,58 @@ -import renderer -import file_writer +#!/usr/bin/env python3 + import http.client +from typing import List, Dict import xml.etree.ElementTree as ET +import renderer +import file_writer + + class stevens_pass_conditions_renderer(renderer.debuggable_abstaining_renderer): - def __init__(self, name_to_timeout_dict, feed_site, feed_uris): + """Renders a page about Stevens Pass conditions.""" + + def __init__( + self, name_to_timeout_dict: Dict[str, int], feed_site: str, feed_uris: List[str] + ) -> None: super(stevens_pass_conditions_renderer, self).__init__( - name_to_timeout_dict, False) + name_to_timeout_dict, False + ) self.feed_site = feed_site self.feed_uris = feed_uris - def debug_prefix(self): + def debug_prefix(self) -> str: return "stevens" - def periodic_render(self, key): - f = file_writer.file_writer('stevens-conditions_1_86400.html') - for uri in self.feed_uris: - self.conn = http.client.HTTPSConnection(self.feed_site) - self.conn.request( - "GET", - uri, - None, - {"Accept-Charset": "utf-8"}) - response = self.conn.getresponse() - if response.status == 200: - raw = response.read() - rss = ET.fromstring(raw) - channel = rss[0] - for item in channel.getchildren(): - if item.tag == "title": - f.write("

%s


" % item.text) - f.write('') - elif item.tag == "item": - for x in item.getchildren(): - if x.tag == "description": - text = x.text - text = text.replace("Stevens Pass US2
", "") - text = text.replace("

", "
") - text = text.replace("Elevation Meters:1238
", "") - f.write('

\n%s\n' % text) - f.close() - return True - f.close() + def periodic_render(self, key: str) -> bool: + with file_writer.file_writer("stevens-conditions_1_86400.html") as f: + for uri in self.feed_uris: + self.conn = http.client.HTTPSConnection(self.feed_site) + self.conn.request("GET", uri, None, {"Accept-Charset": "utf-8"}) + response = self.conn.getresponse() + if response.status == 200: + raw = response.read() + rss = ET.fromstring(raw) + channel = rss[0] + for item in channel.getchildren(): + if item.tag == "title": + f.write(f"

{item.text}


") + f.write( + '' + ) + elif item.tag == "item": + for x in item.getchildren(): + if x.tag == "description": + text = x.text + if text is not None: + text = text.replace( + "Stevens Pass US2
", "" + ) + text = text.replace("

", "
") + text = text.replace( + "Elevation Meters:1238
", "" + ) + else: + text = "" + f.write(f"

\n{text}\n") + return True return False