/ / Sprawdzanie https://musicbrainz.org dla wszystkich artystów - json, fetch, musicbrainz

Sprawdzanie https://musicbrainz.org dla wszystkich artystów - json, fetch, musicbrainz

Jak mogę zapytać o wszystkich artystów urodzonych po 1720 r. I zmarłych przed 1900 r https://musicbrainz.org?

Muszę odzyskać ich identyfikatory i niektóre informacje na ich temat. Czy można uzyskać dane w formacie JSON?

Odpowiedzi:

0 dla odpowiedzi № 1

Po pierwsze, Musicbrainz zwraca tylko XML, o ile wiem, więc będziesz musiał przekonwertować wyniki na JSON.

Aby odpowiedzieć na twoje pytanie, nie wygląda na to, że będziesz w stanie uzyskać potrzebne dane w jednym połączeniu. (Poniższe informacje oparte są na Dokumentacja wyszukiwarki XML Web Service.)

Ta rozmowa odzyska wszystkich artystów urodzonych w danym roku:

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

Sądzę, że będziesz musiał napisać 180 połączeń (po jednym rocznie między 1720 a 1900 rokiem), aby uzyskać potrzebne dane. Musisz także ręcznie odfiltrować artystów, którzy zmarli po 1900 roku, patrząc na <end> węzeł w obrębie <life-span>. To dlatego, że end pole dostanie tylko artystów, którzy zmarli w określonym roku.


1 dla odpowiedzi nr 2

dla tych, którzy nie chcą czytać długich postów, oto wszystko, o co OP poprosił tylko w jednym zapytaniu:

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

To powinno zwrócić doskonałe wyniki i mabyć najlepszą możliwą odpowiedzią. - wszyscy artyści, urodzeni po 1720 roku i martwi przed 1900 rokiem, w formacie json, który pobiera ich identyfikatory i wiele informacji o nich ...

Wyjaśnienie i proces myślowy:

Ponieważ obecnie akceptowana odpowiedź Briana obejmujelink do dokumentu API, mogę powiedzieć, że jest on technicznie kompletny, ale nie uważam wskazywania specyfikacji za najlepszą możliwą odpowiedź i można go znacznie poprawić.

Po pierwsze, łatwo jest zwrócić json, dodając parametr formatu json.

& fmt = json

Po drugie, nie sądzę, że tam, gdzie wieluzespoły chłopięce w przeszłości, biorąc pod uwagę, że OP pyta o narodziny i zgony, możemy stwierdzić, że są zainteresowani tylko ludźmi, a nie grupami innych artystów.

ORAZ wpisz: „osoba”

W którym momencie Brian sugeruje kolejne wezwanie na każdą datę końcową, a następnie filtruje wyniki biorąc tylko tych, którzy zmarli do 1900 roku.

Jeśli to zrobisz, będziesz musiał zrobić znacznie więcejniż 180 wyszukiwań sugeruje najlepsza odpowiedź, ale raczej jedna na każde narodziny i każdą kombinację roku śmierci, więc technicznie od 1720 do 1720, aż do 1900-1900, moja matematyka śmierdzi, ale to tysiące wyszukiwań.

Ale co sprawia, że ​​wciąż tak okropne poszukiwaniato dlatego, że czasami daty są zapisywane tylko z rokiem, a następnie czasami z datą i rokiem miesiąca, na przykład jeśli szukasz początku 1929 i końca 1900

Więc jeśli data jest napisana z uwzględnieniem nie tylko roku, ale miesiąca / daty, nie uzyskasz żadnych wyników dla tego artysty z powodu pełnych urodzin:

dawny:

id "2b8a16a9-468f-49b0-93ea-5e6726f41643" typ "Osoba" długość życia
rozpocznij „1929-11-10” koniec „1990” zakończyło się prawdą

Dlatego, aby uzyskać dobre wyniki za pomocą tylko roku, należy dodać składnię wyszukiwania rozmytego

musicbrainz.org/ws/2/artist/?query=begin:1960~ ORAZ koniec: 1990 ~ ORAZ wpisz: „person” i fmt = json

Ale to nie rozwiązuje wielkiego problemu związanego z ilością sugerowanych wyszukiwań, więc znając jego bazę LUCENS postanowiłem nauczyć się LUCENS i zdać sobie sprawę, że istnieje składnia zakresu:

Dlatego możesz wykonać wszystkie powyższe czynności za pomocą jednego zapytania:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 DO 1900] I koniec: [1720–1900] ORAZ wpisz: „osoba” i fmt = json

PS Polecam zacząć dodawać cytaty, a nawet adres URLkodowanie wartości parametrów, aby zapobiec uszkodzeniu. Na przykład pozostawienie cudzysłowów liczb początkowych i końcowych w powyższym przykładzie nie stanowi problemu, ale wyłączenie wartości typu zakończy się niepowodzeniem.