【问题标题】:Tumblr API posting to secondary blogTumblr API 发布到二级博客
【发布时间】:2016-11-17 10:34:26
【问题描述】:

我正在尝试使用 Tumblr API 在我的辅助博客上发布一些内容。我正在使用Tumblpy Python 包,因为official Tumblr client 仅适用于 Python 2,而且它似乎已经被废弃了。

我授权了该应用程序并查看了Tumblr console,我从中获取了所有密钥。我开始玩弄它,我注意到我可以成功地发布到我的主博客,但不能在二级博客上(一直收到{TumblpyError} 404 'There was an error making your request.' 错误)。

这是我一直在尝试的代码:

from tumblpy import Tumblpy


def post_tumblr(
        url,
        comment='',
        tags='',
        **kwargs
):
    t = Tumblpy(
        APP_KEY, APP_SECRET,
        OAUTH_TOKEN, OAUTH_TOKEN_SECRET
    )

    blog_url = t.post('user/info')
    blog_url = blog_url['user']['blogs'][0]['url']  # POSTING TO PRIMARY BLOG WORKS
    # blog_url = blog_url['user']['blogs'][1]['url']  # CANNOT POST TO SECONDARY BLOG?

    post_url = t.post(
        'post',
        blog_url=blog_url,
        params={
            'type': 'video',
            'embed': url,
            'caption': comment,
            'tags': tags,
        }
    )

    return True

在 Tumblr API 中发布到二级博客有什么问题吗?

【问题讨论】:

    标签: python python-3.x tumblr


    【解决方案1】:

    这是一个有趣的问题。首先要注意的是,在 Tumblr API 中,任何blog.url 都是完整的 url,包括方案:http:// 或 https://。但是,在任何 /blog/{blog-identifier}/* API 请求中,它不接受完整的 url,只接受主机名:example.com 或 demo.tumblr.com。

    鉴于此信息,您的请求似乎 都不 应该起作用,所以我检查了 Tumblpy 的代码。事实证明,Tumblpy 确实接受了 {blog-identifier} 的完整 URL,方法是剥离除主机名之外的所有内容。但是,它仅适用于http:// url,而不适用于https:// url,如here 所示。

    如果您的博客启用了 SSL,url 字段将是 https:// 链接,然后 Tumblpy 将无法正确处理它。我假设您的辅助博客就是这种情况;你可以在你的settings page 上查看该博客。

    假设是这种情况,最好的解决方法是在调用Tumblpy.post() 之前自己构造主机名。只需使用user.blogs[i].name + ".tumblr.com"。或者,您也可以从 url 解析主机名。两种方法都行。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2014-02-16
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多