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