var argv = require('minimist')(process.argv.slice(2)); if (typeof argv.u !== "string") { console.log("username must be specified (-u ugnich)"); process.exit(1); } var messages = []; function getBlogData(blogUrl, callback) { fetch(blogUrl) .then(function(res) { return res.json() }) .then(function(msgs) { msgs.forEach(function(message) { messages.push(message); }); if (msgs.length == 20) { blog.searchParams.set("before_mid", msgs.slice(-1).pop().mid); setTimeout(getBlogData, 1000, blog, callback); } else { callback(); } }); }; var blog = new URL("https://api.juick.com/messages"); blog.searchParams.append("uname", argv.u); getBlogData(blog, function() { console.log(JSON.stringify(messages)); });