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
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -12,3 +12,4 @@ data/*.webp
|
||||||
data/*.gif
|
data/*.gif
|
||||||
data/*.mp4
|
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
|
#!/usr/bin/python3
|
||||||
|
|
||||||
from twitter.twitter_utils import parse_media_file
|
from twitter.twitter_utils import parse_media_file
|
||||||
from twitter import Api
|
# from twitter import Api
|
||||||
|
|
||||||
def archive_media_status(media_object):
|
|
||||||
try:
|
def archive_media(media_url):
|
||||||
temp_media_file, filename, size, media_type = parse_media_file(media_object.media_url)
|
temp_media_file, filename, size, media_type = parse_media_file(
|
||||||
|
media_url)
|
||||||
with open(f'data/{filename}', 'bw+') as archive_file:
|
with open(f'data/{filename}', 'bw+') as archive_file:
|
||||||
archive_file.writelines(temp_media_file.readlines())
|
archive_file.writelines(temp_media_file.readlines())
|
||||||
archive_file.close()
|
archive_file.close()
|
||||||
temp_media_file.close()
|
temp_media_file.close()
|
||||||
|
|
||||||
|
|
||||||
|
def archive_media_status(status):
|
||||||
|
try:
|
||||||
|
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:
|
except Exception as e:
|
||||||
print(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
|
#!/usr/bin/python3
|
||||||
|
|
||||||
#from tweepy import OAuthHandler, API
|
from tweepy import OAuthHandler, API
|
||||||
from twitter import Api
|
|
||||||
|
|
||||||
def authenticate_twitter(config):
|
def authenticate_twitter(config):
|
||||||
# auth = OAuthHandler(config['api_key'], config['api_key_secret'])
|
auth = OAuthHandler(config['api_key'], config['api_key_secret'])
|
||||||
# auth.set_access_token(config['access_token'], config['access_token_secret'])
|
auth.set_access_token(config['access_token'],
|
||||||
# api = API(auth)
|
config['access_token_secret'])
|
||||||
twitter_api = Api(
|
twitter_api = API(auth)
|
||||||
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
|
return twitter_api
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
"authenticated_user":"",
|
|
||||||
"api_key":"",
|
"api_key":"",
|
||||||
"api_key_secret":"",
|
"api_key_secret":"",
|
||||||
"access_token":"",
|
"access_token":"",
|
||||||
|
|
|
@ -1,15 +1,18 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
from time import sleep
|
|
||||||
from lib.setup import import_config_file
|
from lib.setup import import_config_file
|
||||||
from lib.authentication import authenticate_twitter
|
from lib.authentication import authenticate_twitter
|
||||||
from lib.archival import twitter_archive_stream
|
from lib.TweetStreamer import TweetStreamer
|
||||||
|
from tweepy import Stream
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
config = import_config_file()
|
config = import_config_file()
|
||||||
twitter_api = authenticate_twitter(config)
|
twitter_api = authenticate_twitter(config)
|
||||||
authenticated_user = twitter_api.GetUser(screen_name=config['authenticated_user'])
|
tweet_stream_listener = TweetStreamer(twitter_api)
|
||||||
twitter_archive_stream(twitter_api, authenticated_user)
|
tweet_stream = Stream(auth=twitter_api.auth,
|
||||||
|
listener=tweet_stream_listener)
|
||||||
|
tweet_stream.filter(follow=[twitter_api.me()._json['id_str']])
|
||||||
|
|
||||||
|
|
||||||
if(__name__ == '__main__'):
|
if(__name__ == '__main__'):
|
||||||
|
|
Reference in a new issue