const request = require('request'); const fs = require('fs'); const renderer = require('sdftosvg'); const SVG_OPTS = { backgroundColor: 'none', } function fetch(i) { return new Promise((resolve, reject) => { const url = `https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${i}/record/SDF/?record_type=2d&response_type=save&response_basename=Structure2D_CID_2519`; const output = `./../client/assets/molecules/${i}.svg`; request(url, function cb(err, res, body) { if (err) reject(err); // write file fs.writeFile(`./molecules/Structure2D_CID_${i}.sdf`, body, function written(err) { if (err) reject(err); }); // write svg renderer.renderSdfToSvg(body, SVG_OPTS, function(err, svg) { if (err) reject(err); fs.writeFile(output, svg, function written(err) { if (err) reject(err); resolve(); }); }); }); }); } async function loop() { for (var i = 10000; i >= 0; i--) { try { await fetch(i); console.log('finished record', i); } catch (e) { console.error(e); } } } loop();