🌁 Image util functions added
This commit is contained in:
@@ -1,22 +1,63 @@
|
||||
import unrarer from "node-unrar-js";
|
||||
import { default as unzipper } from "unzipper";
|
||||
const etl = require("etl");
|
||||
const sharp = require("sharp");
|
||||
const imgHash = require("imghash");
|
||||
const unrarer = require("node-unrar-js");
|
||||
const Walk = require("@root/walk");
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { logger } from "./logger.utils";
|
||||
import { IFolderData } from "../interfaces/folder.interface";
|
||||
import {
|
||||
IExtractedComicBookCoverFile,
|
||||
IFolderData,
|
||||
} from "../interfaces/folder.interface";
|
||||
|
||||
export const unrar = async (filePath) => {
|
||||
export const unrar = async (
|
||||
filePath: string,
|
||||
): Promise<IExtractedComicBookCoverFile> => {
|
||||
const buf = Uint8Array.from(
|
||||
fs.readFileSync("./comics/The Squidder (2015) (Digital-Empire).cbr"),
|
||||
fs.readFileSync(
|
||||
"./comics/Ghosts and Ruins (2013) (digital) (Mr Norrell-Empire).cbr",
|
||||
),
|
||||
).buffer;
|
||||
const extractor = await unrarer.createExtractorFromData({ data: buf });
|
||||
const list = extractor.getFileList();
|
||||
const fileHeaders = [...list.fileHeaders];
|
||||
// extract the first file only
|
||||
const extracted = extractor.extract({ files: [fileHeaders[0].name] });
|
||||
const files = [...extracted.files]; //load the files
|
||||
return files[0];
|
||||
const files = [...extracted.files];
|
||||
const extractedFile = files[0];
|
||||
const myBuffer = extractedFile.extraction;
|
||||
|
||||
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.writeFile(filePath + extractedFile.fileHeader.name, myBuffer, (err) => {
|
||||
if (err) {
|
||||
logger.error("Failed to write file", err);
|
||||
reject(err);
|
||||
} else {
|
||||
logger.info(
|
||||
`The file ${extractedFile.fileHeader.name} was saved to disk.`,
|
||||
);
|
||||
resolve({
|
||||
name: `${extractedFile.fileHeader.name}`,
|
||||
path: `${filePath}`,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
export const extractMetadataFromImage = async (
|
||||
imageFilePath: string,
|
||||
): Promise<unknown> => {
|
||||
const image = await sharp(imageFilePath)
|
||||
.metadata()
|
||||
.then(function (metadata) {
|
||||
return metadata;
|
||||
});
|
||||
return image;
|
||||
};
|
||||
|
||||
export const unzip = () => {
|
||||
@@ -32,26 +73,15 @@ export const unzip = () => {
|
||||
});
|
||||
};
|
||||
|
||||
export const extractArchive = async (fileObject: IFolderData) => {
|
||||
const extractedFile = await unrar("./comics");
|
||||
|
||||
switch(fileObject.extension) {
|
||||
case '.cbz':
|
||||
export const extractArchive = async (
|
||||
fileObject: IFolderData,
|
||||
): Promise<void> => {
|
||||
switch (fileObject.extension) {
|
||||
case ".cbz":
|
||||
break;
|
||||
case '.cbr':
|
||||
case ".cbr":
|
||||
break;
|
||||
}
|
||||
const myBuffer = extractedFile.extraction;
|
||||
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
|
||||
fs.writeFile(pathName + extractedFile.fileHeader.name, myBuffer, (err) => {
|
||||
if (err) {
|
||||
logger.error("Failed to write file", err);
|
||||
} else {
|
||||
logger.info(
|
||||
`The file ${extractedFile.fileHeader.name} was saved to disk.`,
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
export const walkFolder = async (folder: string): Promise<IFolderData[]> => {
|
||||
|
||||
Reference in New Issue
Block a user