/// <summary> /// Gathers and prepares all of the tracks in the set for download /// </summary> /// <param name="url">The url to the set</param> /// <param name="view">The view to report progress back to</param> public SCSetStream(string url, InfoReportProxy view) : base(url, view) { var playlistData = SCPlaylistData.LoadData(url); if (playlistData == null) { throw new HandledException("Downloaded set information was corrupted!", true); } if (playlistData.Tracks.Length < 1) { throw new HandledException("Playlist does not contain any tracks!", true); } for (var index = 0; index < playlistData.Tracks.Length; index++) { View.Report(String.Format("Processing track {0}/{1}", index + 1, playlistData.Tracks.Length)); var track = playlistData.Tracks[index]; var setItemReporter = new SetItemReportProxy(this, playlistData.Tracks.Length); try { var trackHandler = new SCTrackStream(track.PermalinkUrl, setItemReporter, track); _downloads.Add(trackHandler, null); } catch (Exception) { // Mark the item failed if it couldn't be processed setItemReporter.Close(); } } }
/// <summary> /// Gathers and prepares all of the tracks in the set for download /// </summary> /// <param name="url">The url to the set</param> /// <param name="view">The view to report progress back to</param> public SCSetStream(string url, InfoReportProxy view) : base(url, view) { var playlistData = SCPlaylistData.LoadData(url); if (playlistData == null) throw new HandledException("Downloaded set information was corrupted!", true); if (playlistData.Tracks.Length < 1) throw new HandledException("Playlist does not contain any tracks!", true); for (var index = 0; index < playlistData.Tracks.Length; index++) { View.Report(String.Format("Processing track {0}/{1}", index+1, playlistData.Tracks.Length)); var track = playlistData.Tracks[index]; var setItemReporter = new SetItemReportProxy(this, playlistData.Tracks.Length); try { var trackHandler = new SCTrackStream(track.PermalinkUrl, setItemReporter, track); _downloads.Add(trackHandler, null); } catch (Exception) { // Mark the item failed if it couldn't be processed setItemReporter.Close(); } } }