PythonスクリプトからTumblrに画像を投稿してみたメモ
使用するライブラリをインストールします
pip install python-tumblpy
https://github.com/michaelhelmick/python-tumblpy
手順2
以下のスクリプトを実行して、oauth_tokenとoauth_token_secret、auth_urlを取得します
from tumblpy import Tumblpy OAuth_Consumer_Key = "手順1で取得したOAuth Consumer Key" Secret_Key = "手順1で取得したSecret key" t = Tumblpy(app_key OAuth_Consumer_Key, app_secret=Secret_Key) auth_props = t.get_authentication_tokens() auth_url = auth_props['auth_url'] oauth_token = auth_props['oauth_token'] oauth_token_secret = auth_props['oauth_token_secret'] print auth_url print oauth_token print oauth_token_secret
手順3
手順2で取得したauth_urlにブラウザからアクセスして、「許可」を選択します。
リダイレクトされてエラーページに飛ばされますが、リダイレクト先のURLのクエリパラメータにoauth_verifierがありますので、この値をメモしておきます。
手順4
手順2で取得したoauth_token、oauth_token_secret、手順3で取得したoauth_verifierを使って以下のスクリプトを実行します。
このスクリプトで得られた2つのトークンを使って、Tumblr投稿を行いますので、メモしておきます。
from tumblpy import Tumblpy OAuth_Consumer_Key = "手順1で取得したOAuth Consumer Key" Secret_Key = "手順1で取得したSecret key" oauth_token = "手順2で取得したoauth_token" oauth_token_secret = "手順2で取得したoauth_token_secret" t = Tumblpy(app_key = OAuth_Consumer_Key, app_secret = Secret_Key, oauth_token=oauth_token, oauth_token_secret=oauth_token_secret) oauth_verifier = "手順3で取得したoauth_verifier" authorized_tokens = t.get_access_token(oauth_verifier) final_oauth_token = authorized_tokens['oauth_token'] final_oauth_token_secret = authorized_tokens['oauth_token_secret'] print final_oauth_token print final_oauth_token_secret
手順5
ローカルにある画像をpostしてみます
from tumblpy import Tumblpy OAuth_Consumer_Key = "手順1で取得したOAuth Consumer Key" Secret_Key = "手順1で取得したSecret key" oauth_token = "手順4で取得したoauth_token" oauth_token_secret = "手順4で取得したoauth_token_secret" t = Tumblpy(app_key = OAuth_Consumer_Key, app_secret = Secret_Key, oauth_token=oauth_token, oauth_token_secret=oauth_token_secret) blog_url = t.post('user/info') blog_url = blog_url['user']['blogs'][0]['url'] files = open('/path/to/image_file', 'rb') post = t.post('post', blog_url=blog_url, params={'type':'photo', 'caption': 'Test Caption'}, files=files)
これでtumblrに画像投稿できました。
web上にある画像を投稿する場合は、paramsにsourceとしてURLを指定するとうまくいくようです
post = t.post('post', blog_url=blog_url, params={'type':'photo', 'caption': "Test Caption, 'source': 'http://exapmle.com/img/test_image.jpg' })