为什么Tweepy说转推是一个引用?

时间:2018-05-24 07:21:08

标签: python python-3.x twitter tweepy

以下是重现问题的代码的简化版本:

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 :(得分:1)

转发是一条推文,推文可能引用另一条推文,因此推文可以引用推文。

在你的情况下:

推文ID 999280226994671616来自@vp。

这是来自@SecondLady(https://twitter.com/SecondLady/status/999275458796687360)的推文ID 999275458796687360的推文。

此推文引用了来自@SenEvanBayh(https://twitter.com/SenEvanBayh/status/999013390528937991)的推文ID 999013390528937991

要知道推文是否为RT,请检查状态是否具有retweeted_status属性。

这:

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

希望它有所帮助。