public override void Load (StreamReader stream, bool validateHeader) { Xspf.Playlist playlist = new Xspf.Playlist (); playlist.DefaultBaseUri = BaseUri; playlist.Load (stream); Title = playlist.Title; foreach (Xspf.Track track in playlist.Tracks) { Dictionary<string, object> element = AddElement (); element["uri"] = track.GetLocationAt (0); } }
public override void Load(StreamReader stream, bool validateHeader) { Xspf.Playlist playlist = new Xspf.Playlist(); playlist.DefaultBaseUri = BaseUri; playlist.Load(stream); Title = playlist.Title; foreach (Xspf.Track track in playlist.Tracks) { Dictionary <string, object> element = AddElement(); element["uri"] = track.GetLocationAt(0); } }
public static void TestPlaylist(Playlist playlist) { Assert.AreEqual("Playlist Title", playlist.Title); Assert.AreEqual("Aaron Bockover", playlist.Creator); Assert.AreEqual("Comment", playlist.Annotation); Uri uri = new Uri("http://abock.org/"); Assert.AreEqual(uri, playlist.Location); Assert.AreEqual(uri, playlist.Identifier); Assert.AreEqual(uri, playlist.Image); Assert.AreEqual(uri, playlist.License); Assert.AreEqual(W3CDateTime.Parse("2005-01-08T17:10:47-05:00").LocalTime, playlist.Date); Assert.AreEqual(2, playlist.Meta.Count); foreach(MetaEntry meta in playlist.Meta) { Assert.AreEqual(new Uri("http://abock.org/fruit"), meta.Rel); if(meta.Value != "Apples" && meta.Value != "Oranges") { Assert.Fail("Expected one of 'Apples' or 'Oranges'"); } } Assert.AreEqual(2, playlist.Links.Count); foreach(LinkEntry link in playlist.Links) { if(!link.Rel.AbsoluteUri.StartsWith("http://abock.org")) { Assert.Fail("Incorrect rel, expected it to start with http://abock.org"); } if(!link.Value.AbsoluteUri.StartsWith("http://abock.org")) { Assert.Fail("Incorrect content, expected it to start with http://abock.org"); } } Assert.AreEqual(1, playlist.Tracks.Count); Track track = playlist.Tracks[0]; Assert.AreEqual("Track 1", track.Title); Assert.AreEqual("Aaron Bockover", track.Creator); Assert.AreEqual("Comment", track.Annotation); Assert.AreEqual("Album", track.Album); Assert.AreEqual(uri, track.Info); Assert.AreEqual(uri, track.Image); Assert.AreEqual(11, track.TrackNumber); Assert.AreEqual(TimeSpan.FromMilliseconds(5159), track.Duration); Assert.AreEqual(2, track.Locations.Count); }
private void MigrateXspf (string path) { try { Media.Playlists.Xspf.Playlist playlist = new Media.Playlists.Xspf.Playlist (); playlist.Load (path); foreach (Track track in playlist.Tracks) { try { MigrateXspfTrack (playlist, track); } catch (Exception e) { Log.Exception ("Could not migrate XSPF track", e); } } } catch (Exception e) { Log.Exception ("Could not migrat XSPF playlist", e); } }
private void MigrateXspf(string path) { try { Media.Playlists.Xspf.Playlist playlist = new Media.Playlists.Xspf.Playlist(); playlist.Load(path); foreach (Track track in playlist.Tracks) { try { MigrateXspfTrack(playlist, track); } catch (Exception e) { Log.Exception("Could not migrate XSPF track", e); } } } catch (Exception e) { Log.Exception("Could not migrat XSPF playlist", e); } }
public override void Save (Stream stream, ITrackModelSource source) { Xspf.Playlist playlist = new Xspf.Playlist (); playlist.Title = source.Name; playlist.Date = DateTime.Now; for (int ii = 0; ii < source.TrackModel.Count; ii++) { TrackInfo track = source.TrackModel[ii]; Xspf.Track xtrack = new Xspf.Track (); xtrack.AddLocation (new Uri (ExportUri (track.Uri), UriKind.RelativeOrAbsolute)); xtrack.Title = track.TrackTitle; xtrack.Creator = track.ArtistName; xtrack.Album = track.AlbumTitle; if (track.TrackNumber >= 0) { xtrack.TrackNumber = (uint)track.TrackNumber; } xtrack.Duration = track.Duration; playlist.AddTrack (xtrack); } playlist.Save (stream); }
private void MigrateXspfTrack(Media.Playlists.Xspf.Playlist playlist, Track track) { if (track.LocationCount <= 0) { return; } DatabaseTrackInfo station = new DatabaseTrackInfo(); station.PrimarySource = source; station.IsLive = true; station.Uri = GetSafeUri(track.Locations[0]); if (!String.IsNullOrEmpty(track.Title)) { station.TrackTitle = track.Title; } if (!String.IsNullOrEmpty(track.Creator)) { station.ArtistName = track.Creator; } if (!String.IsNullOrEmpty(track.Annotation)) { station.Comment = track.Annotation; } if (!String.IsNullOrEmpty(playlist.Title)) { station.Genre = playlist.Title; } if (track.Info != null) { station.MoreInfoUri = GetSafeUri(track.Info); } station.Save(); }
public override void Save(Stream stream, ITrackModelSource source) { Xspf.Playlist playlist = new Xspf.Playlist(); playlist.Title = source.Name; playlist.Date = DateTime.Now; for (int ii = 0; ii < source.TrackModel.Count; ii++) { TrackInfo track = source.TrackModel[ii]; Xspf.Track xtrack = new Xspf.Track(); xtrack.AddLocation(new Uri(ExportUri(track.Uri), UriKind.RelativeOrAbsolute)); xtrack.Title = track.TrackTitle; xtrack.Creator = track.ArtistName; xtrack.Album = track.AlbumTitle; if (track.TrackNumber >= 0) { xtrack.TrackNumber = (uint)track.TrackNumber; } xtrack.Duration = track.Duration; playlist.AddTrack(xtrack); } playlist.Save(stream); }
public Playlist LoadPlaylistFor (string station) { lock (this) { if (station != Station) return null; Playlist pl = new Playlist (); Stream stream = null; LastfmRequest radio_playlist = new LastfmRequest ("radio.getPlaylist", RequestType.AuthenticatedRead, ResponseFormat.Raw); try { radio_playlist.Send (); stream = radio_playlist.GetResponseStream (); pl.Load (stream); Log.Debug (String.Format ("Adding {0} Tracks to Last.fm Station {1}", pl.TrackCount, station), null); } catch (System.Net.WebException e) { Log.Warning ("Error Loading Last.fm Station", e.Message, false); return null; } catch (Exception e) { string body = null; try { using (StreamReader strm = new StreamReader (stream)) { body = strm.ReadToEnd (); } } catch {} Log.Warning ( "Error loading station", String.Format ("Exception:\n{0}\n\nResponse:\n{1}", e.ToString (), body ?? "Unable to get response"), false ); return null; } return pl; } }
public void Load() { Playlist playlist = new Playlist (); playlist.Load (complete_path); Helper.TestPlaylist (playlist); }