🗜 Fixing the unzip method

This commit is contained in:
2021-04-17 16:02:12 -07:00
parent 424c5aded7
commit dc2153e19c
3 changed files with 33 additions and 15 deletions

View File

@@ -30,4 +30,5 @@ export interface IComicBookCoverMetadata {
export interface IExtractedComicBookCoverFile { export interface IExtractedComicBookCoverFile {
name: string; name: string;
path: string; path: string;
fileSize: string;
} }

View File

@@ -3,15 +3,17 @@ import {
walkFolder, walkFolder,
extractArchive, extractArchive,
unrar, unrar,
unzip,
extractMetadataFromImage, extractMetadataFromImage,
} from "../../utils/fs.utils"; } from "../../utils/fs.utils";
import { Request, Response } from "express"; import { Request, Response } from "express";
router.route("/getComicCovers").get(async (req: Request, res: Response) => { router.route("/getComicCovers").get(async (req: Request, res: Response) => {
// unrar("./comics/covers/"); // const foo = await unrar("./comics/covers/");
const foo = await extractMetadataFromImage( // const foo = await extractMetadataFromImage(
"./comics/covers/Ghosts and Ruins-001.jpg", // "./comics/covers/Ghosts and Ruins-001.jpg",
); // );
const foo = await unzip("st");
res.json({ res.json({
jagan: "trupti", jagan: "trupti",
foo, foo,

View File

@@ -2,6 +2,7 @@ import { default as unzipper } from "unzipper";
const etl = require("etl"); const etl = require("etl");
const sharp = require("sharp"); const sharp = require("sharp");
const imgHash = require("imghash"); const imgHash = require("imghash");
const stream = require("stream");
const unrarer = require("node-unrar-js"); const unrarer = require("node-unrar-js");
const Walk = require("@root/walk"); const Walk = require("@root/walk");
import fs from "fs"; import fs from "fs";
@@ -43,6 +44,7 @@ export const unrar = async (
resolve({ resolve({
name: `${extractedFile.fileHeader.name}`, name: `${extractedFile.fileHeader.name}`,
path: `${filePath}`, path: `${filePath}`,
fileSize: `${extractedFile.fileHeader.packSize}`,
}); });
} }
}); });
@@ -60,17 +62,30 @@ export const extractMetadataFromImage = async (
return image; return image;
}; };
export const unzip = () => { export const unzip = async (
fs.createReadStream("./comics/30 Days of Night 01-003.cbz") filePath: string,
.pipe(unzipper.ParseOne()) ): Promise<IExtractedComicBookCoverFile> => {
.pipe(etl.toFile("./comics/covers/cover.jpg")) let foo: IExtractedComicBookCoverFile = { name: "", path: "", fileSize: "" };
.promise() const zip = fs
.then(() => { .createReadStream(
logger.info("done"); "./comics/Lovecraft - The Myth of Cthulhu (2018) (Maroto) (fylgja).cbz",
}) )
.catch((e) => { .pipe(unzipper.Parse({ forceStream: true }));
logger.info("error", e); for await (const entry of zip) {
}); const fileName = entry.path;
const type = entry.type; // 'Directory' or 'File'
const size = entry.vars.uncompressedSize; // There is also compressedSize;
foo = {
name: fileName,
fileSize: size,
path: filePath,
};
entry.pipe(fs.createWriteStream("./comics/covers/cover.jpg"));
entry.autodrain();
}
return new Promise((resolve, reject) => {
resolve(foo);
});
}; };
export const extractArchive = async ( export const extractArchive = async (