【问题标题】:Get all unique tags from tumblr blog从 tumblr 博客获取所有独特的标签
【发布时间】:2012-07-04 18:05:03
【问题描述】:

根据Tumblr API V2

,有一些方法可以使用标签从您的 Tumblr 博客和副 Versa 中获取帖子和其他详细信息

我想获取所有标签(唯一标签)的列表,与博客文章无关

如果我有 10 个帖子标记为 TechnologyWeb3 个帖子标记为 JavaScript, Web - 我想以这样的方式查询我的博客,它给了我TechnologyWebJavaScript

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

【问题讨论】:

    标签: javascript tumblr


    【解决方案1】:

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

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

    从中获取响应并将其解码为一个对象(jQuery、extjs、w/e 都可以),您可以找到帖子总数的 posts 字段。使用它,您可以使用/posts 方法开始一次拉回20 个帖子,根据API 的最大值。网址是:

    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。感谢您的回复。这似乎是目前唯一的方法
    • @OmShankar,这确实是唯一的方法。但是,注意:您实际上可以通过在查询字符串中指定 &limit=50 并每次将 offset 增加 50 来一次获取 50 个帖子 :)这是一个未记录的 API 功能。
    • 还有一个注意事项:known bug 表示 帖子总数(在调用 api.tumblr.com/v2/blog/{base-hostname}/info?... 返回的字段 posts 中经常不正确。此外,调用api.tumblr.com/v2/blog/.../posts 还会返回一个名为total_posts 的字段,并且这个数字 也经常不正确。它会让你到达接近总计,但不要指望它是准确的。
    • @FelixBonkoski 两者都很好。一次 50 对 25 个帖子可能会对某些博客产生巨大影响。这个错误有点痛苦=/您可以通过检查您的预期结果#与您实际返回的结果来处理它,但如果他们只是修复它会更干净=)
    • 感谢大家提供宝贵的信息。我实际上想使用 JS/jQuery 为最常用/最喜欢的标签动态创建菜单。这样当用户访问我的博客时,用户可以直接跳转到这些标签,从而避免混乱。但现在我想,我应该对菜单项进行硬编码
    【解决方案2】:

    我对它的工作原理一无所知,但确实如此:看看Tumblr tag list bookmarklet。应该至少给你一些你可以使用的代码。

    【讨论】:

    • 它只适用于编辑/创建帖子。那时 Tumblr 给你一个 JS 对象,这个对象已经填充了独特的标签
    【解决方案3】:

    我知道这是一篇旧帖子,但我认为它可能对某些人有用,因为我已经花时间将其制作成一个 javascript,它将所有唯一标签作为 javascript 对象返回。

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

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多