X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=twitter_renderer.py;h=f2859f138ac3fd6b4e06c73132db469ece4f58dd;hb=ba913d3c5ec6fd5e229398ebfe9e073aaae7d73c;hp=1c9dbeebcf31e924f0ffb75e730921f3d04a3940;hpb=5e241dc47e497c547463cecc07946ea6882835a7;p=kiosk.git diff --git a/twitter_renderer.py b/twitter_renderer.py index 1c9dbee..f2859f1 100644 --- a/twitter_renderer.py +++ b/twitter_renderer.py @@ -1,18 +1,22 @@ -import file_writer +#!/usr/bin/env python3 + import random +import re +import tweepy +from typing import Dict, List + +import file_writer import renderer import profanity_filter -import re import secrets -import tweepy class twitter_renderer(renderer.debuggable_abstaining_renderer): - def __init__(self, name_to_timeout_dict): + def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None: super(twitter_renderer, self).__init__(name_to_timeout_dict, False) - self.debug = 1 - self.tweets_by_author = dict() - self.handles_by_author = dict() + self.debug = True + self.tweets_by_author = {} + self.handles_by_author = {} self.filter = profanity_filter.profanity_filter() self.urlfinder = re.compile( "((http|https)://[\-A-Za-z0-9\\.]+/[\?\&\-A-Za-z0-9_\\.]+)" @@ -38,13 +42,13 @@ class twitter_renderer(renderer.debuggable_abstaining_renderer): auth.set_access_token(access_token, access_token_secret) self.api = tweepy.API(auth) - def debug_prefix(self): + def debug_prefix(self) -> str: return "twitter" - def linkify(self, value): + def linkify(self, value: str) -> str: return self.urlfinder.sub(r'\1', value) - def periodic_render(self, key): + def periodic_render(self, key: str) -> bool: if key == "Fetch Tweets": return self.fetch_tweets() elif key == "Shuffle Tweets": @@ -52,7 +56,7 @@ class twitter_renderer(renderer.debuggable_abstaining_renderer): else: raise error("Unexpected operation") - def fetch_tweets(self): + def fetch_tweets(self) -> bool: try: tweets = self.api.home_timeline(tweet_mode="extended", count=200) except: @@ -63,39 +67,38 @@ class twitter_renderer(renderer.debuggable_abstaining_renderer): author_handle = tweet.author.screen_name self.handles_by_author[author] = author_handle if author not in self.tweets_by_author: - self.tweets_by_author[author] = list() + self.tweets_by_author[author] = [] l = self.tweets_by_author[author] l.append(tweet) return True - def shuffle_tweets(self): + def shuffle_tweets(self) -> bool: authors = list(self.tweets_by_author.keys()) author = random.choice(authors) handle = self.handles_by_author[author] tweets = self.tweets_by_author[author] already_seen = set() - f = file_writer.file_writer("twitter_10_3600.html") - f.write("\n" % (author, handle)) - f.write('
") - f.write("

%s (@%s)

') - f.write('
\n') - f.write("
\n\n") - f.close() + with file_writer.file_writer("twitter_10_3600.html") as f: + f.write("\n" % (author, handle)) + f.write('
") + f.write("

%s (@%s)

') + f.write('
\n') + f.write("
\n\n") return True