Pythonista3(iOS)でStaShとDropboxFilePick/DropboxSyncを設定するまで

iOS12で旧Workflowが「ショートカット」と名を変えてiPhoneでメジャーに使えるようになった。

またSiriにかける言葉を設定しておくと、Siriにしてほしい処理を事前登録できるようになったので、ショートカットで処理を登録(GUIのプログラミング)しておけば、音声で好きな処理を実行でき、その中にPythonによるスクリプトの編集・実行を追加できるアプリ「Pythonista3」をインストールしたので、ハマったところを備忘録として残す。

基本はまとめのまとめ。ググって出たまとめ記事通りに実行してもエラーがでるから、最新情報として記事をかきました。

Pythonistaをダウンロードしたらやること

基本は以下の記事を参考に。

2018年9月の最新情報としては、Dropboxのアクセスキー生成・取得をiPhone上でやっちゃうとなぜか「Error check api key」みたなエラーがでる。

理由は不明だが、Mac(PC)でアクセスキーを生成した後に、コピーしてメモ帳に貼り付け→AirDropで共有、メールで共有したりして、とにかくiPhone側に送って、そのテキストをiPhoneでコピーして貼り付ければ、なぜか成功する。

http://tk-thunder.hateblo.jp/entry/2017/11/27/223907

似たアプリの重複利用に注意

DropboxFilePickerがうまくいかなかったので、Synchronator.pyというスクリプトを実行して同期を測ったが、DropboxFilePickerやDropboxSyncと競合して、Dropboxのフォルダが二重階層になった。

違いをまとめておく。

・DropboxFilePicker
都度DropboxにAPIアクセスして、選んだファイルをPythonistaに持ってくる

・DropboxSync
Dropboxに一つの同期フォルダを作り、そのフォルダ内をPythonistaと同期させる(あくまで上記リンクや、ググったら出てくる記事で推奨されているやり方)

・Synchronator.py
→DropboxとPythonistaを全部同期する。

深夜2時に書いたから間違っているかも。ごめん。

Dropbox同期のためのpythonファイルは最新版を使用しよう

実行するpythonファイルが最新版でないと、DropboxAPIのバージョン変更やAppleのセキュリティー対策でエラーになることがある。

実際DropboxSyncを実行したら、DS_coreみたいなデータがダウンロード失敗したので、下記の記事を参考に修正。

http://d.hatena.ne.jp/a_sue/20170219/1487510902

こっちは自分で作ってPythonista3にダウンロードして(AirDropで送るとPythonistaで開けるので、それでダウンロードしたことになる)おく。

IGNORED_FILES = ['desktop.ini', 'thumbs.db', '.ds_store', 'icon\r', '.dropbox', '.dropbox.attr', '.dropbox_state_v2']

def is_ignored(filename):
    filename_lower = filename.lower()
    for ignored_file in IGNORED_FILES:
        if ignored_file in filename_lower:
            return True
    return False

こっちはDropboxSyncV2.pyのファイルを修正するという意味。downloadとuploadの定義(def)の最初に「もしignoredなパスだったら何もせずreturnして」というif文を挿入する形になる。

(前略)
import DropboxIgnore as di
(中略)
    def download(self, client, path):
        if di.is_ignored(path):
            return

        print('\tDownloading:', path)
(中略)
    def upload(self, client, path):
        if di.is_ignored(path):
            return

        print('\tUploading:', path)
(後略)

引用元:http://d.hatena.ne.jp/a_sue/20170219/1487510902

 

その他

pythonista3ではlxmlのインストールはできない。

Pythonista3のWelcomeメッセージの日本語訳
http://www.narinarissu.net/entry/20170803/1501764721

エラーが何かしらでることが多いので、とりま最新のpyファイルをGitHubGistなどからダウンロードして、それをAirDropなどでiPhoneのPythonista3に移して実行と言う流れがいいみたい。