23

我正在尝试使用实时照片更新API 来获取所有带有特定标签的图片。因为来自这个 API 的更新实际上只告诉你内容的存在(但不是它是什么),我正在查询每当我收到有关某些事情发生变化的通知时,对于带有我的标签的最近媒体。

我遇到的问题是我不断收到该查询返回的重复媒体。文档说这个 API 可以分页,但我根本无法让它工作。

这里的文档说要在查询字符串中使用min_idandmax_id来控制分页,但是它说:

  • MIN_ID - 在此 min_id 之前返回媒体。

  • MAX_ID - 在此 max_id 之后返回媒体。

这似乎是倒退的(通常 min 应该返回高于最小值的项目,而 max 应该返回低于最大值的项目,这样当你指定两者时,你会得到一个有界范围)。

我从查询中得到的实际 JSON 包括一个这样的分页对象:

"pagination":  {
    "next_max_tag_id": "1387272337517",
    "deprecation_warning": "next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
    "next_max_id": "1387272337517",
    "next_min_id": "1387272345517",
    "min_tag_id": "1387272345517",
    "next_url": "https://api.instagram.com/v1/tags/cats/media/recent?access_token=xxx&max_tag_id=1387272337517"
}

属性中指定的参数next_urlmax_tag_id,不是max_id不像文档说的那样。

还有一个弃用警告指出next_max_idmin_id已弃用,但由于分页对象中有类似名称的属性,我不知道查询参数或对象属性是否已弃用..

我认为这意味着属性,因为查询字符串从未使用 的参数next_max_id,但是弃用消息说要使用min_tag_idandmax_tag_id并且分页对象上没有max_tag_id属性(只是 a next_max_tag_id)。

不管所有这些冲突的文档如何,我在查询字符串中传递的内容似乎都无关紧要——我在后续查询中继续获得重复媒体。有人可以帮我理解这个 API 吗?我真正想要的只是获得自上次查询以来新的标记媒体。

4

2 回答 2

22

要获取特定标签的最新克数集,请使用以下命令:

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN

从该响应中,您可以通过从响应中获取更新的克min_tag_id(在分页下)并构建一个如下所示的 url:

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&min_tag_id=1387332980547

或者,您可以使用原始响应(也在分页下)中的 next_url 参数获取下一组(较旧的)gram,如下所示:

https://api.instagram.com/v1/tags/latergram/media/recent?access_token=TOKEN&max_tag_id=1387332905573

确保您的后续查询(针对特定标签的新克)正在使用min_tag_id最新响应返回的内容。我做了一些测试并没有看到重复,但是我使用的是#latergram,并且那个帖子有大量的帖子

于 2013-12-17T18:22:52.837 回答
7

@zachallia 已经回答了现场,但我认为它不会对草图造成伤害:

正如Instagram API 所说 MIN_TAG_ID Return media before this min_tag_id. MAX_TAG_ID Return media after this max_tag_id.

这是违反直觉的,带有轻微的坚果味。但是,仍然可以理解它。

/tags/MYTAG/media/recent端点将为您提供克数,按使用 MYTAG 标记的新近程度排序。当然,你不会得到所有的克数,只会达到 Instagram 设定的限制:

|yesteryear ------------------ <---- LIMIT ----> now|

如果你min_tag_id像这样使用,/tags/MYTAG/media/recent?min_tag_id=X你会从 X 和之前(又名更早)获得克数:

|yesteryear ------- <---- LIMIT ---> min ------- now|

如果你max_tag_id像这样使用,/tags/MYTAG/media/recent?max_tag_id=Y你会从 Y 和之后(又名更新)获得克数:

|yesteryear ------- max <---- LIMIT ---> ------- now|

这就是“max”如何表示“较新”而“min”如何表示“较旧”。

于 2016-05-12T21:00:55.433 回答