PythonistaでOpenIn(受け取り)モジュール

ほとんどosモジュールを使ったそのまんまだからそりゃそうなんだけど、こないだ作ったコピーモジュールが結構汎用性溢れるものでした。
コピーと移動はほとんど同じようなものなので、そこを取っ掛かりにしてファイルをアプリ間で移動させるスクリプトを作りました。
プログラムの再利用ってしてやったって気がして楽しいですよね。
さて、それに関しまして、スクリプトを実装する時に、今までDropboxからopninを通してPythonistaにスクリプトを渡してくださいとか言っていたけど、Pythonistaにそんな機能なんてなかった。完全にあると思ってたけど。
そりゃ自分は作ってるだけだから気がつかないよね。うん。
そうするとせっかくDropboxにスクリプトをあげてもダウンロードするだけでPythonistaにはインポートできないことになる。それは困るので、他のアプリからシェアエクステンションを使ってPythonistaにファイルを取り込む、そのためのスクリプトと言っても過言じゃないです。
とりあえずコードから直接ファイルを作る
以下を新しいファイルに貼り付ける。
# coding: utf-8
import os
import appex
import shutil
import console
def main():
FILE = appex.get_file_paths()
# print(appex.get_attachments())
PYPATH = os.path.abspath(os.path.dirname(__file__))
while os.path.basename(PYPATH) != 'Documents':
PYPATH = os.path.abspath(os.path.join(PYPATH, os.pardir))
PYPATH = os.path.join(PYPATH, 'Shared')
if not os.path.isdir(PYPATH):
os.mkdir(PYPATH)
for i in FILE:
if os.path.isfile(i):
NAME = os.path.basename(i)
shutil.copyfile(i, os.path.join(PYPATH, NAME))
print(i+'---->'+os.path.join(PYPATH, NAME))
if os.path.isdir(i):
shutil.copytree(i, PYPATH)
if __name__ == '__main__':
if appex.is_running_extension():
main()
console.alert('copied!', '', 'ok', hide_cancel_button=True)
else:
console.alert('Error Occured', 'Please launch from extension', 'ok', hide_cancel_button=True)
使い方は前回のコピーするスクリプトとほぼ同じ。
登録したあとは他のアプリからopeninを選択してPythonista3を選択、その後はこのスクリプトをタップすれば他のアプリから渡したいファイルがPythonistaに渡されます。
urlとかを渡すタイプのアプリからはなんも反応が起きませんが、それに関する処理は書いてないので今後の宿題としておきます。
html化とかできたら便利なのかもしれないけどHTMLParserってシェアエクステンションの中で動かないらしいんだよね。困った。
Dropboxからスクリプトを渡す時の注意点として、渡すのがリンクじゃなくてファイルにするという点です。
Dropboxでダウンロードしたファイルを開きます。
右上のシェアボタンを押します。
開いたこの画面で、別のアプリで開くを選択します。
このときにPythonistaで開いてはいけません。
もう一度同じ画面が開きますので、ここで改めてPythonistaを選択してファイルを開いてください。
2回タップが必要になって二度手間ですが、こうしないとうまくいかないので勘弁してください。
これでいつでもPythonistaにスクリプトを渡せるようになりました。
渡されたファイルはSharedというフォルダに格納されます。
ためしに、このスクリプトを導入してから、他の今までのスクリプトがうまくとれるか試してみるといいかもしれません。
Safariから直接Pythonistaもできると思います。
