Почему Твипи говорит, что ретвит - это цитата? - PullRequest
0 голосов
/ 24 мая 2018

Вот упрощенная версия кода для воспроизведения проблемы:

import tweepy
from tweepy import OAuthHandler

consumer_key    = '...'
consumer_secret = '...'
access_token    = '...'
access_secret   = '...'

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
tweepy_api = tweepy.API(auth)

status_id = 999280226994671616
status = tweepy_api.get_status(status_id, tweet_mode='extended')

print(status.user.screen_name) # Prints 'VP' as it should

if status.retweeted: # Is false, even though it's a retweet
    print('RETWEET:', status.retweeted_status.full_text)
elif status.is_quote_status: # Is true
    qstatus = tweepy_api.get_status(status.quoted_status_id, tweet_mode='extended')
    print(status.full_text, '\nQUOTE:', qstatus.full_text) # Doesn't print full text for either status
else:
    print(status.full_text)

Мне интересно, правда ли причина is_quote_status в том, что ретвит содержит цитату.Как мне определить, является ли статус ретвитом, тогда?

Это вторичная проблема, но, как отмечают мои комментарии, он также не отображает полный текст (он прекрасно работает, когда статус неретвит или цитата).Что я делаю не так?

1 Ответ

0 голосов
/ 25 мая 2018

Ретвит - это твит, и твит может цитировать другой твит, поэтому ретвит может цитировать твит.

В вашем случае:

Идентификатор твита 999280226994671616 от @vp.

Это ретвит идентификатора твита 999275458796687360 от @SecondLady (https://twitter.com/SecondLady/status/999275458796687360).

И этот твит цитирует идентификатор твита 999013390528937991 от @SenEvanBayh (https://twitter.com/SenEvanBayh/status/999013390528937991)

Чтобы узнать, является ли твит RT, проверьте, имеет ли статус атрибут retweeted_status.

This:

status_id = 999280226994671616
status = tweepy_api.get_status(status_id, tweet_mode='extended')

print ('status.id_str:' + status.id_str)
print ('status.user.screen_name:@' + status.user.screen_name)
print()

if hasattr(status, 'retweeted_status'):
    print ('status.retweeted_status.user.screen_name:' + status.retweeted_status.user.screen_name)
    print ('status.retweeted_status.id_str:' + status.retweeted_status.id_str)
    print()

    qstatus = tweepy_api.get_status(status.retweeted_status.quoted_status_id, tweet_mode='extended')
    print ('qstatus.id_str:' + qstatus.id_str)
    print ('qstatus.user.screen_name:@' + qstatus.user.screen_name)
    print()

выведет:

status.id_str:999280226994671616
status.user.screen_name:@VP

status.retweeted_status.user.screen_name:SecondLady
status.retweeted_status.id_str:999275458796687360

qstatus.id_str:999013390528937991
qstatus.user.screen_name:@SenEvanBayh

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...