python-twitter-webhooks
python-twitter-webhooks copied to clipboard
Twitter Webhook library for Python
Twitter Webhooks for Python
.. image:: https://badge.fury.io/py/twitterwebhooks.svg :target: https://badge.fury.io/py/twitterwebhooks
.. image:: https://img.shields.io/badge/Tweet--lightgrey.svg?logo=twitter&style=social :target: https://twitter.com/intent/tweet?&text=%22Checking%20out%20Python%20Twitter%20Webhooks!%20@roach%22&url=https://github.com/Roach/python-twitter-webhooks
The Twitter Webhook Adapter is a Python-based solution to receive and parse events from Twitter's Webhook API. This library uses an event emitter framework to allow you to easily process Twitter events by simply attaching functions to event listeners.
This adapter enhances and simplifies Twitter's Webhook API by incorporating useful best practices, patterns, and opportunities to abstract out common tasks.
💡 This project is based on Slack's Events API Adapter for Python_ .
.. _Slack's Events API Adapter for Python: https://github.com/slackapi/python-slack-events-api
🤖 Installation
.. code:: shell
pip install twitterwebhooks
🎉 Once your webhook has been registered and user subscriptions are set up, you will begin receiving Twitter Events
⚠️ Ngrok is a great tool for developing Webhook style apps, but it's not recommended to use ngrok
for production apps.
🤖 Usage
⚠️ Keep your app's credentials safe!
-
For development, keep them in virtualenv variables.
-
For production, use a secure data store.
-
Never post your app's credentials to github.
.. code:: python
TWITTER_CONSUMER_SECRET = os.environ["TWITTER_CONSUMER_SECRET"]
Create a Webhook server for receiving actions via the Events API
Using the built-in Flask server:
.. code:: python
from twitterwebhoooks import TwitterWebhookAdapter
events_adapter = TwitterWebhookAdapter(CONSUMER_SECRET, "/webhooks/twitter")
@events_adapter.on("favorite_events") def handle_message(event_data): event = event_data['event'] faved_status = event['favorited_status'] faved_status_id = faved_status['id'] faved_status_screen_name = faved_status['user']['screen_name'] faved_by_screen_name = event['user']['screen_name'] print("@{} faved @{}'s tweet: {}".format(faved_by_screen_name, faved_status_screen_name, faved_status_id)) print(json.dumps(event_data, indent=4, sort_keys=True))
Start the server on port 3000
events_adapter.start(port=3000)
Using your existing Flask instance:
.. code:: python
from flask import Flask from twitterwebhoooks import TwitterWebhookAdapter
This app represents your existing Flask app
app = Flask(name)
An example of one of your Flask app's routes
@app.route("/") def hello(): return "Hello there!"
Bind the Events API route to your existing Flask app by passing the server
instance as the last param, or with server=app.
events_adapter = TwitterWebhookAdapter(CONSUMER_SECRET, "/webhooks/twitter", app)
@events_adapter.on("favorite_events") def handle_message(event_data): event = event_data['event'] faved_status = event['favorited_status'] faved_status_id = faved_status['id'] faved_status_screen_name = faved_status['user']['screen_name'] faved_by_screen_name = event['user']['screen_name'] print("@{} faved @{}'s tweet: {}".format(faved_by_screen_name, faved_status_screen_name, faved_status_id)) print(json.dumps(event_data, indent=4, sort_keys=True))
Start the server on port 3000
if name == "main": app.run(port=3000)
🤖 Example event listeners
See example.py_ for usage examples.
.. _example.py: /example/
🤔 Support
Need help? Open an issue or bug @Roach on Twitter