/ / Consultando https://musicbrainz.org para todos os artistas - json, fetch, musicbrainz

Consultando https://musicbrainz.org para todos os artistas - json, fetch, musicbrainz

Como posso consultar todos os artistas que nasceram depois de 1720 e morreram antes de 1900 em https://musicbrainz.org?

Preciso recuperar seus IDs e algumas informações sobre eles. É possível obter dados no formato JSON?

Respostas:

0 para resposta № 1

Primeiro, o Musicbrainz retorna apenas XML, tanto quanto eu sei, então você terá que converter os resultados em JSON.

Para responder sua pergunta, não parece que você poderá obter os dados desejados em uma única chamada. (O seguinte é baseado no Documentação da Procura de Serviço da Web XML.)

Esta chamada recuperará todos os artistas que nasceram em um determinado ano:

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

Eu acredito que você precisaria escrever 180 chamadas (uma para cada ano entre 1720 e 1900) para obter os dados necessários. Você também precisaria filtrar manualmente os artistas que morreram após 1900, olhando para o <end> nó dentro <life-span>. Isso é porque o end O campo só oferece artistas que morreram em um ano específico.


1 para resposta № 2

para quem não quer ler um post longo, aqui está tudo o que o OP solicitou em apenas uma consulta:

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

Isso deve retornar resultados perfeitos e tempara ser a melhor resposta possível. - todos os artistas, nascidos depois de 1720 e mortos antes de 1900, no formato json, que recupera seus IDs e muitas informações sobre eles ...

A explicação e o processo de pensamento:

Como a resposta atualmente aceita por Brian incluiComo um link para o documento da API, posso dizer que é tecnicamente completo, mas não considero apontar as especificações como a melhor resposta possível e pode ser bastante aprimorado.

Primeiramente, é fácil retornar o json adicionando o parâmetro formato json.

& fmt = json

Em segundo lugar, enquanto eu não acho lá onde muitosboy bands na época, dado que o OP está perguntando sobre nascimentos e mortes, podemos concluir que eles estão interessados ​​apenas em pessoas, em vez de agrupar outros tipos de artistas.

AND tipo: "pessoa"

Nesse momento, como Brian sugere outra chamada para cada data de término, filtre os resultados, levando apenas aqueles que morreram em 1900.

Se você fez isso, precisaria fazer muito maisde 180 pesquisas, a melhor resposta sugere, mas uma para cada combinação de nascimento e ano de morte, de modo que, tecnicamente entre 1720 e 1720, entre 1900-1900, minha matemática fede, mas são milhares de pesquisas.

Mas o que torna isso ainda uma pesquisa tão horrívelé porque, às vezes, as datas são escritas apenas com o ano e, às vezes, com a data e o ano do mês, por exemplo, se você procurar o início de 1929 e o final de 1900

Portanto, se uma data for escrita para incluir não apenas ano, mas mês / data, você não obterá nenhum resultado para este artista por causa do aniversário completo:

ex:

id "2b8a16a9-468f-49b0-93ea-5e6726f41643" type "Person" Tempo de vida
begin "1929-11-10" final "1990" terminou verdadeiro

Portanto, para obter bons resultados usando apenas o ano, você precisará adicionar a sintaxe de pesquisa difusa

musicbrainz.org/ws/2/artist/?query=begin:1960~ AND final: 1990 ~ AND tipo: "pessoa" & fmt = json

Mas isso não ajuda em nada a resolver um grande problema da magnitude das pesquisas sugeridas; portanto, conhecendo sua base no LUCENS, decidi aprender algumas LUCENS e perceber que há uma sintaxe de alcance:

Para isso, você pode fazer todas as opções acima com uma consulta:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 PARA 1900] E fim: [1720 a 1900] AND tipo: "pessoa" & fmt = json

PS Eu recomendo começar a adicionar aspas ou até URLcodificando seus valores de parâmetro para evitar quebras. Por exemplo, deixar de aspas os números de início e fim no exemplo acima não tem nenhum problema, mas o valor de tipo falhará.