使用twitter search api获取推文图片

问题描述 投票:8回答:4

是否可以获得包含照片的推文?我目前正在使用twitter search api并通过设置include_entities = true获取所有推文的实体细节。我在媒体对象下看到图片细节,但无论如何都要过滤并获取只有这些媒体项的推文对象。或者在Twitter4j中有没有做这个查询?

twitter twitter4j twitter-search
4个回答
16
投票

没有特定的方法来指定我只需要照片或视频,但您可以在查询中使用filter:linksfilter:imagesfilter:videos以及include_entities=true过滤结果。

例如:要获取包含自2012-01-31以来的链接的推文,您查询应该具有include_entities参数以及filter:links,如下所示:

https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Alinks&include_entities=true"

由于您需要根据图像/照片过滤您的推文,我认为您应该使用filter:images

您的案例示例如下:

https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Aimages&include_entities=true"

希望这可以帮助。


2
投票

使用最新的Twitter API,我无法使过滤器工作,我在他们的文档中找不到任何解释。虽然你可以得到所有的推文,然后只解析媒体。如果在解析脚本中,您可以触发它:

if(this.entities.media != null){
  //Parse the tweet
}

这不是最好的解决方案,但最糟糕的部分是Twitter,它会为您提供更多信息并使用更多自己的资源。


0
投票

在最新的Twitter API中,您可以在创建Twitter实例之前在ConfigurationBuilder实例中执行此操作:

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(false);
cb.setOAuthConsumerKey(API_KEY);
cb.setOAuthConsumerSecret(API_SECRET);
cb.setOAuthAccessToken(ACCESS_TOKEN);
cb.setOAuthAccessTokenSecret(SECRET_KEY);
// enabling include_entities parameters
cb.setIncludeEntitiesEnabled(true);
Twitter twitterInstance = new TwitterFactory(cb.build()).getInstance();

此外,在启用实体后,在搜索字符串中您必须具有条件“filter:images”。

List<String> keywords = new ArrayList<String>();
keywords.add("#pet");
keywords.add("cat");
// String.join for Java 8
String twitterSearchString = "((" + String.join(" OR ", keywords) + ")";
// adding the filter condition
twitterSearchString  += " AND filter:images)";
Query q = new Query(twitterSearchString);

你将获得图像的结果(用twitter4j-core 4.0.4测试)。


0
投票

对于twitter API中的过滤器,您可以查看官方文档的最新版本,日期为2019年4月2日

https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators.html

© www.soinside.com 2019 - 2024. All rights reserved.