WAV RIFF のメタデータが MusicBrainz Picard で文字化けするのをなんとかする

S-court Music で カスメのボーカルコレクション (注: R-18 ゲームの挿入歌) を買って意気揚々と MusicBrainz Picard に入れたところ、文字化けする。

これをモンキーパッチで直した、という話。

TL;DR: https://gist.github.com/rinsuki/d3526c637ee6a1ac0bc10b55a0ef426b

MusicBrainz Picard が WAV RIFF のメタデータを読んでいるのはここ。

github.com

中身を読むと:

  • とりあえず UTF-8 として読んでみる
  • UTF-8 としておかしかったら無理矢理 Windows-1252 で読む

となっている。

というわけで、とりあえず Shift-JIS を読みたいのだったらここを Windows-1252 から Shift-JIS とかにしてやれば良い *1。

で、Python なんだから MusicBrainz Picard.app の中身を見たら .py が置いてあるんじゃね?と思うかもしれないが、Mach-O にバンドルされているのか何なのか、中のどこにあるかよくわからなかったので、代わりとして MusicBrainz Picard のプラグイン機構を使うことにした。.app の中身を書き換えるのも微妙だし……。

……で、プラグインの置き場所がわからなくてしばし彷徨った。最終的にはここに書いてあった。

picard-docs.musicbrainz.org

あと手間取った……というか忘れていてハマったのは、Python は __ (アンダーバーふたつ) から始まるメンバーを定義すると _ClassName__ のように置換されるという仕様がある。

docs.python.org

ので、先程の例だと置き換え対象は RiffListInfo.__decode_data ではなく RiffListInfo._RiffListInfo__decode_data のようにする必要がある。

で、できあがったプラグインがこれ。適当に刺して使ってください。終わったらたぶん消しておいたほうが良い。

gist.github.com

*1:本当はWindows側かMac側かみたいなやつがあるけど、まあ Shift-JIS を WAV に書くやつなんて Windows だろうという偏見と、とりあえず叩き台としてリストが欲しいだけなので細かい差異はどうでもいい