#!/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
import page_builder
import profanity_filter
import renderer
-import renderer_catalog
import secrets
*,
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
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 = ""
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"
<!-- The content and author: -->
<TD>
- <B>{msg.title}</B><BR><FONT COLOR=#bbbbbb>({msg.author})</FONT>
+ <B>{title}</B><BR><FONT COLOR=#bbbbbb>({msg.author})</FONT>
</TD>
</TR>
</TABLE>"""
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:
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
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
],
)
-# 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")