This commit is contained in:
Ben Harris 2020-01-20 16:25:30 -05:00
commit ef3fab1f9a
4 changed files with 60 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
toot.json

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# toot
small client for tooting to mastodon
supply a credential file with `--creds` (see toot.json.sample)
`toot` will default to looking for a file named `toot.json` alongside
the executable.

43
toot Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/python3
import json
import os
import sys
import click
import emoji
from mastodon import Mastodon
@click.command()
@click.argument('status', required=False)
@click.option('--creds', default=os.path.join(os.path.dirname(__file__), "toot.json"))
def toot(status, creds):
# get config
with open(creds) as f:
config = json.load(f)
# set up connection to mastodon
mastodon = Mastodon(
client_id=config['client_id'],
client_secret=config['client_secret'],
access_token=config['access_token'],
api_base_url=config['base_url'],
)
# get status from argument or from stdin
if not status:
status = "".join(sys.stdin).strip()
# replace shortcodes with emoji :thumbsup:
status = emoji.emojize(status, use_aliases=True)
# check status length and post status
if len(status) > 500:
print("Status is too long, try again")
elif len(status) == 0:
print("Did you type a status?")
else:
print(mastodon.toot(status)["uri"])
if __name__=='__main__':
toot()

7
toot.json.sample Normal file
View File

@ -0,0 +1,7 @@
{
"client_id": "",
"client_secret": "",
"access_token": "",
"base_url": "https://tilde.zone"
}