projects
/
kiosk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove references to utils in lieu of just using pylib.
[kiosk.git]
/
reddit_renderer.py
diff --git
a/reddit_renderer.py
b/reddit_renderer.py
index a4050a20f0f47dcd9b2e2ed6ce294c34d2b5411c..192bc206e75b860661816837d396afc3059ac6b1 100644
(file)
--- a/
reddit_renderer.py
+++ b/
reddit_renderer.py
@@
-1,19
+1,22
@@
#!/usr/bin/env python3
#!/usr/bin/env python3
-import praw # type: ignore
-import random
+import logging
from typing import Callable, Dict, Iterable, List, Set
from typing import Callable, Dict, Iterable, List, Set
-import constants
+import praw # type: ignore
+
import file_writer
import grab_bag
import page_builder
import profanity_filter
import renderer
import file_writer
import grab_bag
import page_builder
import profanity_filter
import renderer
-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__(
"""A renderer to pull text content from reddit."""
def __init__(
@@
-25,7
+28,7
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
font_size: int = 24,
additional_filters: Iterable[Callable[[str], bool]] = [],
):
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,
self.subreddit_list = subreddit_list
self.praw = praw.Reddit(
client_id=secrets.reddit_client_id,
@@
-36,19
+39,13
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
self.font_size = font_size
self.messages = grab_bag.grab_bag()
self.filters: List[Callable[..., bool]] = [
self.font_size = font_size
self.messages = grab_bag.grab_bag()
self.filters: List[Callable[..., bool]] = [
- profanity_filter.
profanity_filter().contains_bad_words
+ profanity_filter.
ProfanityFilter().contains_bad_word
]
self.filters.extend(additional_filters)
self.deduper: Set[str] = set()
]
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:
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":
if key == "Scrape":
return self.scrape_reddit()
elif key == "Shuffle":
@@
-67,23
+64,26
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
filtered = filt.__name__
break
if filtered != "":
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:
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
continue
- try:
- self.deduper.add(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 != ""
msg.thumbnail != "self"
and msg.thumbnail != "default"
and msg.thumbnail != ""
-
):
-
content = f'<IMG SRC="{msg.thumbnail}">'
-
self.messages.add(
-
f"""
+ ):
+ content = f'<IMG SRC="{msg.thumbnail}">'
+ self.messages.add(
+f"""
<TABLE STYLE="font-size:{self.font_size}pt;">
<TR>
<!-- The number of upvotes or item image: -->
<TABLE STYLE="font-size:{self.font_size}pt;">
<TR>
<!-- The number of upvotes or item image: -->
@@
-97,9
+97,7
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
</TD>
</TR>
</TABLE>"""
</TD>
</TR>
</TABLE>"""
- )
- except:
- self.debug_print("Unexpected exception, skipping message.")
+ )
def scrape_reddit(self) -> bool:
self.deduper.clear()
def scrape_reddit(self) -> bool:
self.deduper.clear()
@@
-130,7
+128,7
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
self.append_message(msg)
except:
pass
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:
return True
def shuffle_messages(self) -> bool:
@@
-147,7
+145,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:
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)
return False
for msg in subset:
layout.add_item(msg)
@@
-158,28
+156,28
@@
class reddit_renderer(renderer.debuggable_abstaining_renderer):
class til_reddit_renderer(reddit_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
class til_reddit_renderer(reddit_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
- super(
til_reddit_renderer, self
).__init__(
- name_to_timeout_dict, ["todayilearned"], min_votes=
2
00, font_size=20
+ super().__init__(
+ name_to_timeout_dict, ["todayilearned"], min_votes=
1
00, font_size=20
)
class quotes_reddit_renderer(reddit_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
)
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=
2
00, font_size=20
+ super().__init__(
+ name_to_timeout_dict, ["quotes"], min_votes=
1
00, font_size=20
)
class showerthoughts_reddit_renderer(reddit_renderer):
@staticmethod
def dont_tell_me_about_gift_cards(msg: str) -> bool:
)
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
+ return
"
gift card" in msg
def __init__(self, name_to_timeout_dict: Dict[str, int]):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
- super(
showerthoughts_reddit_renderer, self
).__init__(
+ super().__init__(
name_to_timeout_dict,
["showerthoughts"],
name_to_timeout_dict,
["showerthoughts"],
- min_votes=
3
50,
+ min_votes=
1
50,
additional_filters=[
showerthoughts_reddit_renderer.dont_tell_me_about_gift_cards
],
additional_filters=[
showerthoughts_reddit_renderer.dont_tell_me_about_gift_cards
],
@@
-188,7
+186,7
@@
class showerthoughts_reddit_renderer(reddit_renderer):
class seattle_reddit_renderer(reddit_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
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,
name_to_timeout_dict,
["seattle", "seattleWA", "SeaWA", "bellevue", "kirkland", "CoronavirusWA"],
min_votes=50,
@@
-197,8
+195,8
@@
class seattle_reddit_renderer(reddit_renderer):
class lifeprotips_reddit_renderer(reddit_renderer):
def __init__(self, name_to_timeout_dict: Dict[str, int]):
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=
10
0
+ super().__init__(
+ name_to_timeout_dict, ["lifeprotips"], min_votes=
5
0
)
)