🛫 Basic cbr/cbz extraction working
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
@@ -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.`);
|
||||||
|
|||||||
Reference in New Issue
Block a user