From 781464669be586bc8f7ac1e1ead6cc6609eb296f Mon Sep 17 00:00:00 2001 From: clerie Date: Thu, 30 May 2019 14:29:49 +0200 Subject: [PATCH] Initial commit --- .gitignore | 127 ++++++++++++++++++++++++++++++++++++++++++++ config.json.example | 11 ++++ hastag_stream.py | 29 ++++++++++ 3 files changed, 167 insertions(+) create mode 100644 .gitignore create mode 100644 config.json.example create mode 100644 hastag_stream.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..575111f --- /dev/null +++ b/.gitignore @@ -0,0 +1,127 @@ +# Mastodon Hashtag Spreader +config.json + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/config.json.example b/config.json.example new file mode 100644 index 0000000..5e8b67f --- /dev/null +++ b/config.json.example @@ -0,0 +1,11 @@ +{ + "source": { + "url": "https://chaos.social", + "token": "", + "hashtag": "gpn19" + }, + "drain": { + "url": "https://fem.social", + "token": "" + } +} diff --git a/hastag_stream.py b/hastag_stream.py new file mode 100644 index 0000000..495783b --- /dev/null +++ b/hastag_stream.py @@ -0,0 +1,29 @@ +import json +from mastodon import Mastodon, StreamListener + +with open("config.json", 'r') as f: + config = json.load(f) + +if config: + chaos_social = Mastodon( + access_token = config["source"]["token"], + api_base_url = config["source"]["url"] + ) + + fem_social = Mastodon( + access_token = config["drain"]["token"], + api_base_url = config["drain"]["url"] + ) + + class TootListener(StreamListener): + def on_update(self, status): + print("") + print(" -- new status in chaos.social -- ") + print(status) + print("") + print(" -- search in fem.social -- ") + print(fem_social.search(status.url)) + + tootListener = TootListener() + + chaos_social.stream_hashtag(config["source"]["hashtag"], tootListener, run_async=False, timeout=300, reconnect_async=False, reconnect_async_wait_sec=5)