commit 15c01c51c7c2468d22f7254db86473ba33944364 Author: Alex Huddleston Date: Fri Apr 24 14:38:39 2020 -0500 Initial commit. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..896250e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.vscode/ +.idea/ +**/__pycache__/** +**.pyc +Pipfile.lock +config.json \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..4f97087 --- /dev/null +++ b/Pipfile @@ -0,0 +1,15 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +autopep8 = "*" +pylint = "*" +pipfile = "*" + +[packages] +pipfile = "*" +"mastodon.py" = "*" +tweepy = "*" +python-twitter = "*" diff --git a/README.md b/README.md new file mode 100644 index 0000000..591a6ca --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Twitter Media Tool + +This is a project I'm intending to use to create a bot that will monitor my Twitter account media uploads and archive them to use for later and for backup. + +## Contact + +Twitter +[@shadow8t4](https://twitter.com/shadow8t4) \ No newline at end of file diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/EWXVFrbU0AE29pL.jpg b/data/EWXVFrbU0AE29pL.jpg new file mode 100644 index 0000000..e093455 Binary files /dev/null and b/data/EWXVFrbU0AE29pL.jpg differ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/archival.py b/lib/archival.py new file mode 100644 index 0000000..73d7510 --- /dev/null +++ b/lib/archival.py @@ -0,0 +1,14 @@ +#!/usr/bin/python3 + +from twitter.twitter_utils import parse_media_file + +def archive_media_status(media_object): + 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() + except Exception as e: + print(e) + exit(1) \ No newline at end of file diff --git a/lib/authentication.py b/lib/authentication.py new file mode 100644 index 0000000..8dd3e2a --- /dev/null +++ b/lib/authentication.py @@ -0,0 +1,16 @@ +#!/usr/bin/python3 + +#from tweepy import OAuthHandler, API +from twitter import 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 \ No newline at end of file diff --git a/lib/echo_mastodon.py b/lib/echo_mastodon.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/setup.py b/lib/setup.py new file mode 100644 index 0000000..a5fa732 --- /dev/null +++ b/lib/setup.py @@ -0,0 +1,26 @@ +#!/usr/bin/python3 + +from json import load +from sys import argv + + +def import_from_default_path(): + try: + with open('config.json') as config_file: + return load(config_file) + config_file.close() + except Exception as e: + print("Couldn't find the config file.") + exit(1) + + +def import_config_file(): + if(len(argv) > 1): + try: + with open(argv[1]) as config_file: + return load(config_file) + config_file.close() + except: + return import_from_default_path() + else: + return import_from_default_path() diff --git a/template_config.json b/template_config.json new file mode 100644 index 0000000..1b8ed09 --- /dev/null +++ b/template_config.json @@ -0,0 +1,7 @@ +{ + "authenticated_user":"", + "api_key":"", + "api_key_secret":"", + "access_token":"", + "access_token_secret":"" +} \ No newline at end of file diff --git a/twitter_media_tool.py b/twitter_media_tool.py new file mode 100644 index 0000000..cbf4235 --- /dev/null +++ b/twitter_media_tool.py @@ -0,0 +1,23 @@ +#!/usr/bin/python3 +# encoding: UTF-8 + +#from tweepy import OAuthHandler, API +from time import sleep +from lib.setup import import_config_file +from lib.authentication import authenticate_twitter +from lib.archival import archive_media_status + +def main(): + config = import_config_file() + twitter_api = authenticate_twitter(config) + authenticated_user = twitter_api.GetUser(screen_name=config['authenticated_user']) + try: + status_media_list = authenticated_user.status.media + for media_file in status_media_list: + archive_media_status(media_file) + except Exception as e: + print(e) + + +if(__name__ == '__main__'): + main()