Example #1
0
        // -Path
        public Aimp4Group(StreamReader reader)
        {
            var line = reader.ReadLine();

            if (string.IsNullOrWhiteSpace(line))
            {
                return;
            }
            if (line.StartsWith("-"))
            {
                _path = line.Substring(1);
            }

            do
            {
                var pos = Util.GetActualPosition(reader);
                line = reader.ReadLine();

                if (line.StartsWith("-"))
                {
                    // Read past the end of the group, rewind stream and stop.
                    Util.SetActualPosition(reader, pos);
                    break;
                }
                var song = new Aimp4Song(line);
                Songs.Add(song);
            } while (!reader.EndOfStream);
        }
Example #2
0
        public static Aimp4Playlist UpgradePlaylist(Aimp3Playlist oldPlaylist)
        {
            var newPlaylist = new Aimp4Playlist
            {
                Name = oldPlaylist.Name,
                Path = System.IO.Path.ChangeExtension(oldPlaylist.Path, "aimppl4")
            };

            var contentDuration = 0;
            var contentFiles    = 0;
            var contentSize     = 0;

            foreach (var oldGroup in oldPlaylist.Groups)
            {
                var newSongs = new List <Song>();
                foreach (var oldSong in oldGroup.Songs)
                {
                    var newSong = new Aimp4Song(oldSong);
                    newSongs.Add(newSong);
                    contentDuration += newSong.Duration;
                    contentFiles++;
                    contentSize += newSong.Size;
                }
                newPlaylist.Groups.Add(new Aimp4Group(oldGroup.Path, newSongs));
            }

            newPlaylist.Summary.Add("ID", oldPlaylist.Id);
            newPlaylist.Summary.Add("Name", oldPlaylist.Name);
            newPlaylist.Summary.Add("NameIsAutoSet", "0");
            newPlaylist.Summary.Add("ContentDuration", contentDuration.ToString());
            newPlaylist.Summary.Add("ContentFiles", contentFiles.ToString());
            newPlaylist.Summary.Add("ContentSize", contentSize.ToString());
            newPlaylist.Summary.Add("PlaybackCursor", oldPlaylist.Cursor);

            newPlaylist.Settings.Add("Flags", oldPlaylist.Flags);
            newPlaylist.Settings.Add("FormatMainLine", "%IF(%R,%R - %T,%T)");
            newPlaylist.Settings.Add("FormatSecondLine", "%E :: %H, %B, %S");
            newPlaylist.Settings.Add("GroupFormatLine", "%D");

            return(newPlaylist);
        }