【问题标题】:Get Tweets with Pictures using twitter search api使用 twitter search api 获取带有图片的推文
【发布时间】:2012-12-17 19:32:09
【问题描述】:

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

【问题讨论】:

    标签: twitter twitter4j twitter-search


    【解决方案1】:

    没有具体方法可以指定我只需要照片或视频,但您可以根据查询中的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"
    

    希望这会有所帮助。

    【讨论】:

    • 使用 filter:images 搜索不会返回任何结果。上面示例中的示例 google url 不会返回包含图像的推文,即使来自 google 的推文包含图像也是如此。我错过了什么吗?我删除了 filter:images 并返回推文,其中一些有图像。
    • 好的,我想通了。 filter:images 仅返回未直接通过 twitter 上传的图像,即 url 从 pic.twitter.com 开始的图像。所以我将我的查询修改为:'search.twitter.com/…'
    • 使用最新的 Twitter API 工作?
    • filter=images&include_entities=true 就像一个魅力,谢谢
    【解决方案2】:

    使用最新的 twitter API,我无法让过滤器正常工作,而且我在他们的文档中也找不到任何解释。尽管您可以获取所有推文,然后仅解析媒体推文。如果在您的解析脚本中,您可以触发它:

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

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

    【讨论】:

      【解决方案3】:

      在最新的 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();
      

      此外,启用实体后,在搜索字符串中您必须有条件“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 测试)。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-01
          • 1970-01-01
          • 2014-05-18
          • 2016-05-18
          • 2015-08-27
          • 2015-10-31
          • 2014-06-25
          相关资源
          最近更新 更多