MP3ファイルのタグ情報を取得したり、編集する方法を紹介します。
NuGetからTagLibをインストール
MP3ファイルのタイトルといった情報は、FileのAttributeでは取得/編集できません。なので今回は「TabLib」というライブラリをNuGetから取得して利用しようと思います。
対象のプロジェクトを選択し、右クリックで「NuGetパッケージの管理」を選択します。

「参照」タブを選択し検索テキストボックスに「TabLib」の入力します。検索結果から「TagLibSharp」を選択し、インストールをクリックします。
※依存関係に注意してください。.NetFrameworkなどのversionが書いてあります。これより低いバージョンでは動作しません。

OKを選択するとインストールが開始されます。

参照に「TagLib」が追加されます。

MP3ファイルからタグ情報を取得する
NuGetで参照に追加されればあとは呼び出してタグ情報を取得するだけです。
string input_path = @"D:\MyMedia\MyMusic\sample.mp3";
//タグ情報を取得
TagLib.File mp3_tag = TagLib.File.Create(input_path);
Console.WriteLine(mp3_tag.Tag.Title);
MP3ファイルにタグ情報を設定する
設定する場合は、Tagのプロパティを変更して保存すれば変わります。
string input_path = @"D:\MyMedia\MyMusic\sample.mp3";
//タグ情報を取得
TagLib.File mp3_tag = TagLib.File.Create(input_path);
//新しいタイトルを設定する
mp3_tag.Tag.Title = "新しいタイトル";
//変更した内容を保存
mp3_tag.Save();

Tagクラスに含まれるタグ情報のプロパティ一覧
以下にTagに含まれるプロパティを紹介します。
| プロパティ名 | 型 | 説明 |
|---|---|---|
| TagTypes | TagTypes | タグの種類を取得する。(読取専用) |
| Title | string | メディアのタイトルを取得・設定する。 |
| TitleSort | string | メディアのタイトルのソート名を取得・設定する。 |
| Subtitle | string | メディアのサブタイトルを取得・設定する。 |
| Description | string | メディアの短い説明を取得・設定する。 |
| Performers | string[] | メディアの演者やアーティストを取得・設定する。 |
| PerformersSort | string[] | メディアの演者やアーティストのソート名を取得・設定する。 |
| PerformersRole | string[] | メディアで演者やアーティストの役割を取得・設定する。 |
| AlbumArtists | string[] | バンドやアーティストを取得・設定する。 |
| AlbumArtistsSort | string[] | バンドやアーティストのソート名を取得・設定する |
| Composers | string[] | メディアの作曲家、作詞家、脚本家、または人物を取得・設定する。 |
| ComposersSort | string[] | メディアの作曲家のソート名を取得・設定する |
| Album | string | メディアのアルバムを取得・設定する |
| AlbumSort | string | メディアのアルバムタイトルのソート名を取得・設定する。 |
| Comment | string | メディアに関するユーザーコメントを取得・設定する。 |
| Year | uint | メディアが記録された年を取得・設定する。 |
| Track | uint | メディアの、収録されているアルバム、またはシーズン(シリーズの場合)における位置を取得・設定する。 |
| TrackCount | uint | メディアの、アルバムのトラック数、または、シリーズのエピソード数を取得・設定する。 |
| Disc | uint | メディアのボックスセットにおけるディスクの番号を取得し、設定する。シリーズの場合、これはシーズン番号を表します。 |
| DiscCount | uint | メディアを含むボックスセット内のディスクまたはシーズンの数を取得・設定する。 |
| Lyrics | string | メディアの歌詞またはスクリプトを取得・設定する。 |
| Grouping | string | メディアが属するアルバム上のグループ分けを取得・設定する。 |
| BeatsPerMinute | uint | メディアのオーディオの1分あたりのビート数を取得・設定する。 |
| Conductor | string | メディアの指揮者またはディレクターを取得・設定する。 |
| Copyright | string | メディアの著作権情報を取得・設定する。 |
| DateTagged | DateTime? | タグが書き込まれた日付を取得・設定する。 |
| MusicBrainzArtistId | string | メディアのMusicBrainzアーティストIDを取得・設定する。 |
| MusicBrainzReleaseGroupId | string | メディアのMusicBrainz Release Group IDを取得し、設定する。 |
| MusicBrainzReleaseId | string | メディアのMusicBrainz Release IDを取得・設定する。 |
| MusicBrainzReleaseArtistId | string | メディアのMusicBrainz Release Artist IDを取得・設定する。 |
| MusicBrainzTrackId | string | メディアのMusicBrainz Track IDを取得し、設定する。 |
| MusicBrainzDiscId | string | メディアのMusicBrainz Disc IDを取得し、設定する。 |
| MusicIpId | string | メディアのMusicIP PUIDを取得・設定する。 |
| AmazonId | string | メディアのAmazon IDを取得・設定する。 |
| MusicBrainzReleaseStatus | string | メディアのMusicBrainz Release Statusを取得・設定する。 |
| MusicBrainzReleaseType | string | メディアのMusicBrainz Release Typeを取得・設定する。 |
| MusicBrainzReleaseCountry | string | メディアのMusicBrainz Release Countryを取得・設定する。 |
| ReplayGainTrackGain | double | ReplayGainのトラックゲインを取得・設定する(dB)。 |
| ReplayGainTrackPeak | double | ReplayGain トラックのピークサンプルを取得・設定する。 |
| ReplayGainAlbumGain | double | ReplayGainのアルバムゲインを取得および設定します(dB)。 |
| ReplayGainAlbumPeak | double | ReplayGainアルバムピークサンプルを取得・設定する。 |
| InitialKey | string | 曲の初期キーを取得・設定する。 |
| RemixedBy | string | 曲のリミキサーを取得・設定する。 |
| Publisher | string | 曲の出版社を取得し、設定する。 |
| ISRC | string | 曲のISRC(国際標準記録コード)を取得し、設定する。 |
| Length | string | メディアの長さを取得し、設定する。 |
| Pictures | IPicture[] | メディアに関連するピクチャーのコレクションを取得・設定する。 |
| Artists | string[] | TagLib.Tag.Performersと同じ値を取得・設定する。 |
まとめ
この記事が皆様のお役に立てたら幸いです。

コメント