Switched back to Tweepy, tweet streaming works, archival of media files from non-retweets *should* be functional.
This commit is contained in:
parent
c66da02f2b
commit
f51506cb02
6 changed files with 48 additions and 35 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -11,4 +11,5 @@ data/*.bmp
|
|||
data/*.webp
|
||||
data/*.gif
|
||||
data/*.mp4
|
||||
data/*.mov
|
||||
data/*.mov
|
||||
data/*.json
|
11
lib/TweetStreamer.py
Normal file
11
lib/TweetStreamer.py
Normal 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)
|
|
@ -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)
|
|
@ -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
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"authenticated_user":"",
|
||||
"api_key":"",
|
||||
"api_key_secret":"",
|
||||
"access_token":"",
|
||||
|
|
|
@ -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__'):
|
||||
|
|
Reference in a new issue