【问题标题】:Spotify Search API - C# Code works but I get no result foundSpotify Search API - C# 代码有效,但我没有找到任何结果
【发布时间】:2022-01-21 23:00:41
【问题描述】:

亲爱的, 我正在使用以下代码查询 Spotify API

 public Spotify_Search_Result Search(string artist_name, string song_name, int limit=1) {

        Spotify_Search_Result result = new Spotify_Search_Result();


        string text = artist_name + "%20" + song_name;
        //string text = artist_name + "+" + song_name;
        //string text = artist_name + " " + song_name;

        //string text = Uri.EscapeDataString(artist_name) + " " + Uri.EscapeDataString(song_name);
        //string text = Uri.EscapeDataString(artist_name) + "%20" + Uri.EscapeDataString(song_name);
        //string text = Uri.EscapeDataString(artist_name) + "+" + Uri.EscapeDataString(song_name);
        string url = "https://api.spotify.com/v1/search";
        string query =  url + 
                        "?q="+
                        text+
                        "&type=track"+           
                        "&offset=0"+
                        "&limit="+
                        limit.ToString();

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(query);

        webRequest.Method = "GET";
        webRequest.ContentType = "application/json";
        webRequest.Accept = "application/json";
        webRequest.Headers.Add("Authorization", "Bearer " + access_token);
        
        String json = null;

        try
        {

            HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
           
            using (Stream respStr = resp.GetResponseStream())
            {
                using (StreamReader rdr = new StreamReader(respStr, Encoding.UTF8))
                {
                    //should get back a string i can then turn to json and parse for accesstoken
                    json = rdr.ReadToEnd();
                    rdr.Close();
                }
            }
        }
        catch (Exception ex) {
            Console.WriteLine("Spotify search result error: " + ex.Message + " ["+artist_name+"]-["+song_name+"]" );
        
        }
        if (json != null)
        {

            result = JsonConvert.DeserializeObject<Spotify_Search_Result>(json);
        }
        return result;
    }

问题:对于某些艺术家名称和歌曲名称的值,此代码不返回匹配项。 示例:艺术家姓名=Delta V song_name=Il primo giorno del mondo

可变 json 值将是: { “轨道”:{ "href" : "https://api.spotify.com/v1/search?query=Delta+V+Il+Primo+Giorno+Del​​+Mondo&type=track&offset=0&limit=20", “项目” : [ ], “限制”:20, “下一个”:空, “偏移”:0, “上一个”:空, “总计”:0 } }

如果我在 SpotifyForDevelopers 控制台中输入相同的艺术家名称和歌曲名称,我会得到很好的匹配。

现在...问题出在哪里?我认为这是我格式化“文本”并将其传递给 API 的方式。我不知道。 正如您从代码中看到的那样,我尝试了不同的格式化“文本”变量的方法。 关于我做错了什么的任何提示?

谢谢!

【问题讨论】:

    标签: c# api spotify


    【解决方案1】:

    我认为您的代码是正确的,问题可能出在“市场”参数上,即歌曲可能对某些国家/地区可用,而对其他国家/地区不可用。 如果您将市场设置为意大利 (IT),您的示例查询将返回正确的结果,但如果设置为美国 (US),则不会返回正确的结果,例如(注意添加的 ma​​rket=IT):

    https://api.spotify.com/v1/search?query=elta%20V%20Il%20primo%20giorno%20del%20mondo&type=track&offset=0&limit=20&market=IT

    也许正确设置市场可能有助于减少/避免问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2023-04-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多