#!/usr/bin/env python3 import logging import pytoml as toml import time import sendmail from retootbot import RetootBot from retweetbot import RetweetBot from mailbot import Mailbot from trigger import Trigger if __name__ == '__main__': # read config in TOML format (https://github.com/toml-lang/toml#toml) with open('config.toml') as configfile: config = toml.load(configfile) # set log file logger = logging.getLogger() fh = logging.FileHandler(config['logging']['logpath']) fh.setLevel(logging.DEBUG) logger.addHandler(fh) trigger = Trigger(config) bots = [] if config["muser"]["enabled"] != "false": bots.append(RetootBot(config)) if config["tuser"]["enabled"] != "false": bots.append(RetweetBot(config)) if config["mail"]["enabled"] != "false": bots.append(Mailbot(config)) try: statuses = [] while True: for bot in bots: reports = bot.crawl() for status in reports: if not trigger.is_ok(status.text): continue for bot2 in bots: if bot == bot2: bot2.repost(status) else: bot2.post(status) time.sleep(60) # twitter rate limit >.< except KeyboardInterrupt: print("Good bye. Remember to restart the bot!") except: logger.error('Shutdown', exc_info=True) for bot in bots: bot.save_last() try: mailer = sendmail.Mailer(config) mailer.send('', config['mail']['contact'], 'Ticketfrei Crash Report', attachment=config['logging']['logpath']) except: logger.error('Mail sending failed', exc_info=True)