changeset 457ea2c6531c in tryton-tweet:default details: https://hg.tryton.org/tryton-tweet?cmd=changeset&node=457ea2c6531c description: Post on mastodon too diffstat:
requirements.txt | 1 + tweet | 68 +++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 20 deletions(-) diffs (93 lines): diff -r 9e0d01e3d806 -r 457ea2c6531c requirements.txt --- a/requirements.txt Thu Oct 28 12:05:37 2021 +0200 +++ b/requirements.txt Tue May 10 18:13:12 2022 +0200 @@ -1,1 +1,2 @@ +requests python-twitter diff -r 9e0d01e3d806 -r 457ea2c6531c tweet --- a/tweet Thu Oct 28 12:05:37 2021 +0200 +++ b/tweet Tue May 10 18:13:12 2022 +0200 @@ -1,10 +1,12 @@ #!/usr/bin/env python3 +import configparser import os -import configparser import sys +import urllib.parse from itertools import groupby from random import choice +import requests import twitter curdir = os.path.dirname(__file__) @@ -14,24 +16,50 @@ return line == '\n' -data, prefix = { - 'tip': ('tips', "#TrytonTips "), - 'success-story': ('success-stories', ""), - }[sys.argv[1]] -tweets = [] -with open(os.path.join(curdir, data), 'r') as fp: - for key, lines in groupby(fp, block_separator): - if key: - continue - tweets.append(prefix + ' '.join(map(str.strip, lines))) -tweet = choice(tweets) +def choose_text(): + data, prefix = { + 'tip': ('tips', "#TrytonTips "), + 'success-story': ('success-stories', ""), + }[sys.argv[1]] + tweets = [] + with open(os.path.join(curdir, data), 'r') as fp: + for key, lines in groupby(fp, block_separator): + if key: + continue + tweets.append(prefix + ' '.join(map(str.strip, lines))) + return choice(tweets) + + +def tweet(text): + config = configparser.ConfigParser() + config.read(os.path.join(curdir, 'twitter.cfg')) -config = configparser.ConfigParser() -config.read(os.path.join(curdir, 'twitter.cfg')) + twitter.Api( + consumer_key=config.get('consumer', 'key'), + consumer_secret=config.get('consumer', 'secret'), + access_token_key=config.get('access_token', 'key'), + access_token_secret=config.get('access_token', 'secret') + ).PostUpdate(text) + + +def toot(text): + config = configparser.ConfigParser() + config.read(os.path.join(curdir, 'mastodon.cfg')) + token = config.get('tokens', 'access') -twitter.Api( - consumer_key=config.get('consumer', 'key'), - consumer_secret=config.get('consumer', 'secret'), - access_token_key=config.get('access_token', 'key'), - access_token_secret=config.get('access_token', 'secret') - ).PostUpdate(tweet) + requests.post( + urllib.parse.urljoin( + config.get('instance', 'url'), '/api/v1/statuses'), + params={ + 'status': text, + }, + headers={ + 'Authorization': f"Bearer {token}", + }) + + + +if __name__ == '__main__': + text = choose_text() + tweet(text) + toot(text)