5

我已经用包含连字符的标签标记了 700 多篇博客文章,这些标签在 2011 年突然停止工作,因为 Tumblr 决定(没有任何通知)禁止标签中的连字符(我猜连字符现在被阻止了,因为标签中的空格(允许) 改为连字符。)。不幸的是,Tumblr 不愿意全局重命名所有包含连字符的标签(尽管这些标签不再有用 → 404)。

现在我想自己重命名我的标签。

我尝试使用“大量帖子编辑器”( tumblr.com/mega-editor) 来完成此操作,但无法按标签选择帖子。我必须在发布后手动选择帖子并查看是否使用了某个标签,如果是,请将其删除并添加一个新标签。这将是一项巨大的工作(700 个标记的帖子,但总共超过 1000 个)。

所以我认为Tumblr API可能会对我有所帮助。我不是程序员,但如果我能在这里得到一些帮助作为起点,我愿意深入研究它。

我想我需要以下过程:

  1. 选择所有带有标签的帖子x(=包含连字符的标签)
  2. y用(=不带连字符的标签)标记所有这些帖子
  3. 删除x所有这些帖子上的标签

我会手动为每个受影响的标签启动这个过程。


我看到该方法(或您所称的任何方法)/post知道请求参数tag

限制对具有指定标签的帖子的响应

(我想我只能希望这也适用于包含连字符的标签。)

之后,我需要一种从该结果集中添加和删除标签的方法。/post/edit没有说任何关于标签的事情。我错过了什么?是否可以使用 API 添加/删除标签?


您知道如何“轻松”重命名我的标签吗?

API可以吗?你能给我一个起点,小费等。我怎么能做到这一点?


我不知道这是否有帮助,但我注意到搜索功能仍然能够找到带有包含连字符的标签的“标记”帖子。

示例:假设我有标签foo-bar。它与/tagged/foo-bar(→ 404) 链接。我可以找到带有的帖子/search/foo-bar(但这当然不理想,因为它也可能会找到包含(在正文中)与标签名称相似/相等的单词的帖子)。

我试图对连字符 ( /tagged/foo%2Dbar) 进行编码,但没有运气。

4

2 回答 2

4

just for the record, because this is a popular google search: i've done it! you can use it at http://dev.goose.im/tags/.

i used a combo of PHP and jquery, basing my jquery off of a previous tumblr api script i wrote a year or two ago, and used this tumblr php oauth script for the authentication. if anyone wants me to put up the source code, i'd be happy to.

于 2013-10-24T23:12:52.077 回答
1

如果你不是程序员,你的时间对你来说值多少钱?正如他们所说,时间就是金钱。您不仅要弄清楚如何使用 API,还要选择一种语言并学习用它来编写。这不是一项小任务。你可以以 50 美元的价格为自由职业者提供一个小时的工作。

要回答您的问题,是的,可以使用 API 执行此操作。它提到“这些参数用于 /post、/post/edit 和 /post/reblog 方法。” 并被tags提及为一串逗号分隔的单词。

您要做的是使用该/posts方法获取每篇博客文章的列表。您需要查看“请求”部分以找出传递给此 URL 的条件。您希望它尽可能通用,以获取所有帖子的完整列表。

获得帖子列表后,您需要对其进行迭代并修改tags每个帖子的响应中提供的参数。您需要将id参数与 一起使用/post/edit,它再次tags作为字符串使用。

您可以用于此任务的最简单的语言是 PHP。您需要查看curl 扩展来提出您的请求。你会想要阅读数组,因为你会经常使用它们。您还需要查看explodeimplodestr_replace(用于破折号)和foreach以迭代结果。

当你这样做时,我强烈建议你在 foreach 循环结束时使用break ,这样一开始它只会影响一个帖子。首先测试它很重要,因为您不想意外删除您的标签/帖子。printvar_dump是帮助您调试代码的好方法。xdebug是一个不错的扩展,它允许您在代码运行时逐行单步执行。Netbeans是一个具有良好 xdebug 支持的 IDE。

这里还有一个不错的页面可以帮助您开始使用 PHP。你需要在你的机器上安装 PHP。您不需要安装 Web 服务器 - 对于这个 PHP-CLI(命令行)sapi 就足够了。

于 2012-11-20T05:05:03.490 回答