🛫 Basic cbr/cbz extraction working

This commit is contained in:
2021-04-29 07:36:31 -07:00
parent bd020285a0
commit a4f9c82847
2 changed files with 26 additions and 18 deletions

View File

@@ -14,7 +14,7 @@ router.route("/getComicCovers").post(async (req: Request, res: Response) => {
typeof req.body.extractionOptions === "object" typeof req.body.extractionOptions === "object"
? req.body.extractionOptions ? req.body.extractionOptions
: {}; : {};
console.log("ASDASDASDASDASD", req.body) console.log(req.body)
const extractedData = await extractArchive(req.body); const extractedData = await extractArchive(req.body);
// const foo = await extractMetadataFromImage( // const foo = await extractMetadataFromImage(
// "./comics/covers/Ghosts and Ruins-001.jpg", // "./comics/covers/Ghosts and Ruins-001.jpg",

View File

@@ -31,36 +31,44 @@ export const unrar = async (
const fileBuffer = await readFile(paths.inputFilePath).catch((err) => const fileBuffer = await readFile(paths.inputFilePath).catch((err) =>
console.error("Failed to read file", err), console.error("Failed to read file", err),
); );
try { try {
await fse.ensureDir(paths.targetPath, directoryOptions); await fse.ensureDir(paths.targetPath, directoryOptions);
logger.info(`${paths.targetPath} was created or already exists.`); logger.info(`${paths.targetPath} was created.`);
} catch (error) { } catch (error) {
logger.error(`${error}: Couldn't create directory.`); logger.error(`${error}: Couldn't create directory.`);
} }
const extractor = await unrarer.createExtractorFromData({ data: fileBuffer }); const extractor = await unrarer.createExtractorFromData({ data: fileBuffer });
switch (extractionOptions.extractTarget) { switch (extractionOptions.extractTarget) {
case "cover": case "cover":
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
try { try {
let fileNameToExtract = "";
const list = extractor.getFileList(); const list = extractor.getFileList();
const fileHeaders = [...list.fileHeaders]; const fileHeaders = [...list.fileHeaders];
const file = extractor.extract({ files: [fileHeaders[0].name] }); _.each(fileHeaders, async (fileHeader) => {
const extractedFile = [...file.files][0]; const fileName = explodePath(fileHeader.name).fileName;
const fileArrayBuffer = extractedFile.extraction; if (
const fileName = explodePath(extractedFile.fileHeader.name).fileName; fileName !== "" &&
if ( fileHeader.flags.directory === false &&
fileName !== "" && _.isEmpty(fileNameToExtract)
extractedFile.fileHeader.flags.directory === false ) {
) { logger.info(`Attempting to write ${fileHeader.name}`);
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`); fileNameToExtract = fileHeader.name;
await writeFile(paths.targetPath + "/" + fileName, fileArrayBuffer); const file = extractor.extract({ files: [fileHeader.name] });
} const extractedFile = [...file.files][0];
resolve({ const fileArrayBuffer = extractedFile.extraction;
name: `${extractedFile.fileHeader.name}`, await writeFile(
path: paths.targetPath, paths.targetPath + "/" + fileName,
fileSize: extractedFile.fileHeader.packSize, fileArrayBuffer,
);
}
resolve({
name: `${fileHeader.name}`,
path: paths.targetPath,
fileSize: fileHeader.packSize,
});
}); });
} catch (error) { } catch (error) {
logger.error(`${error}: Couldn't write file.`); logger.error(`${error}: Couldn't write file.`);