2017-03-02 7 views

Antwort

0

Zunächst gibt Musicbrainz, soweit ich weiß, nur XML zurück, so dass Sie die Ergebnisse in JSON konvertieren müssen.

Um Ihre Frage zu beantworten, sieht es nicht so aus, als würden Sie die gewünschten Daten in einem einzigen Anruf erhalten. (In der folgenden basiert von der XML Web Service Search documentation.)

Dieser Aufruf werden alle Künstler abrufen, die in einem bestimmten Jahr geboren wurden:

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

Ich glaube, Sie bräuchten 180 Anrufe schreiben (eine für jedes Jahr zwischen 1720 und 1900), um die Daten zu bekommen, die Sie brauchen. Sie müssten auch Künstler, die nach 1900 gestorben sind, manuell filtern, indem Sie den Knoten <end> innerhalb von <life-span> betrachten. Der Grund hierfür ist, dass das Feld end nur Künstler hervorbringt, die in einem bestimmten Jahr gestorben sind.

1

für diejenigen, die hier einen langen Beitrag lesen möchten nicht das OP alles nur für eine Abfrage in gefragt:

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

Dies sollte perfekte Ergebnisse zurück, und hat bekam möglich die beste Antwort zu sein. - alle Künstler, nach 1720 geboren und tot vor 1900, im JSON-Format, die ihre IDs abruft, und viele Informationen über sie ...

Die Erklärung und Denkprozess:

Da derzeit akzeptierte Antwort des Brian enthält einen Link zum API-Dokument, ich kann sagen, es ist technisch komplett, aber ich halte es nicht für angebracht, auf die Spezifikation die bestmögliche Antwort zu zeigen, und kann stark verbessert werden.

Erstens ist es einfach, json zurückzugeben, indem man den Parameter json format hinzufügt.

& fmt = json

Zweitens, während ich dort nicht rechnen, wo viele Boybands wieder in den Tag, da OP über Geburten und Todesfälle fragt wir schließen, können sie in nur daran interessiert sind Menschen statt Gruppen andere Arten von Künstlern.

UND-Typ: „Person“

An welcher Stelle wie Brian schlägt für jeden Enddatum einen weiteren Anruf und dann die Ergebnisse filtern, um nur diejenigen nehmen, die Sie

von 1900 starb tat Dazu müsste man weit mehr als 180 Suchanfragen durchführen, die beste Antwort suggeriert, sondern eher eine für jede Geburts- und jede Todesjahrkombination, also technisch von 1720 bis 1720, bis hin zu 1900-1900, meine Mathematik stinkt aber das sind tausende von Suchen.

Aber was macht dies immer noch eine solch schreckliche Suche, weil manchmal Tage, mit dem Jahr nur entweder geschrieben werden, und dann manchmal mit Monat Datum und Jahr geschrieben, so zum Beispiel, wenn Sie für 1929 und Ende

1900 beginnen suchen

Also, wenn ein Datum geschrieben wird nicht nur Jahr schließen Monat/Tag würden Sie keine Ergebnisse für diesen Künstler erhalten, weil der vollen Geburtstag:

ex:

id „2b8a16a9-468f-49b0 -93ea-5e6726f41643 "Typ" Person "Lebensspanne
beginnen „1929.11.10“ Ende „1990“ endete wahr

Deshalb brauchen, um Sie würden nur das Jahr mit jeder gute Ergebnisse zu erhalten, die Fuzzy-Suchsyntax

hinzufügen

musicbrainz.org/ws/2/artist/?query=begin:1960 UND Ende: 1990 ~ UND Typ: "Person" & fmt = json

Aber das nichts großes Problem von t zu lösen er Größe der Durchsuchungen vorgeschlagen, so wissen, seine LUCENS basierte ich beschlossen, einige LUCENS zu lernen und erkennen, gibt es Bereich Syntax:

Dafür können Sie mit einer Abfrage alle der oben genannten tun:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 1900 ] uND Ende: [1720 bis 1900] und geben Sie: "Person" & fmt = json

PS ich empfehle Ihre Parameterwerte starten Anführungszeichen hinzufügen oder sogar uRL-Codierung Bruch zu verhindern. Zum Beispiel lassen Sie die Anführungszeichen für Anfangs- und Endziffern im obigen Beispiel unverändert, aber der Typwert schlägt fehl.

Verwandte Themen