X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=twitter_renderer.py;h=e595a9ad0c23f0980665f8da10fb5414446ded90;hb=73e4d75ceabe5546f3966cfdcd1f705c77be17f7;hp=49c39da3b46029364c4f403b616f2549c157a296;hpb=4b1f3d8a8b278ca6d62f461ea80c8ea21080c301;p=kiosk.git diff --git a/twitter_renderer.py b/twitter_renderer.py index 49c39da..e595a9a 100644 --- a/twitter_renderer.py +++ b/twitter_renderer.py @@ -1,20 +1,26 @@ -import file_writer +#!/usr/bin/env python3 + import random +import re +import tweepy # type: ignore +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: Dict[str, List[tweepy.models.Status]] = {} + self.handles_by_author: Dict[str, str] = {} self.filter = profanity_filter.profanity_filter() self.urlfinder = re.compile( - "((http|https)://[\-A-Za-z0-9\\.]+/[\?\&\-A-Za-z0-9_\\.]+)") + "((http|https)://[\-A-Za-z0-9\\.]+/[\?\&\-A-Za-z0-9_\\.]+)" + ) # == OAuth Authentication == # @@ -23,86 +29,87 @@ class twitter_renderer(renderer.debuggable_abstaining_renderer): # The consumer keys can be found on your application's Details # page located at https://dev.twitter.com/apps (under "OAuth settings") - consumer_key=secrets.twitter_consumer_key - consumer_secret=secrets.twitter_consumer_secret + consumer_key = secrets.twitter_consumer_key + consumer_secret = secrets.twitter_consumer_secret # The access tokens can be found on your applications's Details # page located at https://dev.twitter.com/apps (located # under "Your access token") - access_token=secrets.twitter_access_token - access_token_secret=secrets.twitter_access_token_secret + access_token = secrets.twitter_access_token + access_token_secret = secrets.twitter_access_token_secret auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 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) + tweets = self.api.home_timeline(tweet_mode="extended", count=200) except: - print "Exception while fetching tweets!" + print("Exception while fetching tweets!") return False for tweet in tweets: author = tweet.author.name 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): - authors = self.tweets_by_author.keys() + 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_5_none.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}) -#x = "bla bla bla https://t.co/EjWnT3UA9U bla bla" -#x = t.linkify(x) -#print x -if t.fetch_tweets() == 0: - print "Error fetching tweets, none fetched." -else: - t.shuffle_tweets() +# t = twitter_renderer( +# {"Fetch Tweets" : 1, +# "Shuffle Tweets" : 1}) +# x = "bla bla bla https://t.co/EjWnT3UA9U bla bla" +# x = t.linkify(x) +# print(x) +# if t.fetch_tweets() == 0: +# print("Error fetching tweets, none fetched.") +# else: +# t.shuffle_tweets()