diary/Kojima/2013-01-10
の編集
http://sv5.linet.gr.jp/index.php?diary/Kojima/2013-01-10
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・Nexus 7とMTP(その2) MTP自体はLinux上でもlibmtpで対応しているようだけど, Plamo-5.0でこのライブラリをリンクしているのはvlcとamarokぐらい. これらを使ってファイルの転送ができるとは思えないので, もう少しMTP回りを調べてみたところ,GNOMEならNautilusがlibmtpを使えるようで, KDEならばkio-slave-mtpというのが次のバージョンでマージされるそうな. どっちも今の問題の解決には使えないなぁ,, と調査を続けたところ, [[gMTP:http://gmtp.sourceforge.net/]] というのを見つけた. 説明を読んでみると,GTKベースのMTPメディアプレイヤークライアント, ということで,元々はSolaris用に開発されたソフトウェアらしい. ざっくりとビルド,インストールして起動してみると, とりあえずNexus 7と接続して, 相手のディレクトリ構成とかは拾ってこれる. #ref("gmtp01.png") 「ほほう,,」と思って,適当なディレクトリに移動して, 「Add(+)」コマンドを使ってファイルを転送してみたところ, 英語のファイル名は問題なく送れるものの, 日本語のファイル名はprogress barのレベルから文字化けしていて, 処理が進まない. 多分,文字コードがらみの問題だろうなぁ,,と, 日本語のファイル名をUTF8に変換してハードリンクを張ってやると問題なく転送できる. #ref("gmtp02.png") とりあえず,昔々にNetatalkとsambaでファイル共有してた時みたく, 転送したい日本語ファイル名をUTF8に変換して, 同じディレクトリにUTF8/ なディレクトリを作って, UTF8なファイル名のリンクを作る, みたいなPythonのスクリプトを書いてごまかすことにした. #! /usr/bin/python # -*- coding: euc-jp -*-; import getopt, sys, os def make_file_link(name): inner = name.decode('euc-jp') utf8 = inner.encode('utf8') # print utf8 #print("utf8 name:{0}".format(utf8)) if os.path.isdir("UTF8") == True: if os.path.exists("UTF8/" + utf8) == True: print("UTF8 name {0} is already exists".format(utf8)) else: os.link(name, "UTF8/" + utf8) else: os.mkdir("UTF8") os.link(name, "UTF8/" + utf8) def make_directory_link(name): files = os.listdir(name) if os.path.isdir(name + "/UTF8") == True: for i in files: inner = i.decode('euc-jp') utf8 = inner.encode('utf8') if os.path.exists("UTF8/" + utf8) == True: print("UTF8 name {0} is already exists".format(utf8)) else: print i os.link(i, "UTF8/" + utf8) else: os.mkdir("UTF8") for i in files: inner = i.decode('euc-jp') utf8 = inner.encode('utf8') os.link(i, "UTF8/" + utf8) def main(): for item in sys.argv[1:]: if os.path.exists(item) == True: if os.path.isfile(item) == True: print("{0} is file".format(item)) make_file_link(item) elif os.path.isdir(item) == True: print("{0} is directory".format(item)) make_directory_link(item) else: print("{0} is not file/directory".format(item)) else: print("{0} is not real file/directory".format(item)) if __name__ == "__main__": dry_run = False main() このコードは,引数に日本語のファイル名を指定すると, 同じディレクトリに UTF8/ というディレクトリを作って, そこにそのファイル名をUTF8で収める,というだけのもの. とりあえずこれで日本語のファイル名もNexus 7に送れるようにはなったが, いちいちUTF8に変換しないといけないのは面倒なので何とかしたいところ(続く). - ここでは文字コードの問題に限定して書いているけど、実のところ、gMTPとNexus 7の接続はかなり不安定で、それぞれの操作にずいぶん待たされたり、一度Disconnectすると、いったんUSBケーブルを抜き挿ししてやらないと、Re-Connectできない、といった問題もある。一応、このあたりの問題はREADMEファイルにも解説してあるのだけど、最初にMTPプロトコルを使ったWMPにdisconnect処理が無かったために、世の中のMTPクライアント側でdisconnect処理がきちんと実装されていないそうな。とりあえず抜き挿しし直せば初期化するので何とかなるのだけど、MTPというプロトコル自体がまだまだ洗練されていないなぁ、、という印象。 -- [[kojima]] &new{2013-01-10 (木) 17:44:39};
タイムスタンプを変更しない
[[diary/Kojima]] ・Nexus 7とMTP(その2) MTP自体はLinux上でもlibmtpで対応しているようだけど, Plamo-5.0でこのライブラリをリンクしているのはvlcとamarokぐらい. これらを使ってファイルの転送ができるとは思えないので, もう少しMTP回りを調べてみたところ,GNOMEならNautilusがlibmtpを使えるようで, KDEならばkio-slave-mtpというのが次のバージョンでマージされるそうな. どっちも今の問題の解決には使えないなぁ,, と調査を続けたところ, [[gMTP:http://gmtp.sourceforge.net/]] というのを見つけた. 説明を読んでみると,GTKベースのMTPメディアプレイヤークライアント, ということで,元々はSolaris用に開発されたソフトウェアらしい. ざっくりとビルド,インストールして起動してみると, とりあえずNexus 7と接続して, 相手のディレクトリ構成とかは拾ってこれる. #ref("gmtp01.png") 「ほほう,,」と思って,適当なディレクトリに移動して, 「Add(+)」コマンドを使ってファイルを転送してみたところ, 英語のファイル名は問題なく送れるものの, 日本語のファイル名はprogress barのレベルから文字化けしていて, 処理が進まない. 多分,文字コードがらみの問題だろうなぁ,,と, 日本語のファイル名をUTF8に変換してハードリンクを張ってやると問題なく転送できる. #ref("gmtp02.png") とりあえず,昔々にNetatalkとsambaでファイル共有してた時みたく, 転送したい日本語ファイル名をUTF8に変換して, 同じディレクトリにUTF8/ なディレクトリを作って, UTF8なファイル名のリンクを作る, みたいなPythonのスクリプトを書いてごまかすことにした. #! /usr/bin/python # -*- coding: euc-jp -*-; import getopt, sys, os def make_file_link(name): inner = name.decode('euc-jp') utf8 = inner.encode('utf8') # print utf8 #print("utf8 name:{0}".format(utf8)) if os.path.isdir("UTF8") == True: if os.path.exists("UTF8/" + utf8) == True: print("UTF8 name {0} is already exists".format(utf8)) else: os.link(name, "UTF8/" + utf8) else: os.mkdir("UTF8") os.link(name, "UTF8/" + utf8) def make_directory_link(name): files = os.listdir(name) if os.path.isdir(name + "/UTF8") == True: for i in files: inner = i.decode('euc-jp') utf8 = inner.encode('utf8') if os.path.exists("UTF8/" + utf8) == True: print("UTF8 name {0} is already exists".format(utf8)) else: print i os.link(i, "UTF8/" + utf8) else: os.mkdir("UTF8") for i in files: inner = i.decode('euc-jp') utf8 = inner.encode('utf8') os.link(i, "UTF8/" + utf8) def main(): for item in sys.argv[1:]: if os.path.exists(item) == True: if os.path.isfile(item) == True: print("{0} is file".format(item)) make_file_link(item) elif os.path.isdir(item) == True: print("{0} is directory".format(item)) make_directory_link(item) else: print("{0} is not file/directory".format(item)) else: print("{0} is not real file/directory".format(item)) if __name__ == "__main__": dry_run = False main() このコードは,引数に日本語のファイル名を指定すると, 同じディレクトリに UTF8/ というディレクトリを作って, そこにそのファイル名をUTF8で収める,というだけのもの. とりあえずこれで日本語のファイル名もNexus 7に送れるようにはなったが, いちいちUTF8に変換しないといけないのは面倒なので何とかしたいところ(続く). - ここでは文字コードの問題に限定して書いているけど、実のところ、gMTPとNexus 7の接続はかなり不安定で、それぞれの操作にずいぶん待たされたり、一度Disconnectすると、いったんUSBケーブルを抜き挿ししてやらないと、Re-Connectできない、といった問題もある。一応、このあたりの問題はREADMEファイルにも解説してあるのだけど、最初にMTPプロトコルを使ったWMPにdisconnect処理が無かったために、世の中のMTPクライアント側でdisconnect処理がきちんと実装されていないそうな。とりあえず抜き挿しし直せば初期化するので何とかなるのだけど、MTPというプロトコル自体がまだまだ洗練されていないなぁ、、という印象。 -- [[kojima]] &new{2013-01-10 (木) 17:44:39};
テキスト整形のルールを表示する
添付ファイル:
gmtp02.png
169件
[
詳細
]
gmtp01.png
173件
[
詳細
]