import fs from 'fs'; import sqlite from 'sqlite'; import fetch from 'node-fetch'; (async () => { const db = await sqlite.open('C:\\Program Files (x86)\\xiaozhan_toefl_tpo\\resources\\cache\\ylk.db'); const tags = (await db.all('SELECT DISTINCT tag FROM t_download_info WHERE tag LIKE "tpo%"')).map(row => row.tag); for (const tag of tags) { if (fs.existsSync(tag)) { continue; } fs.mkdirSync(tag); const rows = await db.all(`SELECT name, url FROM t_download_info WHERE tag = '${tag}'`); await Promise.all(rows.map(({ name, url }) => { if (fs.existsSync(`${tag}\\${name}`)) { return; } const file = fs.createWriteStream(`${tag}\\${name}`); fetch(url, { headers: { Referer: 'http://app.zhan.com/' } }).then(r => r.body.pipe(file)); return new Promise((resolve) => { file.on('finish', () => { file.close(); console.log(`${tag}\\${name}`); resolve(); }); }); })); } })();