2016-05-10 7 views
0

Meine Anwendung besteht darin, einen Hashtag mit Tweepy zu retweeten. Wenn ich den Hashtag retweetet, habe ich Probleme, die Fehler 2 und 3 zu bekommen. Fehler 1. Ihre eigene ID (fertig) 2. Wenn tweet wurde bereits rtd 3. Wenn tweet auf RT aus geschützten Quelle innerhalb des StdOutListenerFehler bei der Verarbeitung von Fehlern bei der Verwendung von api.retweet() Tweepy 3.5/Python3

Zugriff api.retweet (doTweet) kommt erlaubt es nicht zu durchfallen zu on_error(). Wie sonst kann ich das tun? Ich bin Python noob.

class StdOutListener(tweepy.StreamListener): 
    def on_data(self, data):  
     all_data = json.loads(data) 
     username = all_data["user"]["screen_name"] 
     doTweet = all_data["id"] 
     if username != our_own_id: 
      #make sure you haven't already retweeted 
      #make sure tweets aren't protected 
      print(username) # just so we know it's working 
      api.retweet(doTweet) 
     return True 

    def on_error(self, status_code): 
     print('error') 
     read_error = json.loads(status_code) 
     print('Got an error with status code: ' + str(read_error))   
     return True # To continue listening 

    def on_timeout(self): 
     print('Timeout...') 
     return True # To continue listening 

try: 
    if __name__ == '__main__': 
     listener = StdOutListener() 
     stream = tweepy.Stream(auth, listener) 
     stream.filter(track=['#love']) 

except KeyboardInterrupt: 
    sys.exit() 
+0

Ich habe versucht, api.retweet() in Main ohne Erfolg zu setzen. – Tom

+0

Ich verstehe nicht, was die Fehler sind. Und bitte korrigieren Sie Ihre Einrückung –

+0

@ValentinLorentz was soll ich in der Einrückung ändern? Das habe ich von IDLE kopiert. – Tom

Antwort

2

Sie können Ihren Anruf api.retweet in Ihrem on_data Verfahren wie folgt ändern:

... 
if username != our_own_id: 
    print(username) # just so we know it's working 
    try: 
     api.retweet(doTweet) 
    except tweepy.TweepError as e: 
     # add here a more complex error handling 
     print(e) 

Hoffe, es hilft.