@ibaraki-douji/waifu2x
Version:
Upscale image with waifu2x-ncnn-vulkan.
43 lines (35 loc) • 1.81 kB
text/typescript
import AdmZip = require('adm-zip');
import { existsSync, readdirSync, renameSync, rmdirSync, unlinkSync, writeFileSync } from 'fs';
import fetch from 'node-fetch';
import { resolve } from 'path';
const dir = resolve(__dirname, '..');
console.log("Downloading and installing Waifu2X");
( async () => {
let zipURL = "";
// REMOVE EXISTING 2X
if (existsSync(dir + "/waifu2x")) rmdirSync(dir + "/waifu2x", {recursive: true});
// URL PLATFORM
if (process.platform == "win32") zipURL = "https://github.com/nihui/waifu2x-ncnn-vulkan/releases/download/20210521/waifu2x-ncnn-vulkan-20210521-windows.zip";
else if (process.platform == "linux") zipURL = "https://github.com/nihui/waifu2x-ncnn-vulkan/releases/download/20210521/waifu2x-ncnn-vulkan-20210521-ubuntu.zip";
else throw new Error("This lib not support " + process.platform);
// DOWNLOAD 2X
const zipRes = await fetch(zipURL);
const zip = await zipRes.buffer();
// INSTALL 2X
writeFileSync(dir + "/zip.zip", zip);
let aZIP = new AdmZip(dir + "/zip.zip");
aZIP.extractAllTo(dir, true);
unlinkSync(dir + "/zip.zip");
// RENAME FOLDER
let fname = readdirSync(dir).find(p => p.includes("waifu2x-ncnn"));
renameSync(dir + "/" + fname, dir + "/waifu2x")
// INSTALL MISSING DLL
if (process.platform == "win32") {
const dllRes = await fetch("https://www.dll4free.com/download.php?dll=vulkan-1.dll&m=ac97f59aaf23e9f6baf6d29d6241adf3&action=download")
const dllZIP = await dllRes.buffer();
writeFileSync(dir + "/waifu2x/vulkan-1.zip", dllZIP);
let dZIP = new AdmZip(dir + "/waifu2x/vulkan-1.zip");
dZIP.extractAllTo(dir + "/waifu2x", true);
unlinkSync(dir + "/waifu2x/vulkan-1.zip");
}
})()