2016-11-17 107 views
1

我想使用的tumblr API才能发布到我的博客中学。我正在使用Tumblpy Python包,因为official Tumblr client仅适用于Python 2,无论如何它似乎都被放弃了。的tumblr API张贴到博客二次

我授权应用程序,我看了看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张贴到博客次要?

回答

1

这是一个有趣的一个。首先要注意的事情是的tumblr的API,任何blog.url是一个完整的URL,包括方案:http://https://。然而,在任何/blog/{blog-identifier}/* API请求,它接受完整的URL,仅主机名:example.comdemo.tumblr.com

鉴于此信息,它似乎您的请求都不应该工作,所以我检查了一下Tumblpy的代码。事实证明,Tumblpy确实接受了一个{blog-identifier}的完整网址,通过去除除主机名以外的所有内容。但是,它只能与http://的网址,而不是https://网址的作品,如看到here

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

假设是这种情况,最好的修补程序将只是自己构建的主机名调用Tumblpy.post()之前。只需使用user.blogs[i].name + ".tumblr.com"即可。或者,你也可以从URL解析主机名。这两种方法都可行。