X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=twitter_renderer.py;h=f2859f138ac3fd6b4e06c73132db469ece4f58dd;hb=6195654b2405928398dd981233115504162d1020;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("
")
- f.write("%s (@%s) | \n" % (author, handle))
- f.write('')
- f.write('![](twitter.png) |
\n')
- f.write("
\n\n")
- count = 0
- length = 0
- for tweet in tweets:
- text = tweet.full_text
- if (text not in already_seen) and (
- not self.filter.contains_bad_words(text)
- ):
- already_seen.add(text)
- text = self.linkify(text)
- f.write("- %s\n" % text)
- count += 1
- length += len(text)
- if count > 3 or length > 270:
- break
- f.write("
\n")
- f.close()
+ with file_writer.file_writer("twitter_10_3600.html") as f:
+ f.write("")
+ f.write("%s (@%s) | \n" % (author, handle))
+ f.write('')
+ f.write('![](twitter.png) |
\n')
+ f.write("
\n\n")
+ count = 0
+ length = 0
+ for tweet in tweets:
+ text = tweet.full_text
+ if (text not in already_seen) and (
+ not self.filter.contains_bad_words(text)
+ ):
+ already_seen.add(text)
+ text = self.linkify(text)
+ f.write("- %s\n" % text)
+ count += 1
+ length += len(text)
+ if count > 3 or length > 270:
+ break
+ f.write("
\n")
return True