Exemplo n.º 1
0
        // 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("見たことないバージョンでチュね~");
            }
        }
Exemplo n.º 2
0
        // 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);
        }