如何在搜索 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
(也不再需要 AND
s)
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 中排除转发和回复?的主要内容,如果未能解决你的问题,请参考以下文章