public async Task<Auths> getMobileSession(string username, string password)
 {
     var parameters = new Dictionary<string, string>();
     parameters.Add("username", username);
     parameters.Add("password", password);
     parameters.Add("method", "auth.getMobileSession");
     parameters.Add("api_key", AuthKeys.APIkey);
     string sign = new Sign().Make(parameters);
     string url = string.Concat(AuthKeys.APIurl, "?method=auth.getMobileSession", "&format=json", "&api_key=", AuthKeys.APIkey, "&username="******"&password="******"&api_sig=", sign);
     try
     {
         string response = await new HttpCall().DoTask(url);
         JsonObject ob = JsonObject.Parse(response);
         if (ob.ContainsKey("session"))
         {
             Auths auth = new Auths();
             auth.username = JsonObject.Parse(ob.GetNamedObject("session").ToString()).GetNamedString("name");
             auth.sessionkey = JsonObject.Parse(ob.GetNamedObject("session").ToString()).GetNamedString("key");
             return auth;
         }
         if (ob.ContainsKey("error"))
         {
             double error = JsonObject.Parse(ob.GetNamedObject("error").ToString()).GetNamedNumber("code");
             //throw new LastFmException(error.ToString());
             return null;
         }
     }
     catch (Exception ex)
     {
         throw new HttpException(ex.ToString());
     }
     return null;
 }
        public async Task<bool> ScrobbleTrack(List<TrackData> track, string sessionkey)
        {
            string url = AuthKeys.APIurl + "?method=track.scrobble" + "&api_key=" + AuthKeys.APIkey + "&sk=" + sessionkey + "&format=json";
            var parameters = new Dictionary<string, string>();
            parameters.Add("method", "track.scrobble");
            parameters.Add("api_key", AuthKeys.APIkey);
            parameters.Add("sk", sessionkey);
            for (int i = 0; i < track.Count; i++)
            {
                parameters.Add("track[" + i + "]", track[i].track);
                parameters.Add("artist[" + i + "]", track[i].artist);
                parameters.Add("album[" + i + "]", track[i].album);
                parameters.Add("timestamp[" + i + "]", track[i].timestamp);
                url += "&track[" + i + "]=" + track[i].track;
                url += "&artist[" + i + "]=" + track[i].artist;
                url += "&album[" + i + "]=" + track[i].album;
                url += "&timestamp[" + i + "]=" + track[i].timestamp;
            }
            string sign = new Sign().Make(parameters);

            url += "&api_sig=" + sign;
            System.Diagnostics.Debug.WriteLine(url);
            try
            {
                string response = await new HttpCall().DoTask(url);
                JsonObject ob = JsonObject.Parse(response);
                System.Diagnostics.Debug.WriteLine(response);
                if (ob.ContainsKey("scrobbles"))
                {
                    return true;
                }
                if (ob.ContainsKey("error"))
                {
                    double error = JsonObject.Parse(ob.GetNamedObject("error").ToString()).GetNamedNumber("code");
                    throw new LastFmException(error.ToString());
                }
            }
            catch (Exception)
            {
                return false;
            }
            return false;
        }
        public async Task<bool> PlayingTrack(TrackData track, string sessionkey)
        {
            string url = AuthKeys.APIurl + "?method=track.updateNowPlaying" + "&api_key=" + AuthKeys.APIkey + "&sk=" + sessionkey + "&format=json";
            var parameters = new Dictionary<string, string>();
            parameters.Add("method", "track.updateNowPlaying");
            parameters.Add("api_key", AuthKeys.APIkey);
            parameters.Add("sk", sessionkey);
            parameters.Add("track", track.track);
            parameters.Add("artist", track.artist);
            parameters.Add("album", track.album);
            parameters.Add("timestamp", track.timestamp);
            url += "&track=" + track.track;
            url += "&artist=" + track.artist;
            url += "&album=" + track.album;
            url += "&timestamp=" + track.timestamp;
            string sign = new Sign().Make(parameters);

            url += "&api_sig=" + sign;
            System.Diagnostics.Debug.WriteLine(url);
            try
            {
                string response = await new HttpCall().DoTask(url);
                JsonObject ob = JsonObject.Parse(response);
                System.Diagnostics.Debug.WriteLine(response);
                if (ob.ContainsKey("nowplaying"))
                {
                    return true;
                }
                if (ob.ContainsKey("error"))
                {
                    double error = JsonObject.Parse(ob.GetNamedObject("error").ToString()).GetNamedNumber("code");
                    throw new LastFmException(error.ToString());
                }
            }
            catch (Exception)
            {
                return false;
            }
            return false;
        }