2016-11-17 8 views
1

私はTumblr APIを使用してセカンダリブログに何かを投稿しようとしています。 official Tumblr clientはPython 2のためだけであり、とにかく放棄されているので、Tumblpy Pythonパッケージを使用しています。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はスキーム:http://またはhttps://を含む完全なURLであることです。ただし、/blog/{blog-identifier}/* APIリクエストでは、は完全なURLを受け入れず、ホスト名:example.comまたはdemo.tumblr.comのみを受け入れます。

あなたのリクエストのはどちらもうまく動作しないようですので、Tumblpyのコードを少し調べました。 Tumblpyは、ホスト名以外のすべてを取り除いて、{blog-identifier}の完全なURLを受け入れることが判明しました。ただし、http://のURLでのみ動作し、hereと表示されているURLはhttps://ではありません。

SSLを有効にしたブログがある場合、urlフィールドはhttps://リンクになり、Tumblpyは正しく処理しません。私はこれがセカンダリブログの場合だと仮定しています。そのブログのsettings pageを確認できます。

これが当てはまる場合、最良の修正は、Tumblpy.post()を呼び出す前に、自分でホスト名を作成することです。ちょうどuser.blogs[i].name + ".tumblr.com"を使用してください。または、URLからホスト名を解析することもできます。いずれの方法も有効です。

関連する問題