日々

昨日作ったID3v1にタグ領域の16進ダンプ表示機能を追加した。これで文字列の末尾にマルチバイト文字の1バイト目があるか確認しやすくなった。しかし、これ見て思うのはUTF-8って1バイト文字以外は1文字3バイトも食うんだな…。1項目最大30文字しか入らないID3v1タグだと漢字10文字なので、最初にUTF-8で入れること自体に問題あるかも。
てな訳でmp3ファイルの変換元であるm4aファイルのタグをAtomicParsleyで読み出してnkfシフトJISに変換したものをid3v1でID3v1タグとして書き込めるようにしてみた。「AtomicParsley sample.m4a -t | nkf -s | id3v1 -w sample.mp3」ってなカンジに実行する。
と、ここまできて今度は波ダッシュ問題にぶちあたる。Radikoの番組表に波ダッシュ等のシフトJISで表せない文字が含まれているようでRadikaで録音したm4aのタグにこれが入るとmp3infp等で文字化けするし、ファイル名に入るとmp3infpやffmpeg等でファイルが認識できなかったり、NASに置けなかったりする。
UTF-8で言えば波ダッシュが「0xe3 0x80 0x9c」、チルダ(〜)が「0xef 0xbd 0x9e」。nkfシフトJISに変換すると波ダッシュチルダに置き換えられたので、この辺を上手く使ってタグやファイル名を置き換えてみよう。
とりあえず、ファイル名に含まれる波ダッシュ等のシフトJISに無い文字を「〜」に置き換えてリネームするバッチファイルを作ってみた。残念ながら波ダッシュ以外でも「〜」になってしまうが、もうそれはこの際しょうがない。
2011/03/11追記:何か色々ミスってたのでバッチファイルを訂正。

FOR %%J IN (*.*) DO CALL :MAIN "%%~J"
EXIT /B
:MAIN
FOR /F "usebackq delims=" %%I IN (`ECHO "%~n1"`) DO SET SN=%%~I
FOR /F "usebackq delims=" %%I IN (`ECHO "%~x1"`) DO SET SX=%%~I
SET DN=%SN:?=〜%
SET DX=%SX:?=〜%
IF NOT "%SN%%SX%"=="%DN%%DX%" REN "%~1" "%DN%%DX%"
EXIT /B

定時後は延々とUTF-8絡みで格闘。TAKEも何かMP3のタグがDLNAサーバでおかしくなる特定のデータとかで苦しんでた模様。晩御飯食うべくお出かけ。TAKEが間に合うならコーナンってことで垂水んとこへ。何とか閉店9時の5分前くらいに到着。無事A3のラミネートフィルム査収した模様。晩御飯食うついでに星陵台のマックスバリュへ。しかし、先日切れたブラックブラックのボトルはちと高めで、探してるミニッツメイドのグーニューは見つからず。とりあえず、明日の未読に備えてお菓子やドリンクを適当に査収。
晩御飯は星陵台のサイゼリヤへ。久々にミラノ風ドリアとカルボナーラマルゲリータピザ。

ガス欠だったので2号線沿いのessoへ。speedpassで給油。リッター133円。
TAKEを送った後、セブンイレブンサークルK寄ってグーニュー探すも見つからず。DEEN宅に帰還。
半額のグーニューを楽天で見つけたので思わず注文。いちご飲んだことないけど、2種類セットだし、もういいや(笑)

そういえば、REGZA 37Z7000のHDMI3にPCを繋いでるので、リモコンのおまかせ映像ボタンでどれに合わせれば一番いいかと思ってたら、ゲームに合わせて画面が安定するのを待ってからもう一度押すとPCファインって設定があることに気付いた。ゲームと違って画面も全部入りきってるし、細部まで綺麗に見えるし、色合いも自然。
おまかせ映像の順番は、おまかせ→あざやか→標準→映画→テレビプロ→映画プロ1→映画プロ2→ゲーム→PCファイン→メモリー→おまかせ(以下繰り返し)。