private static string SerializePlaylist(IPlaylist playlist, Format fileFormat) { switch (fileFormat) { case Format.XSPF: var xspfSerializer = new XspfSerializer(); var xspfPl = new XspfPlaylist(playlist); return(xspfSerializer.Serialize(xspfPl)); case Format.WPL: var wplSerializer = new WplSerializer(); var wplPlaylist = new WplPlaylist(playlist); return(wplSerializer.Serialize(wplPlaylist)); case Format.M3U: var m3USerializer = new M3uSerializer(); var m3UPlaylist = new M3uPlaylist(playlist); return(m3USerializer.Serialize(m3UPlaylist)); case Format.ASX: var asxSerializer = new AsxSerializer(); var asxPlaylist = new AsxPlaylist(playlist); return(asxSerializer.Serialize(asxPlaylist)); case Format.PLS: var plsSerializer = new PlsSerializer(); var plsPlaylist = new PlsPlaylist(playlist); return(plsSerializer.Serialize(plsPlaylist)); } return(String.Empty); }
public void Update_UpdateFileSaveAndCompareWithCorrect_Equal() { WplContent content = new WplContent(); WplPlaylist playlist = new WplPlaylist(); playlist.Title = "abc"; playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = "Nieznany wykonawca", AlbumTitle = "Nieznany album", Path = @"D:\abc.wav", TrackArtist = "Nieznany", TrackTitle = "abc" }); playlist.Author = "me"; playlist.Generator = "PlaylistsNET"; var stream = Helpers.ReadStream("2seq.wpl"); string updatedContent = content.Update(playlist, stream); stream.Dispose(); Helpers.Save("2seqoutputTest.wpl", updatedContent); string updated = Helpers.Read("2seqoutputTest.wpl"); string expected = Helpers.Read("2seqoutput.wpl"); Assert.AreEqual(updated, expected); }
public void Create_CreatePlaylistAndCompareWithFile_Equal() { WplContent content = new WplContent(); WplPlaylist playlist = new WplPlaylist(); playlist.Title = "Eurowizja"; playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = null, AlbumTitle = "", Duration = TimeSpan.FromMilliseconds(185364), Path = @"D:\Muzyka\Eurowizja\Eurowizja 2014\Can-linn & Kasey Smith - Heartbeat(Irlandia).mp3", TrackArtist = "Can-linn & Kasey Smith", TrackTitle = "Heartbeat" }); playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = "Elaiza", AlbumTitle = "Eurovision Song Contest 2014", Duration = TimeSpan.Zero, Path = @"D:\Muzyka\Eurowizja\Eurowizja 2014\Elaiza - Is It Right.mp3", TrackArtist = "Elaiza", TrackTitle = "Is It Right" }); string created = content.ToText(playlist); string fromFile = Helpers.Read("Playlist2.wpl"); Assert.AreEqual(created, fromFile); }
private static List <Meta> ExtractHeadMeta(WplPlaylist playlist) { return(playlist .Tags .Where(kv => kv.Key != TagNames.Author && kv.Key != TagNames.Title) .Select(kv => new Meta { Name = kv.Key, Content = kv.Value }) .ToList()); }
public void GetFromStream_ReadEmptyPlaylistAndCompareWithObject_Equal() { WplContent content = new WplContent(); WplPlaylist playlist = new WplPlaylist(); playlist.Title = ""; var stream = Helpers.ReadStream("Empty.wpl"); var file = content.GetFromStream(stream); Assert.AreEqual(playlist.Title, file.Title); Assert.AreEqual(playlist.PlaylistEntries.Count, file.PlaylistEntries.Count); stream.Dispose(); }
public void Serialize_GivenATag_SerializeTheTag() { var pattern = PrepareXmlForPatternMatching(@" <head> <meta name=""Foo"" content=""Bar"" /> </head> "); var playlist = new WplPlaylist(); playlist.Tags["Foo"] = "Bar"; Assert.Matches(pattern, serializer.Serialize(playlist)); }
public void Serialize_GivenAuthor_SerializeTheAuthor() { var pattern = PrepareXmlForPatternMatching(@" <head> <author>Foo</author> </head> "); var playlist = new WplPlaylist { Author = "Foo" }; Assert.Matches(pattern, serializer.Serialize(playlist)); }
public void Serialize_GivenTitle_SerializeTheTitle() { var pattern = PrepareXmlForPatternMatching(@" <head> <title>Foo</title> </head> "); var playlist = new WplPlaylist { Title = "Foo" }; Assert.Matches(pattern, serializer.Serialize(playlist)); }
public void Serialize_GivenAMedia_SerializeTheMedia() { var pattern = PrepareXmlForPatternMatching(@" <body> <seq> <media src=""Foo"" /> </seq> </body> "); var playlist = new WplPlaylist(); playlist.Add(new WplItem("Foo")); Assert.Matches(pattern, serializer.Serialize(playlist)); }
public void GetFromStream_ReadPlaylistAndCompareWithObject_Equal() { WplContent content = new WplContent(); WplPlaylist playlist = new WplPlaylist(); playlist.Title = "Eurowizja"; playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = null, AlbumTitle = "", Duration = TimeSpan.FromMilliseconds(185364), Path = @"D:\Muzyka\Eurowizja\Eurowizja 2014\Can-linn & Kasey Smith - Heartbeat(Irlandia).mp3", TrackArtist = "Can-linn & Kasey Smith", TrackTitle = "Heartbeat" }); playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = "Elaiza", AlbumTitle = "Eurovision Song Contest 2014", Path = @"D:\Muzyka\Eurowizja\Eurowizja 2014\Elaiza - Is It Right.mp3", TrackArtist = "Elaiza", TrackTitle = "Is It Right" }); var stream = Helpers.ReadStream("Playlist.wpl"); var file = content.GetFromStream(stream); stream.Dispose(); Assert.AreEqual(playlist.PlaylistEntries.Count, file.PlaylistEntries.Count); Assert.AreEqual(playlist.Title, file.Title); Assert.AreEqual(playlist.PlaylistEntries[0].AlbumArtist, file.PlaylistEntries[0].AlbumArtist); Assert.AreEqual(playlist.PlaylistEntries[1].AlbumArtist, file.PlaylistEntries[1].AlbumArtist); Assert.AreEqual(String.IsNullOrEmpty(playlist.PlaylistEntries[0].AlbumTitle), String.IsNullOrEmpty(file.PlaylistEntries[0].AlbumTitle)); Assert.AreEqual(playlist.PlaylistEntries[1].AlbumTitle, file.PlaylistEntries[1].AlbumTitle); Assert.AreEqual(playlist.PlaylistEntries[0].TrackArtist, file.PlaylistEntries[0].TrackArtist); Assert.AreEqual(playlist.PlaylistEntries[1].TrackArtist, file.PlaylistEntries[1].TrackArtist); Assert.AreEqual(playlist.PlaylistEntries[0].TrackTitle, file.PlaylistEntries[0].TrackTitle); Assert.AreEqual(playlist.PlaylistEntries[1].TrackTitle, file.PlaylistEntries[1].TrackTitle); Assert.AreEqual(playlist.PlaylistEntries[0].Path, file.PlaylistEntries[0].Path); Assert.AreEqual(playlist.PlaylistEntries[1].Path, file.PlaylistEntries[1].Path); stream.Dispose(); }
public void Serialize_GivenAuthor_SerializeTheAuthor() { var pattern = PrepareXmlForPatternMatching(@" <head> <author>Foo</author> </head> "); var playlist = new WplPlaylist { Author = "Foo" }; var serializer = new WplSerializer(); var actual = serializer.Serialize(playlist); actual.Should().MatchRegex(pattern); }
public void Serialize_GivenATag_SerializeTheTag() { var pattern = PrepareXmlForPatternMatching(@" <head> <meta name=""Foo"" content=""Bar"" /> </head> "); var serializer = new WplSerializer(); var playlist = new WplPlaylist(); playlist.Tags["Foo"] = "Bar"; var actual = serializer.Serialize(playlist); actual.Should().MatchRegex(pattern); }
public void Serialize_GivenTitle_SerializeTheTitle() { var pattern = PrepareXmlForPatternMatching(@" <head> <title>Foo</title> </head> "); var playlist = new WplPlaylist { Title = "Foo" }; var serializer = new WplSerializer(); var actual = serializer.Serialize(playlist); actual.Should().MatchRegex(pattern); }
public void Serialize_GivenAMedia_SerializeTheMedia() { var pattern = PrepareXmlForPatternMatching(@" <body> <seq> <media src=""Foo"" /> </seq> </body> "); var playlist = new WplPlaylist(); playlist.Add(new WplItem("Foo")); var serializer = new WplSerializer(); var actual = serializer.Serialize(playlist); actual.Should().MatchRegex(pattern); }
public void Test_UnEscape() { WplContent content = new WplContent(); WplPlaylist playlist = new WplPlaylist(); playlist.Title = "Eurowizja"; playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = "E<>laiza", AlbumTitle = "E<u>r'o&vision \"Song Contest 2014", Duration = TimeSpan.Zero, Path = @"D:\Muzyka\Eurowizja\Eurowizja 2014\Elaiza - Is It Right.mp3", TrackArtist = "Elaiza", TrackTitle = "Is It Right" }); string created = content.ToText(playlist); string fromFile = Helpers.Read("playlist3b.wpl"); Assert.AreEqual(created, fromFile); }
/// <summary> /// Returns the playlist in wpl format. /// </summary> private string CreateWplPlaylist() { var playlist = new WplPlaylist() { Title = _album.Title, }; foreach (Track track in _album.Tracks) { playlist.PlaylistEntries.Add(new WplPlaylistEntry() { AlbumArtist = _album.Artist, AlbumTitle = _album.Title, Duration = TimeSpan.FromSeconds(track.Duration), Path = Path.GetFileName(track.Path), TrackArtist = _album.Artist, TrackTitle = track.Title, }); } return(new WplContent().ToText(playlist)); }
public RawPlaylist(WplPlaylist wplPlaylist) { Head = new Head(wplPlaylist); Body = new Body(wplPlaylist.Items); }
public Head(WplPlaylist wplPlaylist) { Meta = ExtractHeadMeta(wplPlaylist); Author = wplPlaylist.Author; Title = wplPlaylist.Title; }
private void SavePlaylistFile(Playlist item) { // this is probably best done as a metadata provider // saving a file over itself will require some work to prevent this from happening when not needed var playlistPath = item.Path; var extension = Path.GetExtension(playlistPath); if (string.Equals(".wpl", extension, StringComparison.OrdinalIgnoreCase)) { var playlist = new WplPlaylist(); foreach (var child in item.GetLinkedChildren()) { var entry = new WplPlaylistEntry() { Path = NormalizeItemPath(playlistPath, child.Path), TrackTitle = child.Name, AlbumTitle = child.Album }; var hasAlbumArtist = child as IHasAlbumArtist; if (hasAlbumArtist != null) { entry.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault(); } var hasArtist = child as IHasArtist; if (hasArtist != null) { entry.TrackArtist = hasArtist.Artists.FirstOrDefault(); } if (child.RunTimeTicks.HasValue) { entry.Duration = TimeSpan.FromTicks(child.RunTimeTicks.Value); } playlist.PlaylistEntries.Add(entry); } string text = new WplContent().ToText(playlist); File.WriteAllText(playlistPath, text); } if (string.Equals(".zpl", extension, StringComparison.OrdinalIgnoreCase)) { var playlist = new ZplPlaylist(); foreach (var child in item.GetLinkedChildren()) { var entry = new ZplPlaylistEntry() { Path = NormalizeItemPath(playlistPath, child.Path), TrackTitle = child.Name, AlbumTitle = child.Album }; var hasAlbumArtist = child as IHasAlbumArtist; if (hasAlbumArtist != null) { entry.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault(); } var hasArtist = child as IHasArtist; if (hasArtist != null) { entry.TrackArtist = hasArtist.Artists.FirstOrDefault(); } if (child.RunTimeTicks.HasValue) { entry.Duration = TimeSpan.FromTicks(child.RunTimeTicks.Value); } playlist.PlaylistEntries.Add(entry); } string text = new ZplContent().ToText(playlist); File.WriteAllText(playlistPath, text); } if (string.Equals(".m3u", extension, StringComparison.OrdinalIgnoreCase)) { var playlist = new M3uPlaylist(); playlist.IsExtended = true; foreach (var child in item.GetLinkedChildren()) { var entry = new M3uPlaylistEntry() { Path = NormalizeItemPath(playlistPath, child.Path), Title = child.Name, Album = child.Album }; var hasAlbumArtist = child as IHasAlbumArtist; if (hasAlbumArtist != null) { entry.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault(); } if (child.RunTimeTicks.HasValue) { entry.Duration = TimeSpan.FromTicks(child.RunTimeTicks.Value); } playlist.PlaylistEntries.Add(entry); } string text = new M3uContent().ToText(playlist); File.WriteAllText(playlistPath, text); } if (string.Equals(".m3u8", extension, StringComparison.OrdinalIgnoreCase)) { var playlist = new M3uPlaylist(); playlist.IsExtended = true; foreach (var child in item.GetLinkedChildren()) { var entry = new M3uPlaylistEntry() { Path = NormalizeItemPath(playlistPath, child.Path), Title = child.Name, Album = child.Album }; var hasAlbumArtist = child as IHasAlbumArtist; if (hasAlbumArtist != null) { entry.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault(); } if (child.RunTimeTicks.HasValue) { entry.Duration = TimeSpan.FromTicks(child.RunTimeTicks.Value); } playlist.PlaylistEntries.Add(entry); } string text = new M3u8Content().ToText(playlist); File.WriteAllText(playlistPath, text); } if (string.Equals(".pls", extension, StringComparison.OrdinalIgnoreCase)) { var playlist = new PlsPlaylist(); foreach (var child in item.GetLinkedChildren()) { var entry = new PlsPlaylistEntry() { Path = NormalizeItemPath(playlistPath, child.Path), Title = child.Name }; if (child.RunTimeTicks.HasValue) { entry.Length = TimeSpan.FromTicks(child.RunTimeTicks.Value); } playlist.PlaylistEntries.Add(entry); } string text = new PlsContent().ToText(playlist); File.WriteAllText(playlistPath, text); } }