tweet-images
April 18, 2022 ยท View on GitHub
Send tweets with images from the command line
Installation
Install this tool using pip:
pip install tweet-images
Example
This tool is used by the @covidsewage bot on Twitter, see simonw/covidsewage-bot and Building a Covid sewage Twitter bot.
Usage
You'll need a consumer key, consumer secret, access token key and access token secret for a Twitter account that you wish to tweet from. See How to get credentials for a new Twitter bot for tips on obtaining these.
You can pass those as the --consumer-key, --consumer-secret, --access-token-key, --access-token-secret options to the command, or you can set them as environment variables like this:
export TWITTER_CONSUMER_KEY="..."
export TWITTER_CONSUMER_SECRET="..."
export TWITTER_ACCESS_TOKEN_KEY="..."
export TWITTER_ACCESS_TOKEN_SECRET=".."
You can then send a tweet like this:
tweet-images "This is my tweet"
Or attach between one and four images to that tweet by passing their file paths:
tweet-images "Three pictures attached" one.jpg two.jpg three.jpg
You can pass --alt "alt text" one or more times to attach alt text to your images:
tweet-images "Three pictures attached" one.jpg two.jpg \
--alt "Alt text for one" --alt "Alt text for two"
Using this with GitHub Actions
Here's an example fragment from a GitHub Actions workflow that uses this tool. The repository has four repository secrets configured with the necessary credentials, and a previous step has already installed the tweet-images Python package:
- name: Tweet the new image
env:
TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
TWITTER_ACCESS_TOKEN_KEY: ${{ secrets.TWITTER_ACCESS_TOKEN_KEY }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
run: |-
tweet-images "Latest Covid sewage charts for the SF Bay Area" \
/tmp/covid.png --alt "Screenshot of the charts"
Development
To contribute to this tool, first checkout the code. Then create a new virtual environment:
cd tweet-images
python -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
To run the tests:
pytest