#!/usr/bin/env python3
import html.parser, tweepy, os, setuptools, translate, twitools
lang = setuptools.getListSetting("Translate", "lang")
ato = setuptools.getListSetting("Translate", "ato")
ase = setuptools.getListSetting("Translate", "ase")
if not (len(lang) == len(ato) and len(ato) == len(ase)):
raise setuptools.SetupException("Lists do not match in config.cfg.")
accounts = []
i = 0
while i < len(lang):
accounts += [[lang[i], ato[i], ase[i]]]
i += 1
origin = twitools.twoHelper().whoami()
search = "from:" + origin
last_id_filename = "last_id"
rt_bot_path = os.path.dirname(os.path.abspath(__file__))
last_id_file = os.path.join(rt_bot_path, last_id_filename)
try:
with open(last_id_file, "r") as file:
savepoint = file.read()
except IOError:
savepoint = ""
print("No savepoint found. Trying to get as many results as possible.")
timeline = twitools.twoHelper().search(search, savepoint)
tw_counter = 0
er_counter = 0
for status in timeline:
text = html.parser.HTMLParser().unescape(status.text)
if text[0] == "@":
continue
for a in accounts:
two = twitools.twObject(ato=a[1], ase=a[2])
tstring += translate.Translator(to_lang=a[0]).translate(text)
try:
two.tweet(tstring[:140])
tw_counter += 1
except Exception as e:
print(e)
er_counter += 1
continue
with open(last_id_file, "w") as file:
file.write(str(status.id))
print("Finished. %d Tweets retweeted. %d errors occurred." % (tw_counter, er_counter))