使用twitter search api获取推文图片

时间:2012-12-17 19:32:09

标签: twitter twitter4j twitter-search

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

4 个答案:

答案 0 :(得分:16)

没有具体方法可以指定我只需要照片或视频,但您可以根据查询中的filter:linksfilter:imagesfilter:videos以及{{1}过滤结果}}

例如:要获取包含自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

希望这有帮助。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分: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测试)。

答案 3 :(得分:0)

对于twitter API中的过滤器,您可以检查官方文档以获取截至2019年4月2日的最新版本

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