예제 #1
0
파일: Factory.cs 프로젝트: MRoc/puremp3
        private static Release ParseRelease(string text, bool exactMatch)
        {
            if (exactMatch)
            {
                string responseCode = StringSplitOff.SplitOffBySpace(ref text);
            }

            Release release = new Release();

            release.Genre  = StringSplitOff.SplitOffBySpace(ref text);
            release.Id     = UInt32.Parse(StringSplitOff.SplitOffBySpace(ref text), NumberStyles.HexNumber).ToString();
            release.Artist = StringSplitOff.SplitOffByDivide(ref text);
            release.Title  = text;

            return(release);
        }
예제 #2
0
파일: Factory.cs 프로젝트: MRoc/puremp3
        public static Release CreateReleaseFromResponse(IEnumerable <string> data)
        {
            Release      release = new Release();
            List <Track> tracks  = new List <Track>();

            release.Tracks = tracks;

            foreach (string line in data)
            {
                // check for comment
                if (line.Length == 0 || line[0] == '#')
                {
                    continue;
                }

                int index = line.IndexOf('=');

                // couldn't find equal sign have no clue what the data is
                if (index == -1)
                {
                    continue;
                }

                string field = line.Substring(0, index);

                // move it past the equal sign
                index++;

                switch (field)
                {
                case "DISCID":
                    release.Id = line.Substring(index);
                    continue;

                case "DTITLE":
                    release.Artist += line.Substring(index);
                    continue;

                case "DYEAR":
                    release.Year = line.Substring(index);
                    continue;

                case "DGENRE":
                    release.Genre += line.Substring(index);
                    continue;

                case "EXTD":
                    release.AdditionalData += line.Substring(index);
                    continue;

                case "PLAYORDER":
                    //release.PlayOrder += line.Substring(index);
                    continue;

                default:
                    if (field.StartsWith("TTITLE"))
                    {
                        int    trackNumber = int.Parse(field.Substring("TTITLE".Length));
                        string title       = line.Substring(index);

                        if (trackNumber < tracks.Count)
                        {
                            tracks[trackNumber].Title += title;
                        }
                        else
                        {
                            tracks.Add(new Track(title));
                        }
                    }
                    else if (field.StartsWith("EXTT"))
                    {
                        int    trackNumber  = int.Parse(field.Substring("EXTT".Length));
                        string extendedData = line.Substring(index);

                        if (trackNumber < tracks.Count)
                        {
                            tracks[trackNumber].AdditionalData += extendedData;
                        }
                        else
                        {
                            tracks.Add(new Track("", extendedData));
                        }
                    }
                    continue;
                }
            }

            // split the title and artist from DTITLE; see if we have a slash
            if (release.Artist.IndexOf(" / ") != -1)
            {
                string titleArtist = release.Artist;
                release.Artist = StringSplitOff.SplitOffByDivide(ref titleArtist);
                release.Title  = titleArtist.Trim();
            }

            return(release);
        }