X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=reddit_renderer.py;h=74bddaffa1b368e0163232855b400ab08c02be40;hb=18913d6fecc43aeecfd5b617030e9cd3e840ef08;hp=097bd82f55f44dc85508eb54cef2037e0c1b27d3;hpb=c06bfef53f70551e7920bc4facce27f47b89e2ba;p=kiosk.git diff --git a/reddit_renderer.py b/reddit_renderer.py index 097bd82..74bddaf 100644 --- a/reddit_renderer.py +++ b/reddit_renderer.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -import praw +import praw # type: ignore import random -from typing import Callable, Dict, List +from typing import Callable, Dict, Iterable, List, Set import constants import file_writer @@ -10,7 +10,6 @@ import grab_bag import page_builder import profanity_filter import renderer -import renderer_catalog import secrets @@ -24,7 +23,7 @@ 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) self.subreddit_list = subreddit_list @@ -36,9 +35,11 @@ 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.profanity_filter().contains_bad_words + ] self.filters.extend(additional_filters) - self.deduper = set() + self.deduper: Set[str] = set() def debug_prefix(self) -> str: x = "" @@ -53,26 +54,27 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): 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}"') + print(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') + print(f'"{title}" doesn\'t have enough upvotes to be interesting') continue try: - self.deduper.add(msg.title) + self.deduper.add(title) content = f"{msg.ups}" if ( msg.thumbnail != "self" @@ -91,7 +93,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): - {msg.title}
({msg.author}) + {title}
({msg.author}) """ @@ -99,7 +101,7 @@ class reddit_renderer(renderer.debuggable_abstaining_renderer): except: self.debug_print("Unexpected exception, skipping message.") - def scrape_reddit(self) -> None: + def scrape_reddit(self) -> bool: self.deduper.clear() self.messages.clear() for subreddit in self.subreddit_list: @@ -169,6 +171,7 @@ class quotes_reddit_renderer(reddit_renderer): class showerthoughts_reddit_renderer(reddit_renderer): + @staticmethod def dont_tell_me_about_gift_cards(msg: str) -> bool: return not "IMPORTANT PSA: No, you did not win a gift card" in msg @@ -176,7 +179,7 @@ class showerthoughts_reddit_renderer(reddit_renderer): super(showerthoughts_reddit_renderer, self).__init__( name_to_timeout_dict, ["showerthoughts"], - min_votes=350, + min_votes=250, additional_filters=[ showerthoughts_reddit_renderer.dont_tell_me_about_gift_cards ], @@ -199,6 +202,6 @@ class lifeprotips_reddit_renderer(reddit_renderer): ) -# 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")