worm-scraper/lib/convert.js
Domenic Denicola b4454f8432 Fix warning output
This has been broken since the progress bar addition.
2020-11-07 18:05:48 -05:00

43 lines
1.4 KiB
JavaScript

"use strict";
const path = require("path");
const fs = require("fs").promises;
const workerpool = require("workerpool");
const cliProgress = require("cli-progress");
module.exports = async (cachePath, manifestPath, contentPath, book, concurrentJobs) => {
const manifestContents = await fs.readFile(manifestPath, { encoding: "utf-8" });
const chapters = JSON.parse(manifestContents);
console.log("Converting raw downloaded HTML to EPUB chapters");
const progress = new cliProgress.SingleBar({
stopOnComplete: true,
clearOnComplete: true
}, cliProgress.Presets.shades_classic);
progress.start(chapters.length, 0);
const poolOptions = {};
if (concurrentJobs !== undefined) {
poolOptions.maxWorkers = concurrentJobs;
}
const pool = workerpool.pool(path.resolve(__dirname, "convert-worker.js"), poolOptions);
const warnings = [];
await Promise.all(chapters.map(async chapter => {
const inputPath = path.resolve(cachePath, chapter.filename);
const destFileName = `${path.basename(chapter.filename, ".html")}.xhtml`;
const outputPath = path.resolve(contentPath, destFileName);
warnings.push(...await pool.exec("convertChapter", [chapter, book, inputPath, outputPath]));
progress.increment();
}));
pool.terminate();
for (const warning of warnings) {
console.warn(warning);
}
console.log("All chapters converted");
};