UNPKG

mlts-experiment-data

Version:

Machine learning experiment data downloader.

65 lines 3.36 kB
"use strict"; 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