#!/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): """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 ) self.feed_site = feed_site self.feed_uris = feed_uris def debug_prefix(self) -> str: return "stevens" 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