Ver a proveniência

mastodon login only when new tweets to toot

master
cquest há 9 anos
ascendente
cometimento
d221df18ae
1 ficheiros alterados com 38 adições e 29 eliminações
  1. +38
    -29
      tootbot.py

+ 38
- 29
tootbot.py Ver ficheiro

@@ -8,7 +8,7 @@ import re
import sqlite3 import sqlite3
from datetime import datetime, date, time, timedelta from datetime import datetime, date, time, timedelta


if len(sys.argv) < 3:
if len(sys.argv) < 4:
print("Usage: python3 tootbot.py twitter_account mastodon_login mastodon_passwd mastodon_instance") print("Usage: python3 tootbot.py twitter_account mastodon_login mastodon_passwd mastodon_instance")
sys.exit(1) sys.exit(1)


@@ -17,41 +17,21 @@ sql = sqlite3.connect('tootbot.db')
db = sql.cursor() db = sql.cursor()
db.execute('''CREATE TABLE IF NOT EXISTS tweets (tweet text, toot text, twitter text, mastodon text, instance text)''') db.execute('''CREATE TABLE IF NOT EXISTS tweets (tweet text, toot text, twitter text, mastodon text, instance text)''')


if len(sys.argv)>3:
if len(sys.argv)>4:
instance = sys.argv[4] instance = sys.argv[4]
else: else:
instance = 'amicale.net' instance = 'amicale.net'


if len(sys.argv)>5:
days = int(sys.argv[5])
else:
days = 1

twitter = sys.argv[1] twitter = sys.argv[1]
mastodon = sys.argv[2] mastodon = sys.argv[2]
passwd = sys.argv[3] passwd = sys.argv[3]


# Create application if it does not exist
if not os.path.isfile(instance+'.secret'):
if Mastodon.create_app(
'tootbot',
api_base_url='https://'+instance,
to_file = instance+'.secret'
):
print('tootbot app created on instance '+instance)
else:
print('failed to create app on instance '+instance)
sys.exit(1)

try:
mastodon_api = Mastodon(
client_id=instance+'.secret',
api_base_url='https://'+instance
)
mastodon_api.log_in(
username=mastodon,
password=passwd,
scopes=['read', 'write'],
to_file=mastodon+".secret"
)
except:
print("ERROR: First Login Failed!")
sys.exit(1)
mastodon_api = None


d = feedparser.parse('http://twitrss.me/twitter_user_to_rss/?user='+twitter) d = feedparser.parse('http://twitrss.me/twitter_user_to_rss/?user='+twitter)


@@ -61,7 +41,36 @@ for t in reversed(d.entries):
last = db.fetchone() last = db.fetchone()


# process only unprocessed tweets less than 1 day old # process only unprocessed tweets less than 1 day old
if last is None and (datetime.now()-datetime(t.published_parsed.tm_year, t.published_parsed.tm_mon, t.published_parsed.tm_mday, t.published_parsed.tm_hour, t.published_parsed.tm_min, t.published_parsed.tm_sec) < timedelta(days=1)):
if last is None and (datetime.now()-datetime(t.published_parsed.tm_year, t.published_parsed.tm_mon, t.published_parsed.tm_mday, t.published_parsed.tm_hour, t.published_parsed.tm_min, t.published_parsed.tm_sec) < timedelta(days=days)):
if mastodon_api is None:
# Create application if it does not exist
if not os.path.isfile(instance+'.secret'):
if Mastodon.create_app(
'tootbot',
api_base_url='https://'+instance,
to_file = instance+'.secret'
):
print('tootbot app created on instance '+instance)
else:
print('failed to create app on instance '+instance)
sys.exit(1)

try:
mastodon_api = Mastodon(
client_id=instance+'.secret',
api_base_url='https://'+instance
)
mastodon_api.log_in(
username=mastodon,
password=passwd,
scopes=['read', 'write'],
to_file=mastodon+".secret"
)
except:
print("ERROR: First Login Failed!")
sys.exit(1)


#h = BeautifulSoup(t.summary_detail.value, "html.parser") #h = BeautifulSoup(t.summary_detail.value, "html.parser")
c = t.title c = t.title
toot_media = [] toot_media = []


Carregando…
Cancelar
Guardar