Извлечение метаданных для идентификаторов твитов с помощью tweepy больше не работает

Я использовал библиотеку tweepy (для twitter api-v1.1), чтобы получить некоторые метаданные (например, текст твита, #retweets, идентификатор пользователя и т. д.) для списка идентификаторов твитов. Вот мой код:

consumer_key = 'xxxxxxxxxxxx'
consumer_key_secret = 'xxxxxxxxxxxx'
access_token = 'xxxxxxxxxxxxxxxxxx'
access_token_secret = 'xxxxxxxxxxxxxxxxxx'

auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

def createTrainingSet(corpusFile, tweetContent):
    import csv
    import time
    import json

    counter = 0
    corpus = []

    with open(corpusFile, 'r') as csvfile:
        lineReader = csv.reader(csvfile, delimiter=',')
        for row in lineReader:
            corpus.append({"tweet_id": row[0], "unreliable": row[1], "conspiracy": row[2],\
                           "clickbait": row[3], "political/biased": row[4], "date": row[5]})

    sleepTime = 2
    trainingDataSet = []  
    
    for tweet in corpus:
        try:
            tweetFetched = api.get_status(tweet["tweet_id"])
            print("Tweet fetched" + tweetFetched.text)
            print("followers_count: "+ str(tweetFetched.user.followers_count))
            print("friends_count: " + str(tweetFetched.user.friends_count))
            
            tweet["text"] = tweetFetched.text
            tweet["retweet_count"] = tweetFetched.retweet_count
            tweet["favorite_count"] = tweetFetched.favorite_count
            tweet["created_at"] = tweetFetched.created_at   
            tweet["user_id"] = tweetFetched.user.id_str
            tweet["user_created_at"] = tweetFetched.user.created_at              
            
            trainingDataSet.append(tweet)
            time.sleep(sleepTime)

        except:
            print("Inside the exception - no:2")
            continue

# This is corpus dataset
corpusFile = "sample.csv"
# This is my target file
tweetContent = "tweetContent.csv"
# Call the method
resultFile = createTrainingSet(corpusFile, tweetContent)

Вопрос: я не знаю, почему этот код больше не работает (последний раз он работал пару месяцев назад). Однако, когда я запускаю его сейчас, он возвращает "Inside the exception - no:2". Я ценю любую помощь!


person mOna    schedule 12.05.2021    source источник
comment
Вместо того, чтобы печатать и продолжать, не могли бы вы вызвать исключение и добавить то, что оно говорит?   -  person NelsonGon    schedule 12.05.2021
comment
Невозможно определить, в чем проблема, без фактического исключения/трассировки.   -  person Harmon758    schedule 13.05.2021
comment
Спасибо @NelsonGon за подсказку. Сейчас напишу ответ :)   -  person mOna    schedule 15.05.2021
comment
@ Harmon758 Спасибо за подсказку. Сейчас напишу ответ :)   -  person mOna    schedule 15.05.2021


Ответы (1)


Вот две строки кода, которые помогли мне найти ошибки:

except tweepy.TweepError as e:
        print ('the error code:', e.args[0][0]['code'])
        print ('the error message:', e.args[0][0]['message'])  

Кроме того, благодаря ответу Джеекомона в этом сообщении я обнаружил, что e.message[0]['code'] больше не работает:

Раньше код ошибки можно было получить с помощью e.message[0]['code'], который больше не работает. Атрибут сообщения устарел в Python 2.6 и удален в Python 3.0. В настоящее время вы получаете сообщение об ошибке «TweepError», объект не имеет атрибута «сообщение».

Кроме того, кажется, что в классе исключений TweepError есть некоторые другие полезные атрибуты (api_code, reason и response), которых нет в документации.

person mOna    schedule 15.05.2021