代码之家  ›  专栏  ›  技术社区  ›  d2kagw

Flickr API返回重复照片

  •  4
  • d2kagw  · 技术社区  · 16 年前

    我在flickr API中遇到了一个令人困惑的问题。

    当我进行照片搜索(flickr.photos.search)并请求高页码时,我 通常会返回不同页码的重复照片。 这里有三个URL,每个URL应该返回三组不同的图像, 然而,奇怪的是,他们返回了同样的图像:

    http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=ca3035f67faa0fcc72b74cf6e396e6a7&tags=gizmo&tag_mode=all&per_page=3&page=6820
    http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=ca3035f67faa0fcc72b74cf6e396e6a7&tags=gizmo&tag_mode=all&per_page=3&page=6821
    http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=ca3035f67faa0fcc72b74cf6e396e6a7&tags=gizmo&tag_mode=all&per_page=3&page=6822
    

    还有其他人见过这个吗? 我似乎可以在任何标签搜索中重现这一点。

    干杯

    2 回复  |  直到 16 年前
        1
  •  7
  •   d2kagw    16 年前

    经过进一步调查,API中似乎有一个未经记录的“功能”,它永远不允许你从flickr返回4000多张照片。照片。搜索

    因此,虽然7444页可用,但它只允许您加载前1333页。

        2
  •  7
  •   Tarik    11 年前

    可以从flickr中检索4000多张图像;您的查询必须按(例如)时间范围分页,以便来自该查询的图像总数不超过4000。还可以使用其他参数(如边界框)来限制响应中的图像总数。

    例如,如果您正在使用标记“dogs”进行搜索,则可以执行以下操作(在时间范围内进行二进制搜索):

    1. 在请求url中指定最短日期和最长日期,例如1990年1月1日和2015年1月1日。
    2. 检查响应中的图像总数。如果大于4000,则将时间范围分成两部分,然后处理前半部分,直到从查询中获得的图像少于4000张。一旦你得到了这些,从这个时间范围请求所有的页面,然后移动到下一个时间间隔,并执行相同的操作,直到(a)满足所需的图像数量(b)在初始时间间隔内搜索所有图像。
    推荐文章