44 lines
1.1 KiB
Python
Executable File
44 lines
1.1 KiB
Python
Executable File
#!/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()
|
|
|