X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=stranger_renderer.py;h=0c566d93e3123a5e18f52a5960475140b84ac66c;hb=da3a11e9fcea80a7700eb54605512d331a9ec612;hp=d0f2722e111f3baea70f832b7a5d5be47da6c6e6;hpb=e4dca16bbd329afdb587e8488767d88e17777254;p=kiosk.git diff --git a/stranger_renderer.py b/stranger_renderer.py index d0f2722..0c566d9 100644 --- a/stranger_renderer.py +++ b/stranger_renderer.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 -from bs4 import BeautifulSoup # type: ignore import datetime import http.client -import random +import logging import re -from typing import Dict, List +from typing import Dict + +from bs4 import BeautifulSoup # type: ignore import file_writer import grab_bag @@ -14,17 +15,21 @@ import profanity_filter import renderer -class stranger_events_renderer(renderer.debuggable_abstaining_renderer): +logger = logging.getLogger(__file__) + + +class stranger_events_renderer(renderer.abstaining_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(stranger_events_renderer, self).__init__(name_to_timeout_dict, True) + super().__init__(name_to_timeout_dict) self.feed_site = "everout.com" self.events = grab_bag.grab_bag() + self.pfilter = profanity_filter.ProfanityFilter() def debug_prefix(self) -> str: return "stranger" def periodic_render(self, key: str) -> bool: - self.debug_print("called for action %s" % key) + logger.debug("called for action %s" % key) if key == "Fetch Events": return self.fetch_events() elif key == "Shuffle Events": @@ -77,7 +82,7 @@ class stranger_events_renderer(renderer.debuggable_abstaining_renderer): layout.set_style(self.get_style()) subset = self.events.subset(4) if subset is None: - self.debug_print("Not enough events to build page.") + logger.debug("Not enough events to build page.") return False for msg in subset: @@ -88,50 +93,45 @@ class stranger_events_renderer(renderer.debuggable_abstaining_renderer): def fetch_events(self) -> bool: self.events.clear() - feed_uris = [ - "/stranger-seattle/events/?page=1", - "/stranger-seattle/events/?page=2", - "/stranger-seattle/events/?page=3", - ] + feed_uris = [] now = datetime.datetime.now() ts = now + datetime.timedelta(1) tomorrow = datetime.datetime.strftime(ts, "%Y-%m-%d") - feed_uris.append(f"/stranger-seattle/events/?start-date={tomorrow}") + feed_uris.append(f"/seattle/events/?start-date={tomorrow}") delta = 5 - now.weekday() if delta <= 0: delta += 7 if delta > 1: ts = now + datetime.timedelta(delta) next_sat = datetime.datetime.strftime(ts, "%Y-%m-%d") - feed_uris.append(f"/stranger-seattle/events/?start-date={next_sat}&page=1") - feed_uris.append(f"/stranger-seattle/events/?start-date={next_sat}&page=2") + feed_uris.append(f"/seattle/events/?start-date={next_sat}&page=1") + feed_uris.append(f"/seattle/events/?start-date={next_sat}&page=2") delta += 1 if delta > 1: ts = now + datetime.timedelta(delta) next_sun = datetime.datetime.strftime(ts, "%Y-%m-%d") - feed_uris.append(f"/stranger-seattle/events/?start-date={next_sun}&page=1") - feed_uris.append(f"/stranger-seattle/events/?start-date={next_sun}&page=2") + feed_uris.append(f"/seattle/events/?start-date={next_sun}&page=1") + feed_uris.append(f"/seattle/events/?start-date={next_sun}&page=2") - filter = profanity_filter.profanity_filter() for uri in feed_uris: try: - self.debug_print("fetching 'https://%s%s'" % (self.feed_site, uri)) + logger.debug("fetching 'https://%s%s'" % (self.feed_site, uri)) 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: - self.debug_print("Connection failed, status %d" % (response.status)) - self.debug_print(str(response.getheaders())) + logger.debug("Connection failed, status %d" % (response.status)) + logger.debug(str(response.getheaders())) continue raw = response.read() - except: - self.debug_print("Exception talking to the stranger, ignoring.") + except Exception: + logger.debug("Exception talking to the stranger, ignoring.") continue soup = BeautifulSoup(raw, "html.parser") for x in soup.find_all("div", class_="row event list-item mb-3 py-3"): text = x.get_text() - if filter.contains_bad_words(text): + if self.pfilter.contains_bad_word(text): continue raw_str = str(x) raw_str = raw_str.replace( @@ -149,11 +149,11 @@ class stranger_events_renderer(renderer.debuggable_abstaining_renderer): re.DOTALL | re.IGNORECASE, ) self.events.add(raw_str) - self.debug_print(f"fetched {self.events.size()} events so far.") + logger.debug(f"fetched {self.events.size()} events so far.") return self.events.size() > 0 # Test -# x = stranger_events_renderer({"Test", 123}) -# x.periodic_render("Fetch Events") -# x.periodic_render("Shuffle Events") +#x = stranger_events_renderer({"Test", 123}) +#x.periodic_render("Fetch Events") +#x.periodic_render("Shuffle Events")