Exemplo n.º 1
0
        /// <summary>
        /// 指定した形式のMP3タグを削除します。即座に反映します。
        /// </summary>
        /// <param name="path">ファイル名</param>
        /// <param name="type">タグの種類</param>
        /// <returns>成功した場合 true</returns>
        public static bool RemoveMP3Tag(string path, MP3TagType type)
        {
            path = Path.GetFullPath(path);
            int error = -1;

            lock (Native.SyncRoot)
            {
                LoadFile(path);
                switch (type)
                {
                case MP3TagType.ID3v1: error = Native.DeleteId3v1Tag(path); break;

                case MP3TagType.ID3v2: error = Native.DeleteId3v2Tag(path); break;

                case MP3TagType.RIFFSIF: error = Native.DeleteRMPTag(path); break;

                case MP3TagType.APE: error = Native.DeleteApeTag(path); break;
                }
            }
            if (error > 0)
            {
                throw new System.ComponentModel.Win32Exception(error);
            }

            return(error == 0);
        }
Exemplo n.º 2
0
        /// <summary>
        /// MP3ファイルに格納されているタグの種類を取得します。
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static MP3TagType GetAvailableMP3TagType(string path)
        {
            MP3TagType t = MP3TagType.None;

            Native.MP3TagType tagType;

            lock (Native.SyncRoot)
            {
                LoadFile(path);
                tagType = Native.GetTagType();
            }

            if ((tagType & Native.MP3TagType.ID3V1) > 0)
            {
                t |= MP3TagType.ID3v1;
            }
            if ((tagType & Native.MP3TagType.ID3V2) > 0)
            {
                t |= MP3TagType.ID3v2;
            }
            if ((tagType & Native.MP3TagType.RIFFSIF) > 0)
            {
                t |= MP3TagType.RIFFSIF;
            }
            if ((tagType & (Native.MP3TagType.APEV1 | Native.MP3TagType.APEV2)) > 0)
            {
                t |= MP3TagType.APE;
            }
            return(t);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 指定した形式のMP3タグを削除します。
 /// </summary>
 /// <param name="type">タグの種類</param>
 /// <returns>成功した場合 true</returns>
 public bool RemoveMP3Tag(MP3TagType type)
 {
     return(RemoveMP3Tag(path, type));
 }
Exemplo n.º 4
0
 /// <summary>
 /// 指定した種類のタグを含むかどうかを判断します
 /// </summary>
 /// <param name="t">タグの種類</param>
 /// <returns>含む場合 true</returns>
 public bool ContainsMP3Tag(MP3TagType t)
 {
     return(ContainsMP3Tag(path, t));
 }
Exemplo n.º 5
0
 /// <summary>
 /// 指定した形式のMP3タグを作成します。
 /// </summary>
 /// <param name="type">タグの種類</param>
 /// <returns>成功した場合 true</returns>
 public bool AddMP3Tag(MP3TagType type)
 {
     return(AddMP3Tag(path, type));
 }
Exemplo n.º 6
0
 /// <summary>
 /// ファイルが指定した種類のタグを含むかどうかを判断します
 /// </summary>
 /// <param name="path">ファイル名</param>
 /// <param name="t">タグの種類</param>
 /// <returns>含む場合 true</returns>
 public static bool ContainsMP3Tag(string path, MP3TagType t)
 {
     return((GetAvailableMP3TagType(path) & t) == t);
 }