toot/toot

44 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
import click
import emoji
import getpass
import json
import os
import sys
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) > 5000:
print("Status is too long, try again")
elif len(status) == 0:
print("Did you type a status?")
else:
print(mastodon.toot(f"{status}\n~{getpass.getuser()}")["uri"])
if __name__=='__main__':
toot()