【发布时间】:2018-12-30 18:29:31
【问题描述】:
所以,我正在尝试使用 bandintown 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 - 但最终,我想调整它以拉动所有事件,而不仅仅是特定的艺术家。我还没有找到这方面的任何例子,而且 bandintown 文档很少。谁能指出我正确的方向?非常感谢!
【问题讨论】:
标签: javascript json rest api parsing