Instagram的GET/tags/<tag>/media/recent Pagination是如何工作的?

 卖女孩的小方子 发布于 2023-02-09 23:31

我试图使用实时图片动态 API来获取具有特定标签的所有照片,因为他们进来,因为从这个API的更新真的只能告诉你的是新的内容存在(但不是什么它是),我查询每当我收到有关某些内容发生变化的通知时,对于带有我标记的最近媒体

我遇到的问题是我经常收到该查询返回的重复媒体.文档说这个API做了分页,但我根本无法工作.

这里的文档说使用min_idmax_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_url属性max_tag_id,而不是max_id像文件说.

还有一个弃用警告声明next_max_id并且min_id已弃用,但由于分页对象中有属性,因此我不知道查询参数或对象属性是否已弃用.

我认为这意味着属性,因为查询字符串从未使用过参数next_max_id,但随后弃用消息表示使用min_tag_id并且在分页对象上max_tag_id没有max_tag_id属性(只是a next_max_tag_id).

无论所有这些相互矛盾的文档如何,我在查询字符串中传递的内容似乎并不重要 - 我继续在后续查询中获得重复媒体.有人可以帮我理解这个API吗?我真正想要的是获得自我上次查询以来新标记的媒体.

2 个回答
  • @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"表示"更老"的方式.

    2023-02-09 23:59 回答
  • 要获取特定标记的最新克数,请使用以下代码:

    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参数(也在分页下)获取下一个(较旧的)克数,如下所示:

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

    确保您的后续查询(对于特定标记的新克)使用min_tag_id最新响应返回的查询.我做了一些测试,并没有看到重复,但我使用的是#latergram而且那个帖子数量很大

    2023-02-10 00:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有