From 364746f976ccc341fa1b02ec43f1644bf3812a9c Mon Sep 17 00:00:00 2001 From: Thomas L Date: Sat, 17 Jun 2017 20:27:53 +0200 Subject: [PATCH] make interop with RetweetBot easier --- ticketfrei.cfg.example | 14 ++++++++++++-- ticketfrei.py | 34 +++++++++++++++++++++++----------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/ticketfrei.cfg.example b/ticketfrei.cfg.example index f4f907d..094f789 100644 --- a/ticketfrei.cfg.example +++ b/ticketfrei.cfg.example @@ -1,7 +1,17 @@ -[app] +## +# Twitter bot configuration +# + +# TODO + +## +# Mastodon bot configuration +# + +[mapp] app_name = 'yourcity_ticketfrei' -[user] +[muser] email = 'youremail@server.tld' password = 'yourpassword' server = 'yourmastodoninstance' diff --git a/ticketfrei.py b/ticketfrei.py index 3ae7ae4..9a11e59 100644 --- a/ticketfrei.py +++ b/ticketfrei.py @@ -2,12 +2,13 @@ import pytoml as toml import mastodon -import pickle import os +import pickle +import re import time -class RetootBot(): +class RetootBot(object): def __init__(self, config): self.config = config self.register() @@ -23,28 +24,34 @@ class RetootBot(): def register(self): self.client_id = os.path.join( 'appkeys', - self.config['app']['name'] + - '@' + self.config['user']['server'] + self.config['mapp']['name'] + + '@' + self.config['muser']['server'] ) if not os.path.isfile(self.client_id): mastodon.Mastodon.create_app( - self.config['app']['name'], - api_base_url=self.config['user']['server'], + self.config['mapp']['name'], + api_base_url=self.config['muser']['server'], to_file=self.client_id ) def login(self): self.m = mastodon.Mastodon( client_id=self.client_id, - api_base_url=self.config['user']['server'] + api_base_url=self.config['muser']['server'] ) self.m.log_in( - self.config['user']['email'], - self.config['user']['password'] + self.config['muser']['email'], + self.config['muser']['password'] ) - def retoot(self): + def retoot(self, toots=[]): + # toot external provided messages + for toot in toots: + self.m.toot(toot) + + # boost mentions + retoots = [] for notification in self.m.notifications(): if (notification['type'] == 'mention' and notification['status']['id'] not in self.seen_toots): @@ -53,13 +60,18 @@ class RetootBot(): notification['status']['account']['acct'], notification['status']['content'])) self.m.status_reblog(notification['status']['id']) + retoots.append(re.sub('<[^>]*>', '', + notification['status']['content'])) self.seen_toots.add(notification['status']['id']) # save state - with open('seen_toots.pickle.part', 'wb') as f: + with open('seen_toots.pickle.part', 'xb') as f: pickle.dump(self.seen_toots, f) os.rename('seen_toots.pickle.part', 'seen_toots.pickle') + # return mentions for mirroring + return retoots + if __name__ == '__main__': # read config in TOML format (https://github.com/toml-lang/toml#toml)