はじめに
楽曲ファイルのタグ情報(楽曲名、アルバム名、アーティスト名など)は各種メディアプレイヤーから簡単に編集が可能です。
特にiTunesでは Gracenote を使ってCDからのインポートと同時にタグ情報の自動取得まで行ってくれてとても便利です。
しかし、中には取得してきたタグ情報が 自分好みじゃない 場合もあるかと思います。
例をあげると
- 楽曲名がCD表記と異なる
- アーティスト名が表記揺れしている
- ジャンルが異なる(ここは個人の主観もあると思いますが...)
などなど...
これらを1曲ずつポチポチ編集するのは面倒なので、システムからタグ情報を操作できればいいなーと常々思ってました。(そのためには上記の要件を満たすCDDBも必要になりますが...)
今回は システムからタグ情報を操作する のうち タグ情報を取得する 処理に関して、 Java言語 と SpringBoot の組み合わせで JAudioTagger というライブラリを検証した結果を備忘録として残します。
pom.xmlの編集
pom.xml の dependencies に以下の依存関係を追加します
<dependency>
<groupId>org</groupId>
<artifactId>jaudiotagger</artifactId>
<version>2.0.3</version>
</dependency>
タグ情報の読み込み
まずはiTunesにインポートされている適当な曲のタグ情報を確認します

それでは実際にJavaコードからタグ情報を読み込んでみます(コードは以下を参照)
AudioFile audioFile = AudioFileIO.read(楽曲ファイルを読み込んだファイルオブジェクト);
Tag tag = audioFile.getTag();
System.out.println(tag.getFirst(FieldKey.TITLE));
System.out.println(tag.getFirst(FieldKey.ARTIST));
System.out.println(tag.getFirst(FieldKey.ALBUM_ARTIST));
System.out.println(tag.getFirst(FieldKey.ALBUM));
System.out.println(tag.getFirst(FieldKey.YEAR));
System.out.println(tag.getFirst(FieldKey.COMPOSER));
System.out.println(tag.getFirst(FieldKey.GENRE));
出力結果は以下となりました。
誰がその鐘を鳴らすのか?
欅坂46
欅坂46
誰がその鐘を鳴らすのか?
2020
辻村有記
J-POP
ちなみに FieldKey は以下のようなものが取得できるようです
| FieldKey | 取得できるタグ情報 |
|---|---|
| TITLE | 楽曲名 |
| TITLE_SORT | 楽曲名(よみ) |
| ARTIST | アーティスト名 |
| ARTIST_SORT | アーティスト名(よみ) |
| ALBUM_ARTIST | アルバムアーティスト |
| ALBUM_ARTIST_SORT | アルバムアーティスト(よみ) |
| ALBUM | アルバム名 |
| ALBUM_SORT | アルバム名(よみ) |
| YEAR | アルバム発売年 |
| COMPOSER | 作曲者 |
| COMPOSER_SORT | 作曲者(よみ) |
| GENRE | ジャンル |
この他にも色々なフィールドが取得できるようです(参考:マッピング表)
おわりに
今回は タグ情報の取得 を検証しましたが、次は タグ情報の書き込み も検証してみたいと思います。
また、Java 以外の言語でのタグ情報の操作も、時間がある際に検証してみたいと思います。
最後になりますが、サブスクが主流となりつつある昨今、ローカルの楽曲ファイルを操作すること自体がナンセンスかもしれません(笑)