使用Twitter搜索API获取带图片的推文

9

是否可能获取包含照片的推文?我目前正在使用Twitter搜索API,通过设置include_entities=true获取所有具有实体详细信息的推文。我可以在媒体对象下看到图片详细信息,但是是否有任何方法可以过滤并获取仅具有这些媒体项目的推文对象?或者在Twitter4j中是否有进行此查询的方法?

4个回答

17

没有特定的方法指定我只需要照片或视频,但您可以通过在查询中使用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"
希望这可以帮助到您。

使用筛选器搜索图像没有返回任何结果。即使存在包含图像的谷歌推文,上面示例中的谷歌URL示例也不会返回这些推文。我是否漏掉了什么?我删除了filter:images,它返回一些带有图像的推文。 - Hemant P
1
我弄清楚了。filter:images 只返回那些不是直接通过 Twitter 上传的图片,也就是那些 URL 以 pic.twitter.com 开头的图片。所以我修改了查询语句,变成了以下这样:'https://search.twitter.com/search.json?q=pic.twitter.com%20OR%20filter%3Aimages%20from%3Agoogle%20since%3A2012-01-31&include_entities=true'。 - Hemant P
最新的 Twitter API 能正常工作吗? - Kiquenet
1
filter=images&include_entities=true 工作得非常好,谢谢。 - Nam Nguyen

2

最新的Twitter API中,我无法使筛选器起作用,也找不到任何解释。虽然你可以获取所有推文,然后仅解析媒体推文。您可以在解析脚本中使用以下代码:

```python if 'media' in tweet['entities']: # process media here ```
请注意保留原有的HTML标签。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接