🖇 Refactorting
This commit is contained in:
@@ -12,9 +12,9 @@ import { Request, Response } from "express";
|
|||||||
|
|
||||||
router.route("/getComicCovers").get(async (req: Request, res: Response) => {
|
router.route("/getComicCovers").get(async (req: Request, res: Response) => {
|
||||||
const foo = await extractArchive({
|
const foo = await extractArchive({
|
||||||
name: "Dollar Bill 001.cbr",
|
name: "Neonomicon 01 (of 04) (2010) (Project Comic Con cover) (Minutemen-DTs).cbz",
|
||||||
extension: ".cbr",
|
extension: ".cbz",
|
||||||
containedIn: "comics/(2012) Before Watchmen - Dollar Bill",
|
containedIn: "comics/Neonomicon",
|
||||||
isFile: true,
|
isFile: true,
|
||||||
isLink: false,
|
isLink: false,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import { default as unzipper } from "unzipper";
|
|||||||
const sharp = require("sharp");
|
const sharp = require("sharp");
|
||||||
const unrarer = require("node-unrar-js");
|
const unrarer = require("node-unrar-js");
|
||||||
const Walk = require("@root/walk");
|
const Walk = require("@root/walk");
|
||||||
const mkdirp = require("mkdirp");
|
|
||||||
const fse = require("fs-extra");
|
const fse = require("fs-extra");
|
||||||
const fs = require("fs").promises;
|
const fs = require("fs").promises;
|
||||||
import path from "path";
|
import path from "path";
|
||||||
@@ -134,24 +133,39 @@ export const extractMetadataFromImage = async (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const unzip = async (
|
export const unzip = async (
|
||||||
filePath: string,
|
extractionOptions: IExtractionOptions,
|
||||||
): Promise<IExtractedComicBookCoverFile[]> => {
|
): Promise<IExtractedComicBookCoverFile[]> => {
|
||||||
const extractedFiles: IExtractedComicBookCoverFile[] = [];
|
const extractedFiles: IExtractedComicBookCoverFile[] = [];
|
||||||
const zip = fs
|
const directoryOptions = {
|
||||||
|
mode: 0o2775,
|
||||||
|
};
|
||||||
|
const targetPath =
|
||||||
|
extractionOptions.sourceFolder +
|
||||||
|
"/" +
|
||||||
|
extractionOptions.targetExtractionFolder;
|
||||||
|
const zip = await fs
|
||||||
.createReadStream(
|
.createReadStream(
|
||||||
"./comics/Lovecraft - The Myth of Cthulhu (2018) (Maroto) (fylgja).cbz",
|
extractionOptions.sourceFolder +
|
||||||
|
"/" +
|
||||||
|
extractionOptions.folderDetails.name,
|
||||||
)
|
)
|
||||||
.pipe(unzipper.Parse({ forceStream: true }));
|
.pipe(unzipper.Parse({ forceStream: true }));
|
||||||
for await (const entry of zip) {
|
for await (const entry of zip) {
|
||||||
const fileName = entry.path;
|
try {
|
||||||
const size = entry.vars.uncompressedSize; // There is also compressedSize;
|
await fse.ensureDir(targetPath, directoryOptions);
|
||||||
extractedFiles.push({
|
logger.info(`${targetPath} was created or already exists.`);
|
||||||
name: fileName,
|
const fileName = entry.path;
|
||||||
fileSize: size,
|
const size = entry.vars.uncompressedSize; // There is also compressedSize;
|
||||||
path: filePath,
|
extractedFiles.push({
|
||||||
});
|
name: fileName,
|
||||||
entry.pipe(fs.createWriteStream("./comics/covers/" + fileName));
|
fileSize: size,
|
||||||
entry.autodrain();
|
path: targetPath,
|
||||||
|
});
|
||||||
|
entry.pipe(fs.createWriteStream(targetPath + fileName));
|
||||||
|
entry.autodrain();
|
||||||
|
} catch (error) {
|
||||||
|
logger.error(`${error} Couldn't create directory.`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
logger.info("");
|
logger.info("");
|
||||||
@@ -186,16 +200,16 @@ export const extractArchive = async (
|
|||||||
| IExtractComicBookCoverErrorResponse
|
| IExtractComicBookCoverErrorResponse
|
||||||
> => {
|
> => {
|
||||||
const sourceFolder = "./comics/";
|
const sourceFolder = "./comics/";
|
||||||
const targetExtractionFolder = "covers";
|
const targetExtractionFolder = "expanded";
|
||||||
const extractionOptions: IExtractionOptions = {
|
const extractionOptions: IExtractionOptions = {
|
||||||
folderDetails: fileObject,
|
folderDetails: fileObject,
|
||||||
extractTarget: "cover",
|
extractTarget: "all",
|
||||||
sourceFolder,
|
sourceFolder,
|
||||||
targetExtractionFolder,
|
targetExtractionFolder,
|
||||||
};
|
};
|
||||||
switch (fileObject.extension) {
|
switch (fileObject.extension) {
|
||||||
case ".cbz":
|
case ".cbz":
|
||||||
return await unzip("j");
|
return await unzip(extractionOptions);
|
||||||
case ".cbr":
|
case ".cbr":
|
||||||
return await unrar(extractionOptions);
|
return await unrar(extractionOptions);
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user