// 11/25/2014 by aldentea : 2引数版のバグ(保存がなされていなかった)を修正. // 09/03/2013 by aldentea : 2引数版を用意. // 01/17/2008 by aldente : ~Accessorに移植. // 05/24/2007 by aldente : static化 // 05/23/2007 by aldente #region *[static]ID3タグを書き込み(UpdateInfo) //public static void UpdateInfo(SongInfo info, string filename, byte charCode) /// <summary> /// ID3タグに曲情報を書き込みます.今のところID3v2.3で決め打ちです. /// </summary> /// <param name="title">曲のタイトル.</param> /// <param name="artist">曲のアーティスト.</param> /// <param name="sabipos">曲のサビ位置(秒).</param> /// <param name="startpos">曲の再生開始位置(秒).</param> /// <param name="stoppos">曲の停止位置(秒).</param> /// <param name="filename">タグを書き込むmp3ファイル名.</param> /// <param name="charCode">文字コードを指定するbyte型数値.現在未使用?</param> public static async Task UpdateInfo(string title, string artist, decimal sabipos, decimal startpos, decimal stoppos, string filename, byte charCode) { IID3Tag tag = await ReadFile(filename); if (tag == null) { tag = new ID3v23Tag(); } tag.Title = title; tag.Artist = artist; tag.SabiPos = sabipos; tag.StartPos = startpos; tag.StopPos = stoppos; await tag.WriteTo(filename); }
// 12/25/2007 by aldente #region *他のタグとマージ(Merge) public void Merge(IID3Tag another_tag) { if (artist == string.Empty) { artist = another_tag.Artist; } if (title == string.Empty) { title = another_tag.Title; } if (SabiPos == 0.0M) { SabiPos = another_tag.SabiPos; } // 他のプロパティについては保持できないので処理を行わない. }
/// <summary> /// 指定したタグの情報を指定したファイルに書き込みます. /// ※いまのところ,タイトル・アーティスト・サビ位置のみを書き込んでいます. /// </summary> /// <param name="fileName"></param> /// <param name="newTag"></param> public static async Task UpdateInfo(string fileName, IID3Tag newTag) { var original_tag = await MP3TagAccessor.ReadFile(fileName); if (original_tag == null) { await newTag.WriteTo(fileName); } else { // 元のタグに新しいタグの情報を書き込んで保存する. // 全てを更新していいのか? original_tag.Title = newTag.Title; original_tag.Artist = newTag.Artist; original_tag.SabiPos = newTag.SabiPos; //tag.StartPos = startpos; //tag.StopPos = stoppos; await original_tag.WriteTo(fileName); } }
// 12/25/2007 by aldente #region *他のタグとマージ(Merge) public void Merge(IID3Tag another_tag) { if (Artist == string.Empty) { Artist = another_tag.Artist; } if (Title == string.Empty) { Title = another_tag.Title; } if (SabiPos == 0.0M) { SabiPos = another_tag.SabiPos; } if (StartPos == 0.0M) { StartPos = another_tag.StartPos; } if (StopPos == 0.0M) { StopPos = another_tag.StopPos; } }