2017-06-18 1 views
1

Ich habe den Spotify-API unter Verwendung von für eine genaue Spur von einem bestimmten Künstler abzufragen, eine GET-Anfrage zu machen, wie so:Ergebnis von Abfragen Spotify API unterscheidet mich von identischer Abfrage in Web-Client

https://api.spotify.com/v1/search?q=track:"track+title"+artist:"artist+name"&type=track 

(mit der Autorisierungsheader Bearer [access_token])

das ist wie in den meisten Fällen erwartet funktioniert, aber für eine Spur habe ich ein Problem: ich versuche, die Spur I Might Just Stay Home, with Shannon Lyon zu finden.

Mit meiner zuvor erfolgreichen Anforderung GET auf diesem angepasst Titel und Künstler verfolgt, ist dies, wie es aussehen soll: Null Ergebnisse jedoch

https://api.spotify.com/v1/search?q=track:"I+Might+Just+Stay+Home"+artist:"Shannon+Lyon"&type=track 

Dies ergibt. Und was macht es wirklich seltsam: Wenn ich die exakt gleiche Suchanfrage (Titel: "Ich + Macht + Nur + Aufenthalt + Home" + Künstler: "Shannon + Lyon") in die Spotify Web player kopieren, bekomme ich das eine Suchergebnis Ich erwarte. Und ich kann auch die gleiche Frage im Spotify Desktop-Player verwenden und mir das eine Ergebnis geben.

Also die Frage ist: Was könnte der Grund sein, warum ich kein Ergebnis von der API bekomme, während ich ein Ergebnis im Web- und Desktop-Client mit der gleichen Abfrage bekomme?

+0

Die Kunden scheinen nicht die öffentliche API zu verwenden, anstatt sie scheinen eine private API von einer Art zu verwenden, da dies nicht nur mit dieser Spur passiert. – Potray

Antwort

1

Ein wahrscheinlicher Grund, den Potray bereits gegeben hat. Das, was Sie im Client sehen, stammt von einer internen API. Sie unterscheiden sich geringfügig von der öffentlichen Web-API.

Ein anderer wahrscheinlicher Grund ist nur unterschiedliche Verfügbarkeit in verschiedenen Ländern und Ihre zwei Abfragen sind für verschiedene Länder, aber Sie werden es möglicherweise nicht erkennen.

Wenn Sie im Client suchen, ist es immer ein Benutzer, der sucht. Ein Benutzer ist mit einem Land verbunden. Sie können nur das spielen, was in Ihrem Land verfügbar ist. Wenn Sie also im Client suchen, können Sie nur wiedergeben, was Sie spielen können.

Wenn Sie mit der Web-API suchen, müssen Sie nicht angeben, welcher Spotify-Benutzer sucht. Sie müssen auch nicht angeben, in welchem ​​Land Suchergebnisse angezeigt werden sollen.

Da von Anfang an kein Land angegeben wurde, wurden in den Suchergebnissen die Titel aufgelistet, die in mindestens einem Land verfügbar waren. Seit letztem Jahr ist es wegen eines Fehlers stattdessen standardmäßig in den USA. Sie können das Land wechseln, aber Sie können nicht mehr in allen Ländern suchen.

https://github.com/spotify/web-api/issues/194

+0

Sie sind absolut richtig! Wenn ich der Anfrage * market = NO * hinzufüge, erhalte ich die erwartete Antwort. Ich denke, dass dieser Bug auch erklärt, warum ich ein Beispiel eines Suchergebnisses gesehen habe, das laut der API nur in den USA verfügbar sein sollte, aber ich fand das Lied trotzdem im Webplayer: das bestimmte Lied existiert wahrscheinlich in verschiedenen Versionen mit unterschiedliche Marktverfügbarkeit, aber da die Suche standardmäßig auf * market = US * gesetzt wurde, erschien sie so, als wäre sie in NO nicht verfügbar. – Nailuj

+0

Ich würde auch argumentieren, dass die Dokumentation (https://developer.spotify.com/web-api/search-item/) irreführend ist: Für den Abfrageparameter * market * heißt es "* Optional (...) ** Wenn ** ein Ländercode angegeben ist, werden nur Künstler, Alben und Titel mit Inhalten, die auf diesem Markt spielbar sind, zurückgegeben * ". Wenn der Markt weggelassen wird, würde ich erwarten, dass Ergebnisse von * jedem * Markt zurückgegeben werden. – Nailuj