Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
twitter_bot.py 2.40 KiB
#!/bin/env python3
import shutil
import tweepy
import argparse
from program_info import ProgramInfo
CONSUMER_KEY = 'WEF5WDeWnql2I292voEG9mww3'
CONSUMER_SECRET = 'WrUCif5m7rxWDSDTb2YK7Djtb2MmUqFVZZXXcyH87amLbCgdpM'
ACCESS_TOKEN = '50611492-ALHt50D7VKc8jZA9weQ5zdIF5RWwLhqkTPbgvWG5O'
ACCESS_TOKEN_SECRET = 'z9Pwf5RjuJjJ8bzlMPCCKkYFukdi01j2oAcWnKdXZcAfZ'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
# Parse Arguments
aparser = argparse.ArgumentParser(
description="UFC Twitter Bot"
)
aparser.add_argument(
"--doit",
action="store_true",
help="Sendet die Nachricht über den UFC Twitter Account, anstatt sie nur auszugeben"
)
aparser.add_argument(
"--nofailmessage",
action="store_true",
help="Unterdrückt die Nachricht, dass kein Event gefunden wurde"
)
aparser.add_argument(
"--dest",
help="Schreibe DEST per mention an"
)
aparser.add_argument(
"--daydiff",
dest='day_diff',
type=int,
default=1,
help="Prüfe ob in DAY_DIFF Tagen ein Event stattfindet anstatt morgen."
)
args = aparser.parse_args()
program_info = ProgramInfo()
next_event = program_info.get_next_event(args.day_diff)
if next_event is None:
if not args.nofailmessage:
print("Twitter:")
if args.day_diff == 0:
print("Kein Event heute.")
elif args.day_diff == 1:
print("Kein Event morgen.")
else:
print("Kein Event in " + str(args.day_diff) + " Tagen.")
exit(1)
date = next_event.date
# Twitternachricht zusammenbauen
message = [
("%s, %d. %s %d um %s Uhr im Hörsaal 1 der EF50:\n" % (
date.weekday, date.day, date.month, date.year, date.time)),
"\n",
next_event.title,
"\n",
"" if next_event.description == "" else "\n",
next_event.description,
"" if next_event.description == "" else "\n\n",
"%s?pk_campaign=twitter" % next_event.link
]
text = ''.join(message)
image = program_info.get_image()
if not args.dest is None:
text = args.dest + " " + text
print("Vorschau Twitter:")
print(text)
# Nur abschicken, wenn es wirklich verlangt wird. Ansonsten nur in die Konsole schreiben
if args.doit is True:
print("\nSchick Nachricht an Twitter")
api.update_status_with_media("image.png", text, file=image)
else:
print("\nProgramm läuft im Vorschaumodus. Es wird nichts an Twitter abgesendet.")