使用bandsintown API搜索地理区域中的所有事件

时间:2018-12-30 18:29:31

标签: javascript json rest api parsing

因此,我正在尝试使用bandsintown API提取特定区域的所有事件。例如,我有兴趣在加利福尼亚州旧金山举办所有即将举行的音乐会。这里的关键是我想要所有活动,而不是特定的艺术家。

使用一些我在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--- ");
}

因此,我放入“艺术家”数组只是为了使其正常工作,并查看是否可以成功连接到API-但最终,我想对其进行调整以拉动所有事件,而不仅仅是特定的艺术家。我还没有找到任何这样的例子,并且bandsintown文档很少。谁能指出我正确的方向?非常感谢!

1 个答案:

答案 0 :(得分:1)

这是不可能的;他们的API根本不支持它。如果您查看他们的官方documentation,您会发现只有两个可能的端点:您可以获取艺术家信息,并且可以获取特定艺术家的事件。两者都涉及指定艺术家。