// 05/17/2007 by aldente #region *タグオブジェクトを生成(Generate) /// <summary> /// ヘッダのバージョン番号を読み取り,タグオブジェクトを生成します. /// </summary> /// <param name="reader"></param> /// <param name="onlyHeader"></param> /// <returns></returns> private static async Task <ID3v2Tag> Generate(ID3Reader reader, bool onlyHeader) { // readerは"ID3"まで読み取ったものとする. byte[] version = new byte[2]; await reader.ReadAsync(version, 0, 2); switch (version[0]) { case 0x02: { var tag = new ID3v22Tag(); await tag.Initialize(reader, onlyHeader); return(tag); } case 0x03: { var tag = new ID3v23Tag(); await tag.Initialize(reader, onlyHeader); return(tag); } case 0x04: throw new ApplicationException("残念ながら未対応ですm(_ _)m"); default: throw new ApplicationException("見たことないバージョンでチュね~"); } }
// 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); }