67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
|
// parse framalibre catalog and merge json in output
|
||
|
// API URL example 'https://framalibre.org/content/1075/json'
|
||
|
|
||
|
const fs = require('fs');
|
||
|
const axios = require('axios');
|
||
|
|
||
|
const min_id = 0;
|
||
|
// const max_id = 1417; // 1417 = fiche de "i hate money"
|
||
|
const max_id = 1417; // 1417 = fiche de "i hate money"
|
||
|
|
||
|
const mergedCatalog = [];
|
||
|
|
||
|
class Methodos {
|
||
|
fetchCatalog() {
|
||
|
|
||
|
const self = this;
|
||
|
for (var ii = min_id; ii <= max_id; ii++) {
|
||
|
console.log('ID', ii, ')')
|
||
|
|
||
|
console.log('call api with id ', ii)
|
||
|
axios.get(`https://framalibre.org/content/${ii}/json`)
|
||
|
.then((resp) => {
|
||
|
for (let index in resp.data.nodes) {
|
||
|
let toAdd = resp.data.nodes[index].node
|
||
|
console.log('fiche', toAdd.Titre)
|
||
|
this.addtocatalog(toAdd)
|
||
|
}
|
||
|
|
||
|
})
|
||
|
.then(resp => {
|
||
|
this.writeOutPut(mergedCatalog);
|
||
|
})
|
||
|
.catch(err => console.error(err))
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
writeOutPut(mergedCatalog) {
|
||
|
console.log('mergedCatalog.length', mergedCatalog.length)
|
||
|
|
||
|
let m = mergedCatalog.map(elem => JSON.stringify(elem));
|
||
|
let outJson = {}
|
||
|
for (let index in mergedCatalog) {
|
||
|
outJson[index * 1 + 1] = mergedCatalog[index];
|
||
|
}
|
||
|
let catalogPath = `./output/catalog_from_${min_id}_to_${max_id}.json`;
|
||
|
let stringifiedCatalog = JSON.stringify(outJson)
|
||
|
console.log('stringifiedCatalog', stringifiedCatalog)
|
||
|
fs.writeFile(catalogPath, stringifiedCatalog, (err) => {
|
||
|
if (err) throw err;
|
||
|
console.log('catalog.js Replaced!');
|
||
|
})
|
||
|
return mergedCatalog;
|
||
|
}
|
||
|
|
||
|
addtocatalog(index) {
|
||
|
mergedCatalog.push(index)
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
let m = new Methodos();
|
||
|
m.fetchCatalog();
|
||
|
|
||
|
|