X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=reddit_renderer.py;h=192bc206e75b860661816837d396afc3059ac6b1;hb=477c84bcdefc573278ec8ed8974d5be8baac562d;hp=097bd82f55f44dc85508eb54cef2037e0c1b27d3;hpb=c06bfef53f70551e7920bc4facce27f47b89e2ba;p=kiosk.git
diff --git a/reddit_renderer.py b/reddit_renderer.py
index 097bd82..192bc20 100644
--- a/reddit_renderer.py
+++ b/reddit_renderer.py
@@ -1,20 +1,22 @@
#!/usr/bin/env python3
-import praw
-import random
-from typing import Callable, Dict, List
+import logging
+from typing import Callable, Dict, Iterable, List, Set
+
+import praw # type: ignore
-import constants
import file_writer
import grab_bag
import page_builder
import profanity_filter
import renderer
-import renderer_catalog
-import secrets
+import kiosk_secrets as secrets
+
+
+logger = logging.getLogger(__file__)
-class reddit_renderer(renderer.debuggable_abstaining_renderer):
+class reddit_renderer(renderer.abstaining_renderer):
"""A renderer to pull text content from reddit."""
def __init__(
@@ -24,9 +26,9 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
*,
min_votes: int = 20,
font_size: int = 24,
- additional_filters: List[Callable[[str], bool]] = [],
+ additional_filters: Iterable[Callable[[str], bool]] = [],
):
- super(reddit_renderer, self).__init__(name_to_timeout_dict, True)
+ super().__init__(name_to_timeout_dict)
self.subreddit_list = subreddit_list
self.praw = praw.Reddit(
client_id=secrets.reddit_client_id,
@@ -36,52 +38,52 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
self.min_votes = min_votes
self.font_size = font_size
self.messages = grab_bag.grab_bag()
- self.filters = [profanity_filter.profanity_filter().contains_bad_words]
+ self.filters: List[Callable[..., bool]] = [
+ profanity_filter.ProfanityFilter().contains_bad_word
+ ]
self.filters.extend(additional_filters)
- self.deduper = set()
-
- def debug_prefix(self) -> str:
- x = ""
- for subreddit in self.subreddit_list:
- x += f"{subreddit} "
- return f"reddit({x.strip()})"
+ self.deduper: Set[str] = set()
def periodic_render(self, key: str) -> bool:
- self.debug_print('called for "%s"' % key)
+ logger.debug('called for "%s"' % key)
if key == "Scrape":
return self.scrape_reddit()
elif key == "Shuffle":
return self.shuffle_messages()
else:
- raise error("Unexpected operation")
+ raise Exception("Unexpected operation")
def append_message(self, messages: List[str]) -> None:
for msg in messages:
- if msg.title in self.deduper:
+ title = str(msg.title)
+ if title in self.deduper:
continue
filtered = ""
- for filter in self.filters:
- if filter(msg.title) is True:
- filtered = filter.__name__
+ for filt in self.filters:
+ if filt(title) is True:
+ filtered = filt.__name__
break
if filtered != "":
- print(f'Filter {filtered} struck down "{msg.title}"')
+ logger.info(
+ f'Filter {filtered} struck down "{title}"'
+ )
continue
if msg.ups < self.min_votes:
- print(f'"{msg.title}" doesn\'t have enough upvotes to be interesting')
+ logger.debug(
+ f'"{title}" doesn\'t have enough upvotes to be interesting'
+ )
continue
- try:
- self.deduper.add(msg.title)
- content = f"{msg.ups}"
- if (
+ self.deduper.add(title)
+ content = f"{msg.ups}"
+ if (
msg.thumbnail != "self"
and msg.thumbnail != "default"
and msg.thumbnail != ""
- ):
- content = f''
- self.messages.add(
- f"""
+ ):
+ content = f'
'
+ self.messages.add(
+f"""
- {msg.title} ({msg.author}) + {title} ({msg.author}) |