From f181545f1456e3c43bb5cb1b25dfd1d3cfcccdc1 Mon Sep 17 00:00:00 2001 From: b3yond Date: Sat, 17 Jun 2017 18:25:17 +0200 Subject: [PATCH] put in more escapes. har har har. --- .gitignore | 2 ++ twitter/main.py | 74 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 53 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 8e3698c..f426324 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ *.swp +.idea/ +last_rt ticketfrei.cfg seen_toots.pickle seen_toots.pickle.part diff --git a/twitter/main.py b/twitter/main.py index bddb34d..b9d2a81 100644 --- a/twitter/main.py +++ b/twitter/main.py @@ -1,7 +1,9 @@ #!/usr/bin/env python + __author__ = "b3yond" import twitter +import requests from time import sleep """ @@ -9,7 +11,7 @@ How to get these keys is described in doc/twitter_api.md After you received keys, store them in ../../api_keys, one at a line. """ -with open("../../api_keys", "r") as file: +with open("../appkeys/ticketfrei@twitter.com", "r") as file: keys = file.readlines() for i in keys: print i, @@ -23,32 +25,58 @@ api = twitter.Api(consumer_key = keys[0].strip(), # This counter is needed to keep track which was the last tweet you retweeted -last_rt = "" +with open("../last_rt", "r+") as file: + last_rt = file.read() # Words which have to be included into the tweets for the tweet to get retweeted -with open("../triggerwords.txt", "r") as file: +with open("../triggerwords", "r") as file: triggers = file.readlines() +try: + while 1: + sleep(1) -while 1: - sleep(1) - - # Store all mentions in a list of Status Objects - mentions = api.GetMentions(since_id=last_rt) - print mentions - for i in mentions: - print i.user.name, i.user.id, i.text # debug - - # Is the Text of the Tweet in the triggerlist? - for j in triggers: - if i.text.lower().find(j): - - # Retweet status, save the id so it doesn't get crawled again + # Store all mentions in a list of Status Objects + try: + mentions = api.GetMentions(since_id=last_rt) + except requests.exceptions.ConnectionError: + done = False + while done == False: try: - feedback = api.PostRetweet(i.id) - print feedback - except twitter.error.TwitterError: - print("[ERROR] probably you already retweeted this tweet.") - last_rt = i.id - break \ No newline at end of file + mentions = api.GetMentions(since_id=last_rt) + done = True + except: + sleep(10) + + print mentions + for i in mentions: + print i.user.name, i.user.id, i.text # debug + + # Is the Text of the Tweet in the triggerlist? + for j in triggers: + if i.text.lower().find(j): + + # Retweet status + try: + api.PostRetweet(i.id) + + # This is an Error we need to get rid of. Why are tweets RTed twice? + except twitter.error.TwitterError: + print("[ERROR] probably you already retweeted this tweet.") + except requests.exceptions.ConnectionError: + done = False + while done == False: + try: + api.PostRetweet(i.id) + done = True + except: + sleep(10) + + # save the id so it doesn't get crawled again + last_rt = i.id + break +except: + api.PostDirectMessage("Help! I broke down. restart me pls :$", "801098086005243904", "links_tech") + with open("../last_rt", "w") as file: + file.write(last_rt) \ No newline at end of file