X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=reddit_renderer.py;h=d24d36063d0ce16564c0e8d7a22ed3c4d8253fce;hb=7b613cf08ba9c2ba716af397401c0102d33b9588;hp=30c22e0a4c6021dae7b7d64700ca2d8e90643642;hpb=5c39d86ebc075ccb7be98b1dfab8040b72ff9134;p=kiosk.git diff --git a/reddit_renderer.py b/reddit_renderer.py index 30c22e0..d24d360 100644 --- a/reddit_renderer.py +++ b/reddit_renderer.py @@ -1,19 +1,23 @@ #!/usr/bin/env python3 -import praw # type: ignore -import random +import logging from typing import Callable, Dict, Iterable, List, Set -import constants +import praw # type: ignore + +from scottutilz import profanity_filter + import file_writer import grab_bag import page_builder -import profanity_filter import renderer import kiosk_secrets as secrets -class reddit_renderer(renderer.debuggable_abstaining_renderer): +logger = logging.getLogger(__name__) + + +class reddit_renderer(renderer.abstaining_renderer): """A renderer to pull text content from reddit.""" def __init__( @@ -25,7 +29,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): font_size: int = 24, 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, @@ -41,14 +45,8 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): self.filters.extend(additional_filters) self.deduper: Set[str] = set() - def debug_prefix(self) -> str: - x = "" - for subreddit in self.subreddit_list: - x += f"{subreddit} " - return f"reddit({x.strip()})" - 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": @@ -67,23 +65,24 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): filtered = filt.__name__ break if filtered != "": - print(f'Filter {filtered} struck down "{title}"') + logger.info(f'Filter {filtered} struck down "{title}"') continue if msg.ups < self.min_votes: - print(f'"{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(title) - content = f"{msg.ups}" - if ( - msg.thumbnail != "self" - and msg.thumbnail != "default" - and msg.thumbnail != "" - ): - content = f'' - self.messages.add( - f""" + 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""" @@ -97,9 +96,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer):
""" - ) - except: - self.debug_print("Unexpected exception, skipping message.") + ) def scrape_reddit(self) -> bool: self.deduper.clear() @@ -130,7 +127,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): self.append_message(msg) except: pass - self.debug_print(f"There are now {self.messages.size()} messages") + logger.debug(f"There are now {self.messages.size()} messages") return True def shuffle_messages(self) -> bool: @@ -147,7 +144,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): layout.set_title("Reddit /r/%s" % x.strip()) subset = self.messages.subset(4) if subset is None: - self.debug_print("Not enough messages to pick from.") + logger.debug("Not enough messages to pick from.") return False for msg in subset: layout.add_item(msg) @@ -158,16 +155,14 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): class til_reddit_renderer(reddit_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(til_reddit_renderer, self).__init__( + super().__init__( name_to_timeout_dict, ["todayilearned"], min_votes=100, font_size=20 ) class quotes_reddit_renderer(reddit_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(quotes_reddit_renderer, self).__init__( - name_to_timeout_dict, ["quotes"], min_votes=100, font_size=20 - ) + super().__init__(name_to_timeout_dict, ["quotes"], min_votes=100, font_size=20) class showerthoughts_reddit_renderer(reddit_renderer): @@ -176,7 +171,7 @@ class showerthoughts_reddit_renderer(reddit_renderer): return "gift card" in msg def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(showerthoughts_reddit_renderer, self).__init__( + super().__init__( name_to_timeout_dict, ["showerthoughts"], min_votes=150, @@ -188,7 +183,7 @@ class showerthoughts_reddit_renderer(reddit_renderer): class seattle_reddit_renderer(reddit_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(seattle_reddit_renderer, self).__init__( + super().__init__( name_to_timeout_dict, ["seattle", "seattleWA", "SeaWA", "bellevue", "kirkland", "CoronavirusWA"], min_votes=50, @@ -197,11 +192,9 @@ class seattle_reddit_renderer(reddit_renderer): class lifeprotips_reddit_renderer(reddit_renderer): def __init__(self, name_to_timeout_dict: Dict[str, int]): - super(lifeprotips_reddit_renderer, self).__init__( - name_to_timeout_dict, ["lifeprotips"], min_votes=50 - ) + super().__init__(name_to_timeout_dict, ["lifeprotips"], min_votes=50) -#x = reddit_renderer({"Test", 1234}, ["seattle","bellevue"], min_votes=50, font_size=24) -#x.periodic_render("Scrape") -#x.periodic_render("Shuffle") +# x = reddit_renderer({"Test", 1234}, ["seattle","bellevue"], min_votes=50, font_size=24) +# x.periodic_render("Scrape") +# x.periodic_render("Shuffle")