先日こちらを買いましてん。
ファイアーエムブレム 風花雪月 オリジナル・サウンドトラック(特典なし)
- アーティスト:VARIOUS ARTISTS
- 発売日: 2021/02/17
- メディア: CD
ゲームのサウンドトラックを買ったことがある方はわかると思いますが、これ、PCにリッピングしてMP3ファイルにすると、トラック番号がサウンドトラック全体の連番ではなく、ディスクごとの連番になってしまうんですよね。
で、このサントラはゲームでも珍しい7枚組のサウンドトラックなので、手作業で修正するのはあまりにも手間なのです。
ということで、せっかく前回MP3のID3タグを参照するモジュールを使ったので、今回もpythonで一括修正スクリプトを書きました。
いちおうREADMEにも書いていますが、とりあえずpipenv install
で必要なモジュールがインストールされますので、トラック番号を設定したいファイル群をフォルダごと配置し、スクリプトを実行するだけです。
手抜きのため、フォルダの指定やファイル順序の設定などはしていません。
やってること
やっていることは単純。カレントフォルダ配下をすべて検索し、mp3ファイルを探します。
そして見つけられたらID3タグを確認し、トラック番号を連番に書き換えます。
def scan(trackno: int, dir: Path): for f in dir.iterdir(): if f.is_dir(): trackno = scan(trackno, f) elif f.is_file() and f.name.endswith("mp3"): tags = EasyID3(f) oldtrack = tags["tracknumber"] tags["tracknumber"] = f"{trackno}" print(f"> {f.name} {oldtrack} -> {trackno}") tags.save() f.rename(f.parent / re.sub(r"^\d+(-\d+)?\s*", "", f.name)) trackno += 1 return trackno if __name__ == "__main__": scan(1, Path("."))
もしフォルダだった場合は、再帰的にそのフォルダ内も掘っていきます。ついでにファイル名にトラック番号がついていたら、削除します。
本当はアルバムの[Disc 1]などの記述も削除したかったのですが、文字列のデコードがうまくできなかったのでそのままとしました。必要であればあとでエクスプローラーから編集します。
終了後、すべてのファイルを操作したい場合
Windows Media Playerなどでリッピングした場合、初期設定だとサントラはディスクごとに別々のフォルダに保存されているはずなので
エクスプローラーの検索機能より「種類:オーディオ」で検索します。
わたしの場合、音楽は一括して「D:\Users\ユーザー\Music\ゲーム\」に保存しているので、そこにコピーしました。
はい、できあがり