MP3 単体で iTunes にポッドキャストとして登録する方法

2011-09-17 05:50:13 | iPhone, iPod & iTunes
MP3 ファイルのポッドキャスト化に対応し add2itunes をリリースしました。id3.exe のソースを入手できたため、PCST フレームに対応した id3.exe を同梱しています。

radiko.jp を iTunes/iPod でポッドキャストとして聴く! (MP3対応版)


先日、Mp3tag を使った MP3 単体のポッドキャスト化を紹介したが(こちら)、録音から登録まで自動化したい場合、どうしても GUI ツールであることが障害となる。radika には録音後にコマンドを実行する機能が備わっているので、やはりコマンドライン系のツールで連携したいところ。今回はそんなお話である。

Mp3tag の PODCAST フィールドと PODCASTID フィールドは ID3v2 において PCST、TGID というフレームで与えられる。これらを扱えるツールをネットで探してみたが、ほとんどが基本的なフレームにしか対応しておらず、特に絶対数の少ないコマンドライン系においては ID3 Mass Tagger というツールが TGID を書き込めるというのが精々であった。ちなみに PCST にデータを書き込もうとすると次のようなエラーを吐く。

C:\>id3 -2 -wPCST 0 "<mp3file>:"
id3: selected tag does not have `PCST' frames

T や W から始まる文字列であれば適当なフレーム名でも受け付けてくれたのだが、"PCST" は残念ながらダメだった。しかし裏を返せば「もう一歩」のところまで来ているわけで、何とか PCST フレームにも対応させたい。ただオリジナルのウェブサイトは消失、ソースも公開されていないので正攻法による対応は難しい。そこでバイナリレベルで修正できないか調べてみることにした。

まずは手がかりを探そうとバイナリエディタで id3.exe を覗いてみる(私は Stirling を使用)。何かが違う。可読テキストがあまりに少ない。こういうときはたいてい EXE に圧縮が掛かっている。案の定ファイルの先頭部分を見ると UPX の文字がみえた。とりあえず upx.exe を使って伸長しておく。

upx -d id3.exe

出力された EXE を再度バイナリエディタで読み込む。可読テキストが散見される。期待が持てそうだ。適当に当たりを付けてテキストを検索するとフレーム名が集中する箇所が見つかった。おそらく id3.exe が対応しているフレーム名であろう。この中のいずれかを PCST に書き換えてやればうまくいくような気がする。あまり深く考えず PCNT というフレーム名を PCST に変えて前述のコマンドを実行してみた (具体的には 0x00033535 を 0x4E から 0x53 に変更)。ダメならじっくり調べればいいと思ったが、意外にもエラーを吐かない。ビンゴか?

早速 Mp3tag で確認すると、見事 PODCAST フレームが書き込まれているではないか。念のためバイナリエディタでも見てみるが PCST フレームはちゃんと存在する。どうやら成功したらしい。必要であれば id3.exe は再度 UPX 圧縮しておけばよい。

最低限ポッドキャストとして認識させるには TGID フレームも考慮して以下のようなコマンドになる。

id3 -2 -wPCST 0 -wTGID 0 "<mp3file>"

これは空の PCST および TGID フレームを作成する。必要に応じてその他のフィールドも書き加えると良いだろう。ちなみに私は TDRL フレーム(リリース日) も追加している。

検証中に分かったことだが、id3.exe はマルチバイト文字に対応していないため、ファイル名に日本語が使われていると正しく動作しないことがある。いわゆるダメ文字である。私の環境では録音時のファイル名に番組名とリリース日が含まれるため、radika からは直接 id3.exe を呼び出さず、間にスクリプトを挟んで id3.exe を呼び出すという流れにしている。もちろんファイル名を考慮すれば radika から直接 id3.exe を呼び出すことは可能であるが、諸般の事情から私はスクリプトを経由させているというだけである。


※ダメ文字については下記の「2バイト目が5C等になりうることによる問題」を参照のこと。

http://ja.wikipedia.org/wiki/Shift_JIS


最新の画像もっと見る