是否可以获得包含照片的推文?我目前正在使用twitter 搜索 api,并通过设置 include_entities=true 来获取所有具有实体详细信息的推文。我在媒体对象下看到图片详细信息,但无论如何都可以过滤和获取只有这些媒体项目的推文对象。还是在 Twitter4j 中无论如何都可以执行此查询?
4 回答
没有具体方法可以指定我只需要照片或视频,但您可以根据filter:links
或filter:images
或filter: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"
希望这可以帮助。
使用最新的 twitter API,我无法使用过滤器,也无法在他们的文档中找到任何解释。尽管您可以获取所有推文,然后仅解析媒体推文。如果在您的解析脚本中,您可以触发它:
if(this.entities.media != null){
//Parse the tweet
}
这不是最好的解决方案,但最糟糕的部分是 twitter,它为您提供更多信息并使用更多自己的资源。
在最新的 Twitter API 中,您可以在 ConfigurationBuilder 实例中执行此操作,然后再创建 Twitter 实例:
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();
此外,启用实体后,在搜索字符串中您必须具有条件“过滤器:图像”。
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 测试)。
对于 twitter API 中的过滤器,您可以查看截至 2019 年 4 月 2 日的最新版本的官方文档
https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators.html