Tumblr API发布到辅助博客

2024-09-28 03:12:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Tumblr API在我的二级博客上发布一些东西。我使用的是TumblpyPython包,因为official Tumblr client只用于python2,而且似乎已经放弃了它。在

我授权了这个应用程序,然后查看了一下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

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


Tags: totokenappurlsecrettagscommenttumblr
1条回答
网友
1楼 · 发布于 2024-09-28 03:12:02

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

考虑到这些信息,您的请求似乎都不起作用,所以我检查了Tumblpy的代码。结果是Tumblpy确实接受{blog-identifier}的完整url,除去了主机名之外的所有内容。但是,它只适用于http://url,而不是{}url,如here。在

如果您有一个启用了SSL的博客,url字段将是一个https://链接,Tumblpy将无法正确处理它。我假设您的第二个博客就是这样;您可以在您的settings page上查看该博客。在

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

相关问题 更多 >

    热门问题