Format codebase w/ black.
[kiosk.git] / chooser.py
index 9bf98e303a91d95c7aba32272f0351da4e7c1e0d..ac8948a9a8df6958b99c32642151ed613baef9f9 100644 (file)
@@ -8,24 +8,30 @@ import glob
 import constants
 import trigger
 
+
 class chooser(object):
     """Base class of a thing that chooses pages"""
+
     def get_page_list(self):
         now = time.time()
         valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
         filenames = []
-        pages = [ f for f in os.listdir(constants.pages_dir)
-                  if os.path.isfile(os.path.join(constants.pages_dir, f))]
+        pages = [
+            f
+            for f in os.listdir(constants.pages_dir)
+            if os.path.isfile(os.path.join(constants.pages_dir, f))
+        ]
         for page in pages:
             result = re.match(valid_filename, page)
             if result != None:
                 print(('chooser: candidate page: "%s"' % page))
-                if (result.group(3) != "none"):
+                if result.group(3) != "none":
                     freshness_requirement = int(result.group(3))
-                    last_modified = int(os.path.getmtime(
-                        os.path.join(constants.pages_dir, page)))
-                    age = (now - last_modified)
-                    if (age > freshness_requirement):
+                    last_modified = int(
+                        os.path.getmtime(os.path.join(constants.pages_dir, page))
+                    )
+                    age = now - last_modified
+                    if age > freshness_requirement:
                         print(('chooser: "%s" is too old.' % page))
                         continue
                 filenames.append(page)
@@ -34,8 +40,10 @@ class chooser(object):
     def choose_next_page(self):
         pass
 
+
 class weighted_random_chooser(chooser):
     """Chooser that does it via weighted RNG."""
+
     def dont_choose_page_twice_in_a_row_filter(self, choice):
         if choice == self.last_choice:
             return False
@@ -53,8 +61,7 @@ class weighted_random_chooser(chooser):
         self.filter_list.append(self.dont_choose_page_twice_in_a_row_filter)
 
     def choose_next_page(self):
-        if (self.pages == None or
-            self.count % 100 == 0):
+        if self.pages == None or self.count % 100 == 0:
             self.pages = self.get_page_list()
 
         total_weight = 0
@@ -65,7 +72,7 @@ class weighted_random_chooser(chooser):
                 weight = int(result.group(2))
                 weights.append(weight)
                 total_weight += weight
-        if (total_weight <= 0):
+        if total_weight <= 0:
             raise error
 
         while True:
@@ -91,8 +98,10 @@ class weighted_random_chooser(chooser):
             self.count += 1
             return choice
 
+
 class weighted_random_chooser_with_triggers(weighted_random_chooser):
     """Same as WRC but has trigger events"""
+
     def __init__(self, trigger_list, filter_list):
         weighted_random_chooser.__init__(self, filter_list)
         self.trigger_list = trigger_list
@@ -111,14 +120,13 @@ class weighted_random_chooser_with_triggers(weighted_random_chooser):
         return triggered
 
     def choose_next_page(self):
-        if (self.pages == None or
-            self.count % 100 == 0):
+        if self.pages == None or self.count % 100 == 0:
             self.pages = self.get_page_list()
 
         triggered = self.check_for_triggers()
 
         # First try to satisfy from the page queue.
-        if (len(self.page_queue) > 0):
+        if len(self.page_queue) > 0:
             print("chooser: Pulling page from queue...")
             page = None
             priority = None
@@ -133,8 +141,10 @@ class weighted_random_chooser_with_triggers(weighted_random_chooser):
         else:
             return weighted_random_chooser.choose_next_page(self), False
 
+
 class rotating_chooser(chooser):
     """Chooser that does it in a rotation"""
+
     def __init__(self):
         self.valid_filename = re.compile("([^_]+)_(\d+)_([^\.]+)\.html")
         self.pages = None
@@ -142,14 +152,13 @@ class rotating_chooser(chooser):
         self.count = 0
 
     def choose_next_page(self):
-        if (self.pages == None or
-            self.count % 100 == 0):
+        if self.pages == None or self.count % 100 == 0:
             self.pages = self.get_page_list()
 
         if len(self.pages) == 0:
             raise error
 
-        if (self.current >= len(self.pages)):
+        if self.current >= len(self.pages):
             self.current = 0
 
         page = self.pages[self.current]
@@ -157,18 +166,21 @@ class rotating_chooser(chooser):
         self.count += 1
         return page
 
+
 # Test
 def filter_news_during_dinnertime(page):
     now = datetime.datetime.now()
     is_dinnertime = now.hour >= 17 and now.hour <= 20
-    return (not is_dinnertime or
-            not ("cnn" in page or
-                 "news" in page or
-                 "mynorthwest" in page or
-                 "seattle" in page or
-                 "stranger" in page or
-                 "twitter" in page or
-                 "wsj" in page))
-
-#x = weighted_random_chooser_with_triggers([], [ filter_news_during_dinnertime ])
-#print(x.choose_next_page())
+    return not is_dinnertime or not (
+        "cnn" in page
+        or "news" in page
+        or "mynorthwest" in page
+        or "seattle" in page
+        or "stranger" in page
+        or "twitter" in page
+        or "wsj" in page
+    )
+
+
+# x = weighted_random_chooser_with_triggers([], [ filter_news_during_dinnertime ])
+# print(x.choose_next_page())