示例#1
0
        public TagLib.File RemovePrefixArtistOrBand(FileInfo musicFile, TagLib.File tagMusicFile)
        {
            DistilTitle  distilTitle  = new DistilTitle();
            TitleExtract titleExtract = new TitleExtract();


            string newTitle         = "";
            string artistOrBandName = "";

            Simile.SimileEnums.GroupCategory grpCategory = SimileEnums.GroupCategory.Unknown;
            Simile.DBProcess.MusicBand       musicBand   = new Simile.DBProcess.MusicBand();
            Simile.DBProcess.MusicArtist     musicArtist = new Simile.DBProcess.MusicArtist();

            distilTitle.Process(musicFile, out newTitle, out artistOrBandName, out grpCategory);

            newTitle = titleExtract.Process(newTitle);

            tagMusicFile.Tag.Title = newTitle.Trim();

            if (grpCategory == SimileEnums.GroupCategory.Artist)
            {
                tagMusicFile.Tag.AlbumArtists[0] = artistOrBandName.Trim();
                tagMusicFile.Tag.Comment        += "Artist=" + artistOrBandName.Trim() + ";" + System.Environment.NewLine;
                tagMusicFile.Save();
            }
            else if (grpCategory == SimileEnums.GroupCategory.Band)
            {
                tagMusicFile.Tag.Comment += "Band=" + artistOrBandName.Trim() + ";" + System.Environment.NewLine;
                tagMusicFile.Save();
            }

            return(tagMusicFile);
        }
示例#2
0
        public void Process(FileInfo musicFile, out string newTitle, out string artistOrBandName, out Simile.SimileEnums.GroupCategory grpCategory)
        {
            newTitle         = "";
            artistOrBandName = "";
            grpCategory      = SimileEnums.GroupCategory.Unknown;

            Simile.DBProcess.MusicArtist musicArtist = new Simile.DBProcess.MusicArtist();


            List <string> splitedTitle = new List <string>();

            foreach (char obsVal in this.obsoleteValues)
            {
                string[] tmp = musicFile.Name.Split(obsVal);
                if (tmp.Count() > 1)
                {
                    splitedTitle.AddRange(tmp.Where(r => !string.IsNullOrEmpty(r)));
                }
            }

            /*Most pbly artist/band will included, before or after the title. so to speed up the process
             * first get the word from start index of an array. if its not identified as artist/band in db, then took last index
             * from an array and check with db.
             * TODO:- at present i am assuming that artist/band will be first or last in array. If not find values in db then
             * i assume title contain no artist/band.
             */
            string assumedValue     = "";
            bool   isAssumedValueOk = false;

            isAssumedValueOk = IsAssumedValueAnArtist(splitedTitle, out assumedValue);

            if (isAssumedValueOk)
            {
                grpCategory = SimileEnums.GroupCategory.Artist;
                string temp  = "";
                int    index = musicFile.Name.IndexOf(assumedValue);
                if (index != -1)
                {
                    temp             = musicFile.Name.Remove(0, assumedValue.Length);
                    artistOrBandName = assumedValue.Trim();
                }
            }

            isAssumedValueOk = (!isAssumedValueOk) ? IsAssumedValueBand(splitedTitle, out assumedValue) : false;

            if (isAssumedValueOk)
            {
                grpCategory = SimileEnums.GroupCategory.Band;
                int index = musicFile.Name.IndexOf(assumedValue);
                if (index != -1)
                {
                    newTitle         = musicFile.Name.Remove(0, assumedValue.Length);
                    artistOrBandName = assumedValue.Trim();
                }
            }
        }