Skip to content

Instantly share code, notes, and snippets.

@szepeviktor
Forked from thomastraum/download_gists.js
Last active December 16, 2021 15:47
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save szepeviktor/9009123 to your computer and use it in GitHub Desktop.
Save szepeviktor/9009123 to your computer and use it in GitHub Desktop.
save all your Gists - written in node.js
#!/usr/bin/env node
//# prerequisites:
//# npm -g install request path
//# TODO: modify user agent string
var USER, savepath,
request = require('request'),
path = require('path'),
fs = require('fs'),
request_opts = {
url: "https://api.github.com/users/" + USER + "/gists",
headers: {
'User-Agent': 'Mozilla/5.0 (compatible; Gist Downloader; https://gist.github.com/szepeviktor)'
}
}, file, raw_url, filename;
if (process.argv.length !== 4) {
console.error('invalid number of options');
console.error(process.argv[1] + ' <username> <path>');
process.exit(1);
}
USER = process.argv[2];
savepath = process.argv[3];
request(request_opts, function (error, response, body) {
if (!error && response.statusCode === 200) {
gists = JSON.parse(body);
gists.forEach(function (gist) {
var dir = savepath + '/' + gist.id;
// console.log('description: ', gist.description);
fs.mkdir(dir, function (err) {
for (file in gist.files) {
raw_url = gist.files[file].raw_url;
filename = gist.files[file].filename;
// console.log("downloading... " + filename);
request(raw_url).pipe(fs.createWriteStream(dir + '/' + filename));
}
});
});
} else {
console.error("error: ", response);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment