Поиск всех событий в географическом районе с помощью API-интерфейса bandintown - PullRequest
0 голосов
/ 30 декабря 2018

Итак, я пытаюсь получить все события для определенной области, используя API-интерфейс bandintown.Например, я заинтересован в организации всех предстоящих концертов в Сан-Франциско, Калифорния.Ключевым моментом здесь является то, что мне нужны все события, а не определенный исполнитель.

Используя некоторый код, который я нашел в stackoverflow, я немного подправил его, чтобы получать данные только из CA.Вот код:

// HTTP GET call to BandsInTown API
function httpGetAsync(theUrl, callback) { //theURL or a path to file
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (httpRequest.readyState == 4 && httpRequest.status == 200) {
        var data = JSON.parse(httpRequest.responseText);
        if (callback) {
            callback(data);
        }                   
    }
    else {
        //alert("error loading JSON doc");
    }
};

httpRequest.open('GET', theUrl, true); 
httpRequest.send(null);
}

//extracts data from api for each artist
function parseEvent(artist) {
var url = "https://rest.bandsintown.com/artists/" + artist + "/events?app_id=9c42d4dc9c1397201a4e3dc4d0bb840c&venue.region=" + region;

httpGetAsync(url, function(data) {
    var numEvents = Object.keys(data).length;
    console.log(numEvents)
    //var events = [];
    for (var j = 0; j < numEvents; j++) {
      if (data[j].venue.region == 'CA'){
        document.write(data[j].venue.name + "-> ");
        document.write("LAT:" + data[j].venue.latitude + " " + "LNG:" + data[j].venue.longitude);
        document.write("ARTIST: " + data[j].artists[3].name);
        document.write("DATE: " + data[j].datetime);
        document.write("Region:" + data[j].venue.region);
        document.write(" " + j + " "); 
        }
    }
}); 
}

var artists = ["Twenty One Pilots", "Atmosphere", "Vince Staples", "STRFKR", "Rainbow Kitten Surprise", "Mac Demarco", "Hippo Campus", "Drake", "John Legend", "Rihanna", "Flying Lotus", "MGMT", "Jason Derulo", "M83", "Bon Iver", "Childish Gambino","The Del McCoury Band","Dawes"];
var region = "CA";

for (var i = 0; i < artists.length; i++) {
parseEvent(artists[i]);
document.write(" ---NEXT ARTIST--- ");
}

Итак, я вставил массив 'Artist' только для того, чтобы все заработало и посмотрел, смогу ли я успешно подключиться к API - но в конечном итоге я бы хотел настроить это натянуть все события, а не только конкретных художников.Я еще не нашел каких-либо примеров этого, и документация bandstown невелика.Может кто-то указать мне верное направление?Большое спасибо!

1 Ответ

0 голосов
/ 30 декабря 2018

Это невозможно;их API просто не поддерживает это.Если вы посмотрите на их официальную документацию , вы заметите, что есть только две возможные конечные точки: вы можете получить информацию об исполнителе и события для конкретного исполнителя.Оба включают указание художника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...