为什么 Tweepy 说转发是引用?
Why is Tweepy saying a retweet is a quote?
这是重现问题的简化代码版本:
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
的原因是否正确是因为转推包含引用。那么如何检测状态是否为转发呢?
这是次要问题,但正如我的评论所指出的,它也没有显示全文(当状态不是转推或引用时它就很好)。我做错了什么?
转推就是一条推文,一条推文可以引用另一条推文,所以转推可以引用一条推文。
你的情况:
推文 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
希望对您有所帮助。
这是重现问题的简化代码版本:
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
的原因是否正确是因为转推包含引用。那么如何检测状态是否为转发呢?
这是次要问题,但正如我的评论所指出的,它也没有显示全文(当状态不是转推或引用时它就很好)。我做错了什么?
转推就是一条推文,一条推文可以引用另一条推文,所以转推可以引用一条推文。
你的情况:
推文 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
希望对您有所帮助。