/ / Interroger https://musicbrainz.org pour tous les artistes - json, fetch, musicbrainz

Interroger https://musicbrainz.org pour tous les artistes - json, fetch, musicbrainz

Comment puis-je interroger tous les artistes nés après 1720 et morts avant 1900 le https://musicbrainz.org?

J'ai besoin de récupérer leurs identifiants et certaines informations les concernant. Est-il possible d'obtenir des données au format JSON?

Réponses:

0 pour la réponse № 1

Tout d'abord, Musicbrainz ne renvoie que du XML, pour autant que je sache, vous devrez donc convertir les résultats en JSON.

Pour répondre à votre question, il ne semble pas que vous puissiez obtenir les données souhaitées en un seul appel. (Ce qui suit est basé sur le Documentation de recherche de service Web XML.)

Cet appel permettra de récupérer tous les artistes nés au cours d'une année donnée:

http://musicbrainz.org/ws/2/artist/?query=begin:1720

Je pense que vous devez écrire 180 appels (un pour chaque année entre 1720 et 1900) pour obtenir les données dont vous avez besoin. Vous devez également filtrer manuellement les artistes décédés après 1900, en consultant le <end> nœud dans <life-span>. C'est parce que le end vous n'obtiendrez que des artistes décédés au cours d'une année donnée.


1 pour la réponse № 2

pour ceux qui ne veulent pas lire un long post, voici tout ce que l'OP a demandé en une seule requête:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 TO 1900] AND end:[1720 TO 1900] AND type:"person"&fmt=json

Cela devrait donner des résultats parfaits et aêtre la meilleure réponse possible. - tous les artistes, nés après 1720 et morts avant 1900, au format json, qui récupèrent leurs identifiants, et beaucoup d'informations à leur sujet ...

L'explication et le processus de réflexion:

Étant donné que la réponse actuellement acceptée par Brian comprendun lien vers le document API, je peux dire qu'il est techniquement complet mais je ne pense pas à pointer vers la spécification la meilleure réponse possible, et peut être grandement améliorée.

Tout d'abord, il est facile de renvoyer json en ajoutant le paramètre de format json.

& fmt = json

Deuxièmement, alors que je ne pense pas queles groupes de garçons à l'époque, étant donné que OP pose des questions sur les naissances et les décès, nous pouvons conclure qu'ils ne s'intéressent qu'aux personnes plutôt qu'aux groupes d'autres types d'artistes.

ET tapez: "personne"

À quel moment Brian suggère un autre appel pour chaque date de fin, puis filtre les résultats en prenant uniquement ceux qui sont morts en 1900.

Si vous faisiez cela, vous auriez besoin de faire beaucoup plusque 180 recherches, la meilleure réponse suggère, mais plutôt une pour chaque combinaison de naissance et d'année de décès, donc techniquement de 1720 à 1720, tout au long de 1900-1900, mes calculs pue, mais c'est des milliers de recherches.

Mais qu'est-ce qui rend cette recherche encore si horribleest parce que parfois les dates sont écrites uniquement avec l'année, puis parfois écrites avec la date et l'année du mois, par exemple si vous recherchez début 1929 et fin 1900

Donc, si une date est écrite pour inclure non seulement l'année mais le mois / la date, vous n'obtiendrez aucun résultat pour cet artiste en raison de l'anniversaire complet:

ex:

id "2b8a16a9-468f-49b0-93ea-5e6726f41643" type "personne" durée de vie
commencer "1929-11-10" fin "1990" terminé vrai

Par conséquent, pour obtenir de bons résultats en utilisant uniquement l'année, vous devez ajouter la syntaxe de recherche floue

musicbrainz.org/ws/2/artist/?query=begin:1960~ ET fin: 1990 ~ ET type: "personne" & fmt = json

Mais cela ne résout pas le gros problème de l'ampleur des recherches suggérées, donc connaissant son LUCENS, j'ai décidé d'apprendre quelques LUCENS, et de réaliser qu'il existe une syntaxe de plage:

Pour cela, vous pouvez faire tout ce qui précède avec une seule requête:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 TO 1900] ET fin: [1720 À 1900] ET tapez: "personne" & fmt = json

PS Je recommande de commencer à ajouter des citations ou même une URLencoder les valeurs de vos paramètres pour éviter les ruptures. Par exemple, laisser des guillemets sur les chiffres de début et de fin dans l'exemple ci-dessus n'a aucun problème, mais la valeur de type échouera.