コード例 #1
0
        private CueSongInfo ReadTrackInfo(StreamReader reader, CueSongInfo model)
        {
            CueSongInfo info = model.Clone() as CueSongInfo;

            while (!reader.EndOfStream)
            {
                string str = reader.ReadLine().Trim();
                if (string.IsNullOrEmpty(str))
                {
                    continue;
                }
                int    splitpos = str.IndexOf(' ');
                string cmd      = str.Substring(0, splitpos).ToUpper();
                string value    = str.Substring(splitpos).Replace('\"', ' ').Trim();

                switch (cmd)
                {
                case "TITLE":
                    info.Title = value.Trim();
                    break;

                case "PERFORMER":
                    info.Artist = value.Trim();
                    break;

                case "GERNE":
                    info.Genre = value.Trim();
                    break;

                case "YEAR":
                    info.Year = value.Trim();
                    break;

                case "ISRC":
                    info.Isrc = value.Trim();
                    break;

                case "INDEX":
                    int     timesplit = value.IndexOf(' ');
                    string  type      = value.Substring(0, timesplit);
                    string  tstr      = value.Substring(timesplit).Trim();
                    CueTime time      = new CueTime(0, 0, 0);
                    if (CueTime.TryParse(tstr, out time))
                    {
                        if (type == "01")
                        {
                            info.StartTime = time;
                        }
                        else
                        {
                            info.EndTime = time;
                        }
                    }


                    break;

                case "REM":
                    string v2cmd   = value.Substring(0, value.IndexOf(' ')).ToUpper();
                    string v2value = value.Substring(value.IndexOf(' '));
                    if (v2cmd == "DATE")
                    {
                        model.Year = v2value.Trim();
                    }
                    else if (v2cmd == "GENRE")
                    {
                        model.Genre = v2value.Trim();
                    }
                    break;

                case "TRACK":
                    int t;
                    if (int.TryParse(value.Substring(0, 2), out t))
                    {
                        model.Track = t;
                    }
                    CueSongInfo song = ReadTrackInfo(reader, model);
                    songs.Add(song);
                    break;
                }
            }
            return(info);
        }