mlts-experiment-data
Version:
Machine learning experiment data downloader.
65 lines • 3.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var axios_1 = require("axios");
var inly = require("inly");
var path = require("path");
var fs = require("fs");
var mkdirp = require("mkdirp");
var util_1 = require("util");
var printer_1 = require("./printer");
var mkdir = util_1.promisify(mkdirp);
var fileExists = util_1.promisify(fs.exists);
function download(url, folder) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var file, downloadDest, exists;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
file = path.basename(url);
downloadDest = path.join(folder, file);
return [4 /*yield*/, fileExists(downloadDest)];
case 1:
exists = _a.sent();
if (exists)
return [2 /*return*/];
return [2 /*return*/, printer_1.printProgressAsync(function (printer) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var res, stream;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
printer("creating file path: " + folder);
return [4 /*yield*/, mkdir(folder)];
case 1:
_a.sent();
printer("retrieving " + url);
return [4 /*yield*/, axios_1.default.get(url, { responseType: 'stream' })];
case 2:
res = _a.sent();
stream = res.data.pipe(fs.createWriteStream(downloadDest));
return [4 /*yield*/, new Promise(function (resolve, reject) {
stream.on('finish', resolve);
stream.on('error', reject);
})];
case 3:
_a.sent();
printer("unzipping: 0%");
return [4 /*yield*/, new Promise(function (resolve, reject) {
var decoder = inly(downloadDest, folder);
decoder.on('progress', function (p) { return printer("unzipping: " + p + "%"); });
decoder.on('end', resolve);
decoder.on('error', reject);
})];
case 4:
_a.sent();
return [2 /*return*/];
}
});
}); })];
}
});
});
}
exports.download = download;
//# sourceMappingURL=downloader.js.map