从tumblr博客中获取所有唯一标签

3

有多种方法可以使用标签从您的Tumblr博客获取发布和其他详细信息,反之亦然,具体请参见Tumblr API V2

我想获得所有标签(唯一标签)的列表,而不考虑博客帖子

所以,如果我有 10 篇帖子标记为 Technology Web 3 篇帖子标记为 JavaScript Web - 我想以这样的方式查询我的博客,以便它给出 Technology Web JavaScript

例如,一个数组- results.posts.tags = ["Technology", "Web", "JavaScript"] 或者是一个对象,我可以深入挖掘以找到 tags ,然后在循环中迭代。

3个回答

3

我从未使用过Tumblr API,但看起来你应该能够构建标签列表 - 但是没有内置的方法。首先,您需要通过查询/info方法1找到博客中的帖子总数。其URL为:

api.tumblr.com/v2/blog/{base-hostname}/info?api_key={key}

通过解码响应成对象 (jQuery,extjs等都可以),你可以找到posts字段,得到总帖子数。使用该数值,你可以每次拉取20篇文章,最大数量依据API规定,使用/posts方法。其URL为:

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。

那是我不想采取的明显最后手段。我不想通过循环等方式来查询并使我的JavaScript变得紧张。谢谢回复。现在似乎这是唯一的方法。 - Om Shankar
1
@OmShankar,这确实是唯一的方法。但是,需要注意的是:您可以在查询字符串中指定“&limit=50”,每次增加50个偏移量,从而一次获取50篇文章 :) 这是一个未记录的API功能。 - Felix
2
另外需要注意的是:这是一个已知的错误,即从调用api.tumblr.com/v2/blog/{base-hostname}/info?...返回的posts字段中的“总帖子数”经常是不正确的。此外,调用api.tumblr.com/v2/blog/.../posts也会返回一个名为total_posts的字段,而且这个数字也经常是不正确的。它可以让你接近总数,但不要指望它是准确的。 - Felix
@FelixBonkoski 对两者都有很好的注释。在某些博客上,每次发布50篇与25篇文章可能会产生巨大的差异。而且这个错误有点痛苦 =/ 你可以通过检查预期的结果数量与实际返回的结果数量来处理它,但如果他们修复了它,那就会更加干净整洁 =) - Windle
感谢大家提供的宝贵信息。我想使用JS/jQuery动态创建菜单,以显示最常用/最喜欢的标签。这样,当用户访问我的博客时,用户可以直接跳转到这些标签,避免混乱。但现在我认为,我应该硬编码菜单项。 - Om Shankar
@OmShankar 硬编码可能有效,除非您使用的标签经常更改。另一个想法是选择一个时间间隔(每晚?)运行一个Java应用程序/Shell脚本/Ruby脚本/适用于您系统的任何内容,以找出常见标签并将它们放入数据库表中。然后在页面加载时进行一些AJAX,并拉取“当前”最常用的标签。当然,标签列表可能会过时几个小时到一天,但这样您的用户不必每次加载页面时等待。 - Windle

0

我知道这是一篇旧帖子,但我认为对于一些人来说可能会有用,因为我花时间将其制作成一个JavaScript,该JavaScript将所有唯一标签作为JavaScript对象返回。

https://github.com/scintillate/tumblrtag/


0

我不知道它是如何工作的,但它确实可以:看看Tumblr标签列表书签。应该至少能给你一些可以使用的代码。


它只在编辑/创建帖子时起作用。此时Tumblr会提供一个已填充了唯一标签的JS对象。 - Om Shankar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接