Public
Edited
May 3, 2023
Insert cell
Insert cell

const fs = require('fs-extra');
const fetch = require('isomorphic-fetch');

//console.log("hello")
var result;

//var types = ["artworks", "places", "heritages"]

function callAPI(i, artworks, pageNbr) {
console.log(i)
fetch(`https://picasso.iro.umontreal.ca/~mona/api/v2/artworks?paginate=50&page=${i}`)
.then(function(response) {
if (response.status >= 400) {
throw new Error("Bad response from server");
}
return response.json();
})
.then(function(data) {

console.log("data response length", data.data.length)
artworks = artworks.concat(data.data)

console.log("artworks length", artworks.length)


if (i < pageNbr)
callAPI(i+1, artworks, pageNbr)
else {
console.log(artworks.length)
fs.writeJSONSync('../data/artworks_v2_2022-07-28.json', artworks, {spaces: 2, encoding: 'utf8'});
return artworks;
}

})

}


fetch("https://picasso.iro.umontreal.ca/~mona/api/v2/artworks")
.then(function(response) {
if (response.status >= 400) {
throw new Error("Bad response from server");
}
return response.json();
})
.then(function(data) {
//récupère le nombre de pages
var pageNbr = data.meta.last_page;
console.log("initial page nbr", pageNbr)
console.log("total nbr of artworks", data.meta.total)

result = callAPI(1, [], pageNbr)

});


Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more