Example #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);
                        }
                    }
                }
                //}
            }
        }
Example #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 { }
            }
        }
Example #3
0
 public void SetStationSortOrder(Pandora.SortOrder order)
 {
     _pandora.StationSortOrder = order;
 }
Example #4
0
        public bool Initialize(string bassRegEmail = "", string bassRegKey = "")
        {
            _cqman = new ControlQueryManager();
            _cqman.NextRequest += _cqman_NextRequest;
            _cqman.PauseRequest += _cqman_PauseRequest;
            _cqman.PlayRequest += _cqman_PlayRequest;
            _cqman.StopRequest += _cqman_StopRequest;
            _cqman.PlayStateRequest += _cqman_PlayStateRequest;
            _cqman.SetSongMetaRequest += _cqman_SetSongMetaRequest;

            _sessionWatcher = new SessionWatcher();
            RegisterPlayerControlQuery(_sessionWatcher);

            _pandora = new Pandora();
            _pandora.ConnectionEvent += _pandora_ConnectionEvent;
            _pandora.StationUpdateEvent += _pandora_StationUpdateEvent;
            _pandora.FeedbackUpdateEvent += _pandora_FeedbackUpdateEvent;
            _pandora.LoginStatusEvent += _pandora_LoginStatusEvent;
            _pandora.StationsUpdatingEvent += _pandora_StationsUpdatingEvent;
            _pandora.QuickMixSavedEvent += _pandora_QuickMixSavedEvent;

            _bass = new BassAudioEngine(bassRegEmail, bassRegKey);
            _bass.PlaybackProgress += bass_PlaybackProgress;
            _bass.PlaybackStateChanged += bass_PlaybackStateChanged;
            _bass.PlaybackStart += bass_PlaybackStart;
            _bass.PlaybackStop += bass_PlaybackStop;
            _bass.InitBass();

            _playlist = new Playlist();
            _playlist.MaxPlayed = 8;
            _playlist.PlaylistLow += _playlist_PlaylistLow;
            _playlist.PlayedSongQueued += _playlist_PlayedSongQueued;
            _playlist.PlayedSongDequeued += _playlist_PlayedSongDequeued;

            DailySkipLimitReached = false;
            DailySkipLimitTime = DateTime.MinValue;

            LoggedIn = false;
            return true;
        }
Example #5
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 { }
            }
        }
Example #6
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"];

            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);
                        }
                    }
                }
                //}

            }
        }