Exemplo n.º 1
0
        public void OnExceedThresh()
        {
            if (lastfm.session_key == null)
            {
                try
                {
                    lastfm.Auth_getMobileSessionByAuthToken(Parent.pref.Username, Parent.pref.AuthToken);
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }

            int tagTracknumber = Lutea.Util.Util.GetTrackNumberInt(Controller.Current.MetaData("tagTracknumber"));
            var args           = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>("method", "track.scrobble"),
                new KeyValuePair <string, string>("timestamp", Lastfm.CurrentTimestamp.ToString()),
                new KeyValuePair <string, string>("artist", Controller.Current.MetaData("tagArtist").Replace("\n", ", ")),
                new KeyValuePair <string, string>("track", Controller.Current.MetaData("tagTitle")),
                new KeyValuePair <string, string>("album", Controller.Current.MetaData("tagAlbum")),
                new KeyValuePair <string, string>("albumArtist", Controller.Current.MetaData("tagAlbumArtist")),
                new KeyValuePair <string, string>("trackNumber", tagTracknumber <= 0 ? null : tagTracknumber.ToString()),
                new KeyValuePair <string, string>("duration", ((int)Controller.Current.Length).ToString()),
            };

            var success = false;

            for (int i = 0; i < RETRY_COUNT; i++)
            {
                try
                {
                    var result = lastfm.CallAPIWithSig(args);
                    if (result != null)
                    {
                        var scrobbles = result.GetElementsByTagName("scrobbles");
                        if (scrobbles.Count == 1)
                        {
                            var acceptecd = scrobbles.Item(0).Attributes["accepted"].Value;
                            if (acceptecd == "1")
                            {
                                success = true;
                                break;
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                }
            }
            Logger.Log("last.fm scrobble " + Controller.Current.MetaData("tagTitle") + (success ? " OK." : " Fail."));
        }