2016-05-10 1 views
0

Мое приложение состоит в том, чтобы переустановить хэштег с помощью Tweepy. Посредством работы с хэштагами у меня возникают проблемы с получением ошибок 2 и 3 для работы. Ошибки 1. Ваш собственный идентификатор (сделано) 2. Если твит уже РТД 3. Если твит до комнатной температуры происходит от защищенного источникаОшибка при обработке ошибок при использовании api.retweet() Tweepy 3.5/Python3

Доступ api.retweet (doTweet) в пределах StdOutListener не позволяет его перейти к on_error(). Как еще я могу это сделать? Я 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

Я попытался поставить api.retweet() в главном без успеха. – Tom

+0

Я не понимаю, что такое ошибки. И, пожалуйста, исправьте свой отступ –

+0

@ValentinLorentz, что я должен изменить в отступе? это то, что я скопировал из IDLE. – Tom

ответ

2

Вы можете изменить свой вызов api.retweet в методе on_data следующим образом:

... 
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) 

Надеется, что это помогает.