Example #1
0
        // 同期実行版。いるかな?

        // 01/08/2008 by aldente : ~Accessorに移植.
        // 05/24/2007 by aldente : static化
        // 05/15/2007 by aldente
        #region *[static]ファイルからID3タグを読み込み(ReadFile)
        /// <summary>
        /// mp3ファイルからID3タグを読み込みます.
        /// タグが見つからなければnullを返します.
        /// </summary>
        /// <param name="filename">読み込むファイル名.</param>
        /// <returns>該当するバージョンのタグオブジェクト.</returns>
        public static async Task <IID3Tag> ReadFile(string fileName)
        {
            IID3Tag tag;

            //SongInfo info = new SongInfo();

            if (!File.Exists(fileName))
            {
                // ファイルがないぞ!
                return(null);
            }

            // 拡張子が"rmp"の場合は,RIFFとして開く.
            if (Path.GetExtension(fileName).ToLower().EndsWith("rmp"))
            {
                return(await RIFFMP3Tag.ReadFromFileAsync(fileName) as RIFFMP3Tag);
            }
            else
            {
                // ID3v2をチェック.
                tag = await ID3v2Tag.ReadFile(fileName);

                ID3v1Tag tag1 = await ID3v1Tag.ReadFile(fileName);

                if (tag != null)
                {
                    if (tag1 != null)
                    {
                        tag.Merge(tag1);
                    }
                    return(tag);
                }
                return(tag1);
            }
        }