X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=twitter_renderer.py;h=40a3385d92fd4746461e067f595c70486ad1f7b3;hb=477c84bcdefc573278ec8ed8974d5be8baac562d;hp=1c9dbeebcf31e924f0ffb75e730921f3d04a3940;hpb=5e241dc47e497c547463cecc07946ea6882835a7;p=kiosk.git diff --git a/twitter_renderer.py b/twitter_renderer.py index 1c9dbee..40a3385 100644 --- a/twitter_renderer.py +++ b/twitter_renderer.py @@ -1,19 +1,24 @@ -import file_writer +#!/usr/bin/env python3 + import random +import re +from typing import Dict, List + +import tweepy # type: ignore + +import file_writer import renderer import profanity_filter -import re -import secrets -import tweepy +import kiosk_secrets as secrets -class twitter_renderer(renderer.debuggable_abstaining_renderer): - def __init__(self, name_to_timeout_dict): - super(twitter_renderer, self).__init__(name_to_timeout_dict, False) - self.debug = 1 - self.tweets_by_author = dict() - self.handles_by_author = dict() - self.filter = profanity_filter.profanity_filter() +class twitter_renderer(renderer.abstaining_renderer): + def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None: + super().__init__(name_to_timeout_dict) + self.debug = True + self.tweets_by_author: Dict[str, List[tweepy.models.Status]] = {} + self.handles_by_author: Dict[str, str] = {} + self.filter = profanity_filter.ProfanityFilter() self.urlfinder = re.compile( "((http|https)://[\-A-Za-z0-9\\.]+/[\?\&\-A-Za-z0-9_\\.]+)" ) @@ -38,21 +43,21 @@ 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": return self.shuffle_tweets() else: - raise error("Unexpected operation") + raise Exception("Unexpected operation") - def fetch_tweets(self): + def fetch_tweets(self) -> bool: try: tweets = self.api.home_timeline(tweet_mode="extended", count=200) except: @@ -63,50 +68,49 @@ 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 # Test # t = twitter_renderer( -# {"Fetch Tweets" : 1, -# "Shuffle Tweets" : 1}) +# {"Fetch Tweets" : 1, +# "Shuffle Tweets" : 1}) # x = "bla bla bla https://t.co/EjWnT3UA9U bla bla" # x = t.linkify(x) -# print x +# print(x) # if t.fetch_tweets() == 0: -# print("Error fetching tweets, none fetched.") +# print("Error fetching tweets, none fetched.") # else: -# t.shuffle_tweets() +# t.shuffle_tweets()