如何在搜索 api 中排除转发和回复?

Posted

技术标签:

【中文标题】如何在搜索 api 中排除转发和回复?【英文标题】:How to Exclude retweets and replies in a search api? 【发布时间】:2015-03-12 13:51:42 【问题描述】:

我正在尝试使用搜索 api 从 twitter 获取提要,结果我也收到了回复和转发。

所以我想排除回复和排除。

如何做任何人帮助我。

这是我的网址:

https://api.twitter.com/1.1/search/tweets.json?q=from:rioferdy5&count=20&result_type=recent

【问题讨论】:

【参考方案1】:

没有直接的方法可以从 api 中排除转发和回复。但是,您可以过滤掉您得到的结果。

对于回复,您可以检查您从 api 获得的in_reply_to_status_id 字段是否为空,这意味着它不是回复,否则如果它包含一个 id,那么它就是一个回复。

对于转发,如果您想要从未转发过的帖子,您可以检查retweet_count = 0 或者如果您想要您的认证用户尚未转发的帖子,您可以检查retweeted = false

【讨论】:

我的结果中没有“转发”,即使经过身份验证的帐户转发了它。【参考方案2】:

我相信以上是不正确的,您可以在搜索 API 中使用过滤器,但文档很差(不存在?)。

您的查询将变为:

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

更多过滤技巧在这里获得:How to Master Twitter Search: Basic Boolean Operators and Filters

【讨论】:

我相信这只会让您回复。删除 - 并使用“过滤器:回复”排除回复 感谢您的回答。这正是。【参考方案3】:

根据official documentation

传递以下参数exclude_replies=true

【讨论】:

这是针对用户的时间线,而不是搜索 API。【参考方案4】:

对不起,我在这里聚会迟到了。我同意 Hitesh 的观点,因为他们没有提供一种本地排除转发的方法,但是每条转发的推文在返回的 json 中都有一个转发对象。因此,您可以遍历您的推文并排除任何具有 retweeted_status typeof 'object' 的推文(意味着它们是来自其他人的转发)或保留那些具有 typeof '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);

【讨论】:

【参考方案5】:

旧帖子,但人们可能仍会偶然发现它。

这里记录了大多数查询运算符:https://dev.twitter.com/rest/public/search

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

只需在API Console Tool 中测试它,然后自己看看。

奖励:另一个未记录的查询运算符是 filter:verified,用于从经过验证的用户那里获取推文。

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

【讨论】:

这些仍然有效吗?我无法排除:转推完全可以工作 自从引入高级 API 以来,他们似乎改变了他们的运算符:标准搜索运算符:developer.twitter.com/en/docs/tweets/search/guides/… 高级搜索运算符:developer.twitter.com/en/docs/tweets/search/guides/… 有时间进行更多测试,似乎使用api.twitter.com/1.1/search/tweets.json 端点对我有用。 -filter:replies 和 -filter:retweets 也可以。【参考方案6】:

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

【讨论】:

我认为您的示例 -RT_RT 中有错误? @Canis,它的-RT 这个为我修好了!【参考方案7】:

回复很晚,和其他人一样,但我觉得保罗在这里的第二个回答应该是“正确”的一个。我希望 twitter 能更好地记录这一点,或者让它更广为人知,但是你可以做大量的搜索过滤器,即使在 2018 年使用他们的标准 API。

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

这是一个相当全面的示例列表 :) 转发在中间的某个地方。

-filter:retweets

【讨论】:

【参考方案8】:

官方文档中记录了这是允许的

puppy -filter:retweets  containing “puppy”, filtering out retweets

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

【讨论】:

【参考方案9】:

只需使用 nitter.net 它允许您从搜索结果中排除某些内容(通过其搜索栏右端的高级搜索选项),它甚至提供自己的 RSS 提要。最重要的是,它扩展了这些 t.co 短 URL,并将 youtube URL 替换为 invidio.us URL

最后,您可以通过名为 Huginn 的自托管界面将您的 RSS 提要用作其他网络小程序的触发器

【讨论】:

【参考方案10】:

在新的 v2 API 中搜索如何执行此操作时发现此问题,现在是 puppy -is:retweet -is:reply(也不再需要 ANDs)

https://developer.twitter.com/en/docs/twitter-api/tweets/search/integrate/build-a-query#list

【讨论】:

【参考方案11】:

在新的 Search Tweets API 中,包含以下参数将删除不同风格的转发:-is:retweet 排除转发-is:quote 排除引用推文-is:reply 排除回复

请在此处查看 API 文档:Search Tweets - Build a Query

只有 Mike Chen 的回答(奇怪的是,在我投票之前只有 0 个投票)是正确的。由于 Twitter API v2 的推出,此处的其余答案已过时。我会直接评论迈克的回答,但我没有足够的声誉。

【讨论】:

抱歉,我知道这有时很麻烦,但唯一的选择就是等到您可以发表评论。 @GertArnold ?%!

以上是关于如何在搜索 api 中排除转发和回复?的主要内容,如果未能解决你的问题,请参考以下文章

回复/转发/发送时如何在主题中添加特定的附件名称?

如何获取喜欢我的推文的用户列表和引用转发我的推文的用户列表?

拉钩网如何搜索求职者简历。

如何在使用 SQL 的重复搜索中排除其他值中的值

如何从 git grep 搜索中排除某些目录/文件

如何忽略已在 Tweepy 中转发的推文?