Как получить полнотекстовые твиты с помощью твипа? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь вычеркнуть твиты из пользовательского профиля Twitter.Прочитав предыдущие посты, я понял, что в Twitter JSON есть раздел для расширенных твитов.Я добавил tweet_mode='extended' в свой api.user_timeline раздел и изменил .text на .full_text.

Однако я все еще получаю усеченные твиты.Я понимаю, что ретвиты имеют атрибут full_text, но я очищаю временную шкалу и не отделяю твиты от ретвитов.

Существует ли способ универсального запроса твитов и получения версии full_text.Я включил свой код ниже.

screen_name_list = ['@x']

for name in screen_name_list:
    user = api.get_user(name)

    #initialize a list to hold all the tweepy Tweets
    alltweets = []  

    #make initial request for most recent tweets (200 is the maximum allowed count)
    new_tweets = api.user_timeline(screen_name = name, count = 200,tweet_mode='extended', include_rts=True)

    #save most recent tweets
    alltweets.extend(new_tweets)

    #save the id of the oldest tweet less one
    oldest = alltweets[-1].id - 1

    #keep grabbing tweets until there are no tweets left to grab
    while len(new_tweets) > 0:
      print 'getting tweets before %s' % (oldest)

        #all subsiquent requests use the max_id param to prevent duplicates
        new_tweets = api.user_timeline(screen_name = name, count=200, max_id=oldest, tweet_mode='extended')

        #save most recent tweets
        alltweets.extend(new_tweets)

        #update the id of the oldest tweet less one
        oldest = alltweets[-1].id - 1

        print "...%s tweets downloaded so far" % (len(alltweets))

    #transform the tweepy tweets into a 2D array that will populate the csv 
    outtweets = [[tweet.id_str, tweet.created_at, tweet.full_text.encode('utf-8')] for tweet in alltweets]
    tweet_time = [index[1] for index in outtweets]
    tweet_list = [index[2] for index in outtweets]

1 Ответ

0 голосов
/ 01 апреля 2019

Если вы замените

tweet.full_text

на

tweet.retweeted_status.full_text if tweet.full_text.startswith("RT @") else tweet.full_text

, вы получите полный текст ретвита, хотя без «RT» спереди, так что вы можете также захотетьдобавить еще один столбец в CSV для указания ретвитов, например:

[1 if tweet.full_text.startswith("RT @") else 0] for tweet in alltweets
...