如何在搜索API中排除转推和回复?

25
11个回答

62

我认为以上内容是不正确的,你可以在搜索API中使用过滤器,但是文档非常缺乏(甚至不存在?)。

您的查询将变为:

?q=from:rioferdy AND -filter:retweets AND -filter:replies&count=20&result_type=recent

在这里获取了更多的筛选提示:如何掌握Twitter搜索:基本布尔运算符和筛选器


我认为这只会给您带来回复。请删除“-”并使用“filter:replies”来排除回复。 - kevando
谢谢您的回答。这正是我需要的。 - Văn Tuấn Phạm
尽管这是最受欢迎的答案,但随着v2 API的发布,它已经过时了。 - K. Thorspear

16

虽然这是一篇旧帖子,但仍有人可能会遇到它。

大多数查询运算符在此处记录:https://dev.twitter.com/rest/public/search

但是对于search/tweets方法,您还可以指定exclude:replies和/或exclude:retweets以从结果中过滤回复和转发。

只需在API控制台工具中测试它,自己看看即可。

额外奖励:另一个未记录的查询运算符是filter:verified,用于获取来自已验证用户的推文。

示例查询:cats filter:vine filter:verified exclude:replies exclude:retweets


这些内容中还有哪些是有效的吗?我根本无法使“排除:转推”起作用。 - John Rogerson
1
自从引入高级API以来,Twitter似乎已更改了其运算符: 标准搜索运算符: https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators 高级搜索运算符: https://developer.twitter.com/en/docs/tweets/search/guides/premium-operators - phuc77
有一些时间进行了更多的测试,似乎我使用 https://api.twitter.com/1.1/search/tweets.json 终点可以正常工作。-filter:replies 和 -filter:retweets 也有效。 - phuc77
快进到今天,我可以确认 exclude:retweets 仍然有效,但它也会排除包含 #RT 标签的推文。 - Viktor Brešan

16
在新的搜索推文API中,包括以下参数将删除不同类型的转发:
-is:retweet 排除转发
-is:quote 排除引用推文
-is:reply 排除回复
请参阅API文档:搜索推文-构建查询
只有Mike Chen的回答(奇怪的是,直到我点赞之前他的回答没有任何点赞)是正确的。这里其余的答案由于Twitter API v2的发布而过时了。我想在Mike的答案上进行评论,但我没有足够的声望。

抱歉,有时候这确实很麻烦,但唯一的选择就是等待您可以发表评论。 - Gert Arnold
@GertArnold %! - K. Thorspear
我使用了这三个过滤参数编写了一个查询,但仍然得到了不同作者ID的重复推文。 - OTM

7
非常晚的回复,和其他人一样,但我觉得这里保罗给出的第二个答案应该是“正确”的。我希望Twitter会更好地记录此内容,或者让它更为人知,但即使使用他们在2018年的标准API,您也可以进行大量的搜索过滤。

https://developer.twitter.com/en/docs/tweets/rules-and-filtering/overview/standard-operators

这里有一个相当全面的示例列表:),而转推位于中间位置。

-filter:retweets

6

是的,在搜索API中,您可以通过在搜索字符串(q)中添加-RT来排除转推内容。例如:search?q="#demo -RT"


我认为你的例子中有一个错误,是-RT还是_RT - Canis
2
@Canis,它是-RT。 - Prabin Kumar Das
这个对我有用,问题解决了! - Bas Slagter

6

5

1
现在我有足够的声望了--在发表此评论时,除了我提供的这个答案外,其他所有答案都已过时,因为它们没有使用 v2 API 的参数细节。 - K. Thorspear

3
根据官方文档,请传递以下参数exclude_replies=true

1
这是针对用户时间线的,而不是搜索API。 - user3344977

2
抱歉我来晚了。我同意Hitesh的观点,Twitter没有提供本地排除转推的方法,但是每个转推的推文在返回的json中都有一个转推对象。因此,您可以循环遍历您的推文,并排除任何具有retweeted_status类型为“object”的推文(表示它们是来自其他人的转推),或者保留那些类型为“undefined”的推文(表示它们是原创)。retweet_count = 0的问题在于像@pattonoswalt这样的用户会在他的所有推文上进行转推。因此,即使它们都是原创,计数也永远不会为零。

您可以在循环中使用以下内容:

if(typeof tweets[i].retweeted_status === 'object') {tweets.splice(i,1);}

或者

if(typeof tweets[i].retweeted_status !== 'undefined') {tweets.splice(i,1);}


1

没有直接的方法从API中排除转推和回复。但是,您可以过滤掉已经获取的结果。

对于回复,您可以检查从API获取的in_reply_to_status_id字段是否为null,这意味着它不是回复,否则如果它包含一个id,则是回复。

对于转推,如果您想要没有被转推过的帖子,您可以检查retweet_count=0,或者如果您想要没有被您验证的用户转推过的帖子,您可以检查retweeted=false。


我的结果中没有“转推”,即使已认证的账户转推了它。 - bugloaf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接