# Tumblr CLI This is a simple Tumblr CLI for making posts. Use this to automate your posting workflow as a bot, or outsource your posts to your favorite editor and post them that way. ## Configuring Before running, you need to get your oauth key/secret and client key/secret from the Tumblr API. Copy config.example.toml: ```bash cp config.example.toml config.toml ``` And fill out the appropriate values. Don't forget to put your blog name in there. ## Setup This project uses `uv`. Any other tool that uses `pyproject.toml` should hypothetically work. The only dependency is `pytumblr2`, so making a virtualenv and installing that by itself should be sufficient. ### With `uv` ```bash uv sync source .venv/bin/activate # or venv/bin/activate.fish if you're using fish ``` ### With virtualenv ```bash python3 -m virtualenv venv source venv/bin/activate # or venv/bin/activate.fish if you're using fish pip3 install pytumblr2 ``` # Posting **For the moment, only images and text are supported.** The way I use it is by running: ```bash python3 -m tcli post -t "check out this picture I took" -i path_to_image.png ``` This will create a post with text followed by an image. You can use multiple content types in any order. Each new flag will create a new content block. For example: ```bash python3 -m tcli post -t "This is the first paragraph" -t "This is the second paragraph" -t "This is the third paragraph" ``` Sometimes, it is desireable to write a big post in your favorite editor, and then attach that. To do this, you can set the `-t` argument to start with a `@`, such as: ```bash python3 -m tcli post -t @post.txt ``` It will read the contents of `post.txt` and post that instead. ### Autoformatting caveats Tumblr, by default, does not automatically split up text into paragraphs. If your text chunk has two newlines in a row, e.g.: ``` This is the first paragraph This is the second paragraph ``` These will be split up into independent content blocks. Single newlines will remain preserved. ## Reblogging You can also reblog posts from the CLI. To do this, you can use the `-r` flag with the post ID, and the `-p` flag for the blog to reblog from. **If you are reblogging, both of these flags are required.** For example: ```bash python3 -m tcli post -r 678747728380100608 -p intercal -t "wow intercal, you are so wise" ``` # Other There are some other options that you may find useful, you can find these by running: ```bash # General options python3 -m tcli --help # Options for posting python3 -m tcli post --help ```