#!/usr/bin/env python3
-from bs4 import BeautifulSoup
+from bs4 import BeautifulSoup # type: ignore
import datetime
import http.client
import random
import page_builder
import profanity_filter
import renderer
-import renderer_catalog
class stranger_events_renderer(renderer.debuggable_abstaining_renderer):
elif key == "Shuffle Events":
return self.shuffle_events()
else:
- raise error("Unknown operaiton")
+ raise Exception("Unknown operaiton")
def get_style(self):
return """
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",
+ "/seattle/events/?page=1",
+ "/seattle/events/?page=2",
+ "/seattle/events/?page=3",
]
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()
+ filter = profanity_filter.ProfanityFilter()
for uri in feed_uris:
try:
self.debug_print("fetching 'https://%s%s'" % (self.feed_site, uri))
response = self.conn.getresponse()
if response.status != 200:
self.debug_print("Connection failed, status %d" % (response.status))
- self.debug_print(response.getheaders())
+ self.debug_print(str(response.getheaders()))
continue
raw = response.read()
except:
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 filter.contains_bad_word(text):
continue
- raw = str(x)
- raw = raw.replace(
+ raw_str = str(x)
+ raw_str = raw_str.replace(
'src="/', 'align="left" src="https://www.thestranger.com/'
)
- raw = raw.replace('href="/', 'href="https://www.thestranger.com/')
- raw = raw.replace("FREE", "Free")
- raw = raw.replace("Save Event", "")
- raw = re.sub("^\s*$", "", raw, 0, re.MULTILINE)
- raw = re.sub(
+ raw_str = raw_str.replace('href="/', 'href="https://www.thestranger.com/')
+ raw_str = raw_str.replace("FREE", "Free")
+ raw_str = raw_str.replace("Save Event", "")
+ raw_str = re.sub("^\s*$", "", raw_str, 0, re.MULTILINE)
+ raw_str = re.sub(
'<span[^<>]*class="calendar-post-ticket"[^<>]*>.*</#span>',
"",
- raw,
+ raw_str,
0,
re.DOTALL | re.IGNORECASE,
)
- self.events.add(raw)
+ self.events.add(raw_str)
self.debug_print(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")