tweet-images

April 18, 2022 ยท View on GitHub

PyPI Changelog Tests License

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