Ejemplo n.º 1
0
        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);
                        }
                    }
                }
                //}
            }
        }
Ejemplo n.º 2
0
        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 { }
            }
        }