获取完整的转发推文
我正在使用Tweepy和Python来访问Twitter的API。
我想知道我遇到的问题是常见的,还是只有我一个人遇到。
我在存储一些推文。转发的推文是以这种格式存储的:
RT @User [text of the tweet]
我注意到,即使用户通过“转发”按钮转发了文本,文本总是以相同的格式存储(RT @User [推文内容]
)。当然,当Twitter API添加了“RT @user
”时,整个文本可能会超过140个字符,结果是它被存储了,但没有完整保存。
如果这个问题不是一个常见的错误,那么对于使用Tweepy的人来说,这个错误是来自Tweepy本身,还是来自Twitter的API呢?
2 个回答
1
这不是一个错误,而是正常的现象。引用一下推特的文档中关于“截断”字段的说明:
这个字段表示文本参数的值是否被截断了,比如因为转发的内容超过了140个字符的限制。被截断的文本会以省略号结束,像这样 ...
[...]
需要注意的是,虽然原生转发的顶层文本可能会被缩短,但原始文本可以在转发状态对象中找到,而截断参数通常会显示原始状态的值(在大多数情况下是false)。
5
转发推文是一种特殊的推文,它们有一个额外的部分,叫做 "retweeted_status
"。在这个转发推文中,原始的、没有修改过的推文内容其实是在这个 retweeted_status 的文本字段里,而不是像普通推文那样在最上面的文本字段里。
你可以试试下面的代码,
import tweepy
import urllib2
import json
consumer_key='#'
consumer_secret='#'
access_token_key='#'
access_token_secret='#'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)
api = tweepy.API(auth)
public_tweets = api.user_timeline(screen_name="@HandleHere",count=25,page=1,include_rts=True)
all_items=[]
[all_items.append(i) for i in public_tweets]
for i in all_items:
try:
if i.retweeted_status:
print i.retweeted_status.text
except:
pass
这段代码会打印出完整的转发推文内容。