Pythonista3でTumblr API。URL scheme経由でTumblrに投稿
TumblrアプリのURL schemeがいつの間にか使えなくなった
いつの間にか、TumblrアプリのURL schemeが効かなくなり、アプリの起動しかできなくなっていました。
tumblr://x-callback-url/text?title=&body=&tags=
Textwellで作成した記事を、上記のURL scheme経由で投稿していたのですが、呼び出してもアプリが開くだけ。
仕方がないので代替策として、Tumblr APIを利用することにしました。
Tumblr APIの利用にはOauth認証が必要です。
そのため、Textwell → Pythonista3 を経由してTumblr APIから投稿します。
Textwell 1.7.2
分類: 仕事効率化,ユーティリティ
2017/9/26現在の価格: ¥360 (Sociomedia)
Pythonista 3 3.1
分類: 仕事効率化,教育
2017/9/26現在の価格: ¥1,200 (omz:software)
Pythonista3からTumblr APIを利用する
以下のページから利用登録をします。
https://api.tumblr.com/console/
Pythonista3にStaShをインストールする
StaShはPythonista3にシェルを追加することができるツールです。
インタラクティブコンソールに以下のコードを入力すれば、インストールできます。
import requests as r; exec(r.get('http://bit.ly/get-stash').text)
Pythonista 3にシェル、Dropbox同期・ダウンロード機能などAppleが許さない機能を追加する
MENU 価値ある情報をユーザー視点で発信するブログ 2016/07/05 2016/07/06iOS最強の統合開発環境Pythonista 3。開発言語はPython 3.5 / 2....
[おまけ]Dropbox同期ライブラリのインストール
余談ですが、参考にしたサイトにはDropbox同期のための
DropboxSyncv2.py
DropboxFilePicker.py
も紹介されてます。これもインストールしておくと便利です。
ただし、バグがあります。
バグ取りには以下の記事が参考になりますよ。
iOSの最強無敵なプログラミング環境 Pythonista 3 を使えるようにした - a.sueの日記 はてな版
Pythonに興味を持ってから、いろいろ本を見たりネットを調べたりしてたんだけど、iOSのアプリPythonista 3が凄いらしい。Pythonista 3を App Store でiOS上で動作す...
Pytumblrは、Tumblr API操作用のパッケージです。
site-package 以下にpytumblrというフォルダが生成されます。
Pythonista3で動かす場合には、以下の作業が必要です。
Python2で書かれたコードをPython3にする。
pytumblrフォルダ以下のファイルに対し、「Python 2 to 3」を実行し、Python2から3に変換します。
request.py を一部書き換える。
このままですと、JSONロードでエラーが出るため一部変更します。
data = json.loads(content)
data = json.loads(content.decode('utf-8'))
これで、Pythonista3からTumblr APIを利用する準備が整いました。
PyTumblrのReadmeを参考にしてプログラムを作成します。
PyTumblr
import pytumblr import sys import webbrowser args = sys.argv #Authenticate via OAuth client = pytumblr.TumblrRestClient( '', '', '', '', ) blogName = '' #Creating a text post(下書きとしている投稿) client.create_text(blogName, state="draft", title=args[1], body=args[2])
TextwellからURL Schemeで呼び出して使いたいのでsys.argvを使いました。
例えば、上記のプログラムのパスが
/Menu/tumblr_post.py
の場合、これを呼び出すURL Schemeは以下の通りです。
pythonista://Menu/post_tumblr.py?action=run&argv=&argv=
Import Textwell ActionPost with Tumblr App
と、ここまで書きましたが、
Tumblr APIの操作用ライブラリは、javascript用も用意されているので、Textwell単体でも何とかなりそうですね。
これについては後日、暇な時に試してみたいと思います。
追記
Tumblr Appのjavascriptライブラリですが、ドキュメントにはブラウザのみで使う用のライブラリじゃない(クライアントサイド用ではない)と記載されてました。残念。
サーバーサイドでnode.js使うみたいです。