Switched back to Tweepy, tweet streaming works, archival of media files from non-retweets *should* be functional.

This commit is contained in:
Alex Huddleston 2020-04-25 03:19:32 -05:00
parent c66da02f2b
commit f51506cb02
6 changed files with 48 additions and 35 deletions

3
.gitignore vendored
View file

@ -11,4 +11,5 @@ data/*.bmp
data/*.webp
data/*.gif
data/*.mp4
data/*.mov
data/*.mov
data/*.json

11
lib/TweetStreamer.py Normal file
View file

@ -0,0 +1,11 @@
#!/usr/bin/python3
from tweepy import StreamListener
from lib.archival import archive_media_status
class TweetStreamer(StreamListener):
def on_status(self, status):
print(status._json)
archive_media_status(status)
return super().on_status(status)

View file

@ -1,24 +1,28 @@
#!/usr/bin/python3
from twitter.twitter_utils import parse_media_file
from twitter import Api
# from twitter import Api
def archive_media_status(media_object):
def archive_media(media_url):
temp_media_file, filename, size, media_type = parse_media_file(
media_url)
with open(f'data/{filename}', 'bw+') as archive_file:
archive_file.writelines(temp_media_file.readlines())
archive_file.close()
temp_media_file.close()
def archive_media_status(status):
try:
temp_media_file, filename, size, media_type = parse_media_file(media_object.media_url)
with open(f'data/{filename}', 'bw+') as archive_file:
archive_file.writelines(temp_media_file.readlines())
archive_file.close()
temp_media_file.close()
if(not ('retweeted_status' in status._json.keys())):
if('extended_entities' in status._json.keys()):
if('media' in status.extended_entities.keys()):
for media_dict in status.extended_entities['media']:
if(media_dict['type'] == 'photo'):
archive_media(media_dict['media_url'])
elif(media_dict['type'] == 'video'):
archive_media(
media_dict['video_info']['variants'][-1:][0]['url'])
except Exception as e:
print(e)
exit(1)
def twitter_archive_stream(twitter_api, authenticated_user):
tweet_stream = twitter_api.GetUserStream(replies='none', withuser='user')
# try:
# status_media_list = tweet_stream.status.media
# for media_file in status_media_list:
# archive_media_status(media_file)
# except Exception as e:
# print(e)

View file

@ -1,16 +1,11 @@
#!/usr/bin/python3
#from tweepy import OAuthHandler, API
from twitter import Api
from tweepy import OAuthHandler, API
def authenticate_twitter(config):
# auth = OAuthHandler(config['api_key'], config['api_key_secret'])
# auth.set_access_token(config['access_token'], config['access_token_secret'])
# api = API(auth)
twitter_api = Api(
consumer_key=config['api_key'],
consumer_secret=config['api_key_secret'],
access_token_key=config['access_token'],
access_token_secret=config['access_token_secret']
)
return twitter_api
auth = OAuthHandler(config['api_key'], config['api_key_secret'])
auth.set_access_token(config['access_token'],
config['access_token_secret'])
twitter_api = API(auth)
return twitter_api

View file

@ -1,5 +1,4 @@
{
"authenticated_user":"",
"api_key":"",
"api_key_secret":"",
"access_token":"",

View file

@ -1,15 +1,18 @@
#!/usr/bin/python3
from time import sleep
from lib.setup import import_config_file
from lib.authentication import authenticate_twitter
from lib.archival import twitter_archive_stream
from lib.TweetStreamer import TweetStreamer
from tweepy import Stream
def main():
config = import_config_file()
twitter_api = authenticate_twitter(config)
authenticated_user = twitter_api.GetUser(screen_name=config['authenticated_user'])
twitter_archive_stream(twitter_api, authenticated_user)
tweet_stream_listener = TweetStreamer(twitter_api)
tweet_stream = Stream(auth=twitter_api.auth,
listener=tweet_stream_listener)
tweet_stream.filter(follow=[twitter_api.me()._json['id_str']])
if(__name__ == '__main__'):