public Station(Pandora p, JToken d) { SkipLimitReached = false; SkipLimitTime = DateTime.MinValue; _pandora = p; ID = d["stationId"].ToString(); IdToken = d["stationToken"].ToString(); IsCreator = !d["isShared"].ToObject <bool>(); IsQuickMix = d["isQuickMix"].ToObject <bool>(); Name = d["stationName"].ToString(); InfoUrl = (string)d["stationDetailUrl"]; RefreshSeeds(); if (IsQuickMix) { Name = "Quick Mix"; _pandora.QuickMixStationIDs.Clear(); var qmIDs = d["quickMixStationIds"].ToObject <string[]>(); foreach (var qmid in qmIDs) { _pandora.QuickMixStationIDs.Add((string)qmid); } } bool downloadArt = true; if (!_pandora.ImageCachePath.Equals("") && File.Exists(ArtCacheFile)) { try { ArtImage = File.ReadAllBytes(ArtCacheFile); } catch (Exception) { Log.O("Error retrieving image cache file: " + ArtCacheFile); downloadArt = true; } downloadArt = false; } if (downloadArt) { var value = d.SelectToken("artUrl"); if (value != null) { ArtUrl = value.ToString(); if (ArtUrl != String.Empty) { try { ArtImage = PRequest.ByteRequest(ArtUrl); if (ArtImage.Length > 0) { File.WriteAllBytes(ArtCacheFile, ArtImage); } } catch (Exception) { Log.O("Error saving image cache file: " + ArtCacheFile); } } } //} } }
public Song(Pandora p, JToken song) { metaDict = new Dictionary <object, object>(); _pandora = p; TrackToken = (string)song["trackToken"]; Artist = (string)song["artistName"]; Album = (string)song["albumName"]; AmazonAlbumID = (string)song["amazonAlbumDigitalAsin"]; AmazonTrackID = (string)song["amazonSongDigitalAsin"]; var aacUrl = string.Empty; try { aacUrl = (string)song["audioUrlMap"]["highQuality"]["audioUrl"]; } catch { } if (_pandora.AudioFormat == PAudioFormat.AACPlus) { if (aacUrl == string.Empty) { throw new PandoraException(ErrorCodes.NO_AUDIO_URLS); } AudioUrl = aacUrl; } else { string[] songUrls = null; try { if (song["additionalAudioUrl"].HasValues) { songUrls = song["additionalAudioUrl"].ToObject <string[]>(); } else { songUrls = new string[] { (string)song["additionalAudioUrl"] } }; } catch { } if (songUrls == null || songUrls.Length == 0) { if (aacUrl != string.Empty) { AudioUrl = aacUrl; } else { throw new PandoraException(ErrorCodes.NO_AUDIO_URLS); } } else if (songUrls.Length == 1) { AudioUrl = songUrls[0]; } else if (songUrls.Length > 1) { if (_pandora.AudioFormat == PAudioFormat.MP3_HIFI) { if (songUrls.Length >= 2) { AudioUrl = songUrls[1]; } else { AudioUrl = songUrls[0]; } } else //default to PAudioFormat.MP3 { AudioUrl = songUrls[0]; } } } double gain = 0.0; double.TryParse(((string)song["trackGain"]), out gain); FileGain = gain; Rating = (((int)song["songRating"]) > 0 ? SongRating.love : SongRating.none); StationID = (string)song["stationId"]; SongTitle = (string)song["songName"]; SongDetailUrl = (string)song["songDetailUrl"]; ArtistDetailUrl = (string)song["artistDetailUrl"]; AlbumDetailUrl = (string)song["albumDetailUrl"]; AlbumArtUrl = (string)song["albumArtUrl"]; Tired = false; StartTime = DateTime.MinValue; Finished = false; PlaylistTime = Time.Unix(); if (!AlbumArtUrl.IsNullOrEmpty()) { try { AlbumImage = PRequest.ByteRequest(AlbumArtUrl); } catch { } } }