Format codebase w/ black.
[kiosk.git] / stranger_renderer.py
index c0389f6a68a994f886a3a45206402ffd5111b558..4020353c4e4e5001c22d5f99cd996d41e099bd23 100644 (file)
@@ -2,18 +2,19 @@ from bs4 import BeautifulSoup
 import datetime
 import file_writer
 import grab_bag
-import httplib
+import http.client
 import page_builder
 import profanity_filter
 import random
 import re
 import renderer
-import sets
+import renderer_catalog
+
 
 class stranger_events_renderer(renderer.debuggable_abstaining_renderer):
     def __init__(self, name_to_timeout_dict):
         super(stranger_events_renderer, self).__init__(name_to_timeout_dict, True)
-        self.feed_site = "everout.thestranger.com"
+        self.feed_site = "everout.com"
         self.events = grab_bag.grab_bag()
 
     def debug_prefix(self):
@@ -78,7 +79,7 @@ class stranger_events_renderer(renderer.debuggable_abstaining_renderer):
 
         for msg in subset:
             layout.add_item(msg)
-        f = file_writer.file_writer('stranger-events_2_none.html')
+        f = file_writer.file_writer("stranger-events_2_36000.html")
         layout.render_html(f)
         f.close()
         return True
@@ -86,98 +87,80 @@ class stranger_events_renderer(renderer.debuggable_abstaining_renderer):
     def fetch_events(self):
         self.events.clear()
         feed_uris = [
-            "/events/?page=1&picks=true",
-            "/events/?page=2&picks=true",
-            "/events/?page=3&picks=true",
+            "/stranger-seattle/events/?page=1",
+            "/stranger-seattle/events/?page=2",
+            "/stranger-seattle/events/?page=3",
         ]
         now = datetime.datetime.now()
         ts = now + datetime.timedelta(1)
         tomorrow = datetime.datetime.strftime(ts, "%Y-%m-%d")
-        feed_uris.append("/events/?start-date=%s&picks=true" % tomorrow)
+        feed_uris.append("/stranger-seattle/events/?start-date=%s" % 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("/events/?start-date=%s&page=1&picks=true" % next_sat)
-            feed_uris.append("/events/?start-date=%s&page=2&picks=true" % next_sat)
+            feed_uris.append(
+                "/stranger-seattle/events/?start-date=%s&page=1" % next_sat
+            )
+            feed_uris.append(
+                "/stranger-seattle/events/?start-date=%s&page=2" % next_sat
+            )
         delta += 1
         if delta > 1:
             ts = now + datetime.timedelta(delta)
             next_sun = datetime.datetime.strftime(ts, "%Y-%m-%d")
-            feed_uris.append("/events/?start-date=%s&page=1&picks=true" % next_sun)
-            feed_uris.append("/events/?start-date=%s&page=2&picks=true" % next_sun)
+            feed_uris.append(
+                "/stranger-seattle/events/?start-date=%s&page=1" % next_sun
+            )
+            feed_uris.append(
+                "/stranger-seattle/events/?start-date=%s&page=2" % next_sun
+            )
 
         for uri in feed_uris:
-            self.debug_print("fetching '%s'" % uri)
-            self.conn = httplib.HTTPSConnection(self.feed_site)
-            self.conn.request(
-                "GET",
-                uri,
-                None,
-                {"Accept-Charset": "utf-8"})
-            response = self.conn.getresponse()
-            if response.status != 200:
-                print("stranger: Failed, status %d" % (response.status))
+            try:
+                self.debug_print("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(response.getheaders())
+                    continue
+                raw = response.read()
+            except:
+                self.debug_print("Exception talking to the stranger, ignoring.")
                 continue
 
-            raw = response.read()
             soup = BeautifulSoup(raw, "html.parser")
             filter = profanity_filter.profanity_filter()
-            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)):
+            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):
                     continue
-
-#          <div class="row event list-item mb-3 py-3">
-#          <div class="col-12">
-#                <a class="category-tag" href="?category=on-demand">On Demand</a>
-#          </div> // col-12
-#          <div class="col-md-3 order-1 order-md-3">
-#              <a href="https://everout.thestranger.com/events/spliff-2020-on-demand/e24125/">
-#                  <img class="img-responsive" src="https://d2i729k8wyri5w.cloudfront.net/eyJidWNrZXQiOiAiZXZlcm91dC1pbWFnZXMtcHJvZHVjdGlvbiIsICJrZXkiOiAiaW1hZ2UtMTU5MTA2NTQxODU5NzA5My1vcmlnaW5hbC1sb2dvLmpwZWciLCAiZWRpdHMiOiB7InJlc2l6ZSI6IHsiZml0IjogImNvdmVyIiwgIndpZHRoIjogNDAwLCAiaGVpZ2h0IjogMzAwfX19">
-#              </a>
-#          </div> // col-md-3 order-1 order-md-3
-#          <div class="col-md-6 order-2 order-md-1 event-details">
-#             <h3 class="mb-0 event-title">
-#                 <a href="https://everout.thestranger.com/events/spliff-2020-on-demand/e24125/"><span class="staff-pick fas fa-star" aria-hidden="true"></span></a>
-#                 <a href="https://everout.thestranger.com/events/spliff-2020-on-demand/e24125/">
-#                 <span class="title-link">SPLIFF 2020 - On Demand</span>
-#                 </a>
-#             </h3>
-#             <div class="event-date">
-#               Every day
-#             </div> // event-date
-#             <div class="event-time">
-#             </div> // event-time
-#          </div> // col-md-6 order-2 order-md-1 event-details
-#          <div class="col-md-3 order-3 order-md-2 location-column">
-#            <div class="location-name">
-#              <i class="fad fa-map-marker-alt"></i> <a href="https://everout.thestranger.com/locations/the-stranger-online/l27660/">The Stranger (Online)</a>
-#            </div> // location-name
-#            <div class="location-region">
-#            </div> // location-region
-#            <ul class="event-tags">
-#              <li>$10 - $20</li>
-#            </ul>
-#          </div> // col-md-3 order-3 order-md-2 location-colum
-#        </div> // row event list-item mb-3 py-3
-
-                raw = unicode(x)
-                raw = raw.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('\n+', '\n', raw)
-                raw = re.sub('<span[^<>]*class="calendar-post-ticket"[^<>]*>.*</#span>', '', raw, 0, re.DOTALL | re.IGNORECASE)
-                self.events.add(raw.encode('utf-8'))
+                raw = str(x)
+                raw = raw.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('\n+', '\n', raw)
+                raw = re.sub(
+                    '<span[^<>]*class="calendar-post-ticket"[^<>]*>.*</#span>',
+                    "",
+                    raw,
+                    0,
+                    re.DOTALL | re.IGNORECASE,
+                )
+                self.events.add(raw)
             self.debug_print("fetched %d events so far." % self.events.size())
         return self.events.size() > 0
 
-x = stranger_events_renderer({"Test", 123})
-x.periodic_render("Fetch Events")
-x.periodic_render("Shuffle Events")
+
+# Test
+# x = stranger_events_renderer({"Test", 123})
+# x.periodic_render("Fetch Events")
+# x.periodic_render("Shuffle Events")