Skip to content

Instantly share code, notes, and snippets.

@Fraasi
Last active April 30, 2018 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fraasi/a249b69aedb2d6066013f9cf4825bb5f to your computer and use it in GitHub Desktop.
Save Fraasi/a249b69aedb2d6066013f9cf4825bb5f to your computer and use it in GitHub Desktop.
Node script to download all your codepen pens as zip file
// couldn't get scraper to get the data so I just used console
// easy to tweak for your own codepen page
// get data from console in 'https://codepen.io/Fraasi/pens/public/?grid_type=list';
// var aNodes = document.querySelectorAll('tr > td.title a')
// var pens = {};
// aNodes.forEach( a => { pens[a.innerText] = a.href; })
// copy(pens)
var pens = {
"D3 zoomable-draggable datapoint map":"https://codepen.io/Fraasi/pen/zwgdyV",
"Mapping data in Leaflet map":"https://codepen.io/Fraasi/pen/xdeJEM",
"Audio visualizer - mirrored bars":"https://codepen.io/Fraasi/pen/KWEwwo",
"Matrix rain":"https://codepen.io/Fraasi/pen/wJgjLj"
// etc...
};
const fs = require('fs');
const https = require('https');
function downloadPen(saveName, dataSlugHash) {
let url = 'https://codepen.io/Fraasi/share/zip/';
https.get(url + dataSlugHash, (resp) => {
let kb = 0;
let writeStream = fs.createWriteStream(saveName + '.zip');
resp.on('data', (chunk) => kb += chunk.length).pipe(writeStream);
writeStream.on('error', (error) => console.log('writeStream error: ', error));
writeStream.on('finish', () => console.log(`Downloaded ${saveName}, ${kb/1000}KB`));
})
.on('error', (error) => console.log(error));
}
for (var name in pens) {
let slug = pens[name].substring(30);
downloadPen(name, slug);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment