使用Twitter API v2获取最新推文/转推及转推完整文本的问题
调整方案
你现在用Twitter API v2拉取转推只能拿到截断文本,是因为API默认不会直接返回转推关联的原推文完整内容,需要调整请求参数并处理关联数据即可解决:
1. 调整请求参数
需要给client.get_users_tweets新增以下2个参数:
expansions:设置为referenced_tweets.id,用来告诉API同步拉取转推关联的原推文实体tweet_fields:除了已有的text,新增referenced_tweets字段,用来标识当前推文是否为转推,以及对应的原推文ID
调整后的请求代码如下:
tweets = client.get_users_tweets( id='xxxxxxxxxxx', tweet_fields=['text', 'referenced_tweets'], expansions=['referenced_tweets.id'] )
2. 处理返回的关联数据
API返回的关联原推文数据不会直接放在tweets.data里,而是存储在tweets.includes['tweets']中,你需要自行匹配关联获取完整文本,示例处理代码如下:
# 先把所有关联的原推文按ID存成字典方便查找 ref_tweets = {t.id: t for t in tweets.includes.get('tweets', [])} data = [] for tweet in tweets.data: # 检查当前推文是不是转推 if hasattr(tweet, 'referenced_tweets'): for ref in tweet.referenced_tweets: # 类型为retweeted就是普通转推,quoted是带评论的转推 if ref.type in ['retweeted', 'quoted']: # 拿到对应的原推文完整文本 full_text = ref_tweets[ref.id].text # 你可以按需拼接或者直接用原文本 processed_tweet = f"RT @{ref_tweets[ref.id].author_id}: {full_text}" data.append(processed_tweet) break else: # 普通原创推文直接加 data.append(tweet.text) print(data[0])
如果需要获取原推文作者的用户名等信息,可以再新增expansions参数referenced_tweets.id.author_id,同时补充user_fields参数获取对应用户信息即可。
内容的提问来源于stack exchange,提问作者Senpai
相关产品推荐
相关产品推荐

