UNPKG

@codenoobforreal/clitools

Version:

CLI tool for video processing (H.265/HEVC encoding & QuickTime compatibility) using FFmpeg, and batch lossless image compression with format preservation

36 lines (35 loc) 1.39 kB
import { spinner } from "@clack/prompts"; import { encodeImage } from "../../core/image/encode.js"; import { getImageListFromUserInput } from "../../core/image/pipeline.js"; import { EncodeImageError } from "../../error.js"; import { createConcurrencyLimit } from "../../libs/concurrency.js"; export async function encodeImageTask({ input }) { const s = spinner(); s.start(`Encoding images in: ${input}`); const imageList = await getImageListFromUserInput(input); const limit = createConcurrencyLimit(); const tasks = imageList.map((imagePath) => limit(() => encodeImage(imagePath))); const results = await Promise.allSettled(tasks); const successList = []; const failureList = []; results.forEach((result) => { if (result.status === "fulfilled") { successList.push(result.value); } else { const error = result.reason instanceof EncodeImageError ? result.reason : new Error(`Unknown error: ${JSON.stringify(result.reason)}`); failureList.push(error); } }); s.stop(` Task completed: ========================== Successes: ${successList.length} Failures: ${failureList.length} ${failureList.length > 0 ? "Failure details:" : ""} ${failureList.map((f) => `${f.message}`).join("\n")} `); } //# sourceMappingURL=index.js.map