获取完整的转发推文

3 投票
2 回答
5546 浏览
提问于 2025-04-18 05:18

我正在使用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

这段代码会打印出完整的转发推文内容。

撰写回答