我从未使用过 Tumblr API,但看起来您应该能够构建标签列表 - 但没有内置方法。首先,您必须通过查询/info
方法1来查找博客中的帖子总数。网址是:
api.tumblr.com/v2/blog/{base-hostname}/info?api_key={key}
从中获取响应并将其解码为一个对象(jQuery、extjs、w/e 都可以),您可以找到posts
帖子总数的字段。使用该方法,您可以开始一次拉回 20 个帖子,根据 API 的最大值,使用该/posts
方法。网址是:
api.tumblr.com/v2/blog/{base-hostname}/posts[/type]?api_key={key}&[optional-params=]
您可能想省略/type
,但您需要offset
在可选参数中指定。使用偏移量,您可以一次处理 20 个2的所有帖子,直到您全部下载它们(从/info
查询中获得的数字)。当您下载帖子时,只需跟踪您获得的标签。
不幸的是,您必须下载帖子的正文才能获取标签列表,但我没有看到任何其他方法可以为您提供标签,或者选择隐藏正文并仅查看元数据帖子。
**编辑**
1:根据 Felix 的评论,/info
已知帖子返回的数量有时会略有下降。在预期数字很高的情况下,您需要确保只循环您实际收到的结果,而不是您预期的结果。要处理预期数字较低的情况,您可以在结束后进行一次查询,看看是否得到任何结果。在这一点上,尽管您可能会考虑将/info
查询全部删除并仅查询/posts
直到您不再获得任何结果。
2:根据 Felix 的第二条评论,即使 API 列出了您可以一次拉出多少帖子的值范围(1-20
默认20
情况下),据推测它最多可以接受50
. 一次提取 50 个结果可以加快/降低带宽,但它会使你的代码更复杂,无法正确执行。由于它是一个未记录的功能(阅读:可能只是一个错误),因此无法保证它会继续工作。因此,您可以尝试一次查询 50 个,但需要准备好处理400
错误代码或类似的东西,以防他们的服务与 API 匹配,然后默认返回 20。