fxoon 1.4.6.5 + p2b 1.5b リリース

fxoon 1.4.6.5 + p2b 1.5b です。
ぱらすてのコメントを落としてニコ動形式に変換するので、NicoPlayer, BOON Player等を使うとローカル環境でぱらすて, ニコ動が楽しめます。

p2b 1.2b 1.4b 1.5 にバージョンアップしました

ぱらすてのコメントがashx(バイナリファイル)化されました。JavaScript上での加工は(不可能ではないけれど)ほぼ不可能なので、p2bに処理を引き渡して、p2b内で変換処理をします。とりあえず手元の環境では動いてますので改めてリリース。

使い方

http://matrix.s18.xrea.com/post/fxoon_1.4.6.4.xpi
http://matrix.s18.xrea.com/post/fxoon_1.4.6.5.xpi
※1.4.6.5で表示周りのバグを修正しました
http://matrix.s18.xrea.com/post/fxoon_1.4.6.6.xpi
※1.4.6.6で同時DL数関連のバグを修正しました
http://matrix.s18.xrea.com/post/fxoon_1.4.6.7.xpi
※1.4.6.7でぱらすてにおける「再生中の動画のDL」のバグを修正しました
で、まずはfxoonを上げてください(まだファイラ着いていません)。
次に、
http://matrix.s18.xrea.com/post/p2b_1.2b.zip
http://matrix.s18.xrea.com/post/p2b_1.3b.zip
http://matrix.s18.xrea.com/post/p2b_1.4b.zip
http://matrix.s18.xrea.com/post/p2b_1.5b.zip
http://matrix.s18.xrea.com/post/p2b_1.6b.zip
を落としてきて、これを解凍して fxoon.ini と同じフォルダにぶちこんでください。

あとはぱらすてに行って、いつもの通りにコメントを落とすと、保存先フォルダに自動的に TITLE.ashx というファイルが作られ、このファイルを元に、p2bが起動してxml化します。TITLE.ashxは自動的には削除されません。

p2bが起動しない場合

1.4.6.5から、p2b起動失敗時にアラートを出すようにしました。p2bが起動した上で処理に失敗しているのか、p2bの起動そのものに失敗しているのかの切り分けになります。
アラートが表示される場合は、そこに表示されているパスにp2bが無いことを示しています。一方、アラートが表示されないのにxmlファイルも作成されない場合は、そのashxの解釈にp2bが失敗している可能性が高いです。どこかのロダにashxを上げて私まで共有いただければ、p2bの修正が出来るかもしれません。

p2bによるxml変換がうまくいったりいかなかったりする場合

ashxファイルをメモ帳等のエディタで開けるかどうか確認してください(開けない・開けても意味不明な文字が延々と表示されるのが正しいashxファイルです)。中に 503 Internal Server Error 等が書かれていたらコメントファイルのダウンロードに失敗しています。ぱらすてから再度コメントファイルを落としてきてください。
また、下記のようにコマンドプロンプトから操作してやることでも自力でp2bによる変換がかけられます。
p2b [ashxファイルのパス] [動画ID]
という形式です。
例)
c:\fxoon\p2b.exe "c:\movie\test.ashx" 12345

自力でこれをやったのにxmlファイルが生成されない場合はashxファイルの解析に失敗してエラーも吐けずに自滅しています。ashxファイルの解析に失敗した例として私まで共有いただければ次バージョンで解決できるかもしれません。

p2b1.6b以降の場合

p2b.exeにashxファイルをドラッグアンドドロップしてください。動画IDを0と仮定して、同名のxmlファイルを生成します。

fxoon本体の詳しい使い方・インストール方法はこちらとか参照下さい

http://d.hatena.ne.jp/b_k/20090302/1236004037
http://d.hatena.ne.jp/b_k/20090225/1235572850

nsIProcess の仕様についてメモ

nsIProcessを使うと外部exeを起動できますが、このとき、引数も一緒に渡せます。

var file; // なんか適当な exe の nsiFILE
var arg = ['C:\\tmp\\あいうえお.flv', '123456'];
var process = Cc['@mozilla.org/process/util;1'].getService(Ci.nsIProcess);
process.init(file);
process.run(false, arg, arg.length);

MDCにもあるように、これで動きます。動くのですが、exe で渡されたコマンドラインからパスを読もうとすると文字列が壊れていて読めません。
FirefoxUnicode化して引数引き渡してるのかなー、とか、いやUTF-8か? とか色々と試しましたが、Unicode化もくそもなく、単にascii文字以外は認識できずに壊れた状態で文字列を投げている、というだけのことでした。

従って、解決策としてはencodeURIComponentで一端安全な形にエンコードしてやり、それをアプリ側でデコードしてやることで無事に読めます。
コードにすると以下の通り。

var file; // なんか適当な exe の nsiFILE
var arg = [encodeURIComponent('C:\\tmp\\あいうえお.flv'), '123456'];
var process = Cc['@mozilla.org/process/util;1'].getService(Ci.nsIProcess);
process.init(file);
process.run(false, arg, arg.length);

たったこれだけ。こんな程度のことに気づくのに2時間とか何やってんだと思いますが、誰もこれひっかからないんですかね? ググってもさっぱりひっかからないんですが。
ということで、他にも困った人がいるかもしれないのでメモしておきます。