2016-11-17 96 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解析主機名。這兩種方法都可行。