🗜 unrar single vs all refactored

This commit is contained in:
2021-04-20 12:46:08 -07:00
parent 2648970a27
commit de6cdfd418
2 changed files with 36 additions and 31 deletions

View File

@@ -6,7 +6,7 @@ export interface IExtractionOptions {
folderDetails: IFolderData;
extractTarget: string;
sourceFolder: string;
targetComicCoversFolder: string;
targetExtractionFolder: string;
}
export interface IComicVineSearchMatch {

View File

@@ -23,8 +23,11 @@ export const unrar = async (
| IExtractedComicBookCoverFile[]
| IExtractComicBookCoverErrorResponse
> => {
const comicCoversTargetPath =
extractionOptions.sourceFolder + extractionOptions.targetComicCoversFolder;
const extractionTargetPath =
extractionOptions.sourceFolder + extractionOptions.targetExtractionFolder;
const directoryOptions = {
mode: 0o2775,
};
const fileBuffer = await fs
.readFile(
extractionOptions.folderDetails.containedIn +
@@ -43,36 +46,38 @@ export const unrar = async (
const extractedFile = [...file.files][0];
const fileArrayBuffer = extractedFile.extraction;
const pathFragments = explodePath(extractedFile.fileHeader.name);
const targetPath =
extractionTargetPath + "/" + pathFragments.exploded.join("/");
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
return new Promise((resolve, reject) => {
fs.writeFile(
comicCoversTargetPath + extractedFile.fileHeader.name,
fileArrayBuffer,
(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: comicCoversTargetPath,
fileSize: extractedFile.fileHeader.packSize,
});
}
},
);
return new Promise(async (resolve, reject) => {
try {
await fse.ensureDir(targetPath, directoryOptions);
logger.info(`${targetPath} was created or already exists.`);
try {
await fs.writeFile(
targetPath + "/" + pathFragments.fileName,
fileArrayBuffer,
);
resolve({
name: `${extractedFile.fileHeader.name}`,
path: targetPath,
fileSize: extractedFile.fileHeader.packSize,
});
} catch (error) {
logger.error(`${error}: Couldn't write file.`);
reject(error);
}
} catch (error) {
logger.error(`${error}: Coudln't create directory.`);
reject(error);
}
});
case "all":
const files = extractor.extract({});
const extractedFiles = [...files.files];
const options = {
mode: 0o2775,
};
return new Promise(async (resolve, reject) => {
const comicBookCoverFiles: IExtractedComicBookCoverFile[] = [];
@@ -81,9 +86,9 @@ export const unrar = async (
const fileBuffer = file.extraction;
const pathFragments = explodePath(file.fileHeader.name);
const targetPath =
comicCoversTargetPath + "/" + pathFragments.exploded.join("/");
extractionTargetPath + "/" + pathFragments.exploded.join("/");
try {
await fse.ensureDir(targetPath, options);
await fse.ensureDir(targetPath, directoryOptions);
logger.info(`${targetPath} was created or already exists.`);
try {
await fs.writeFile(
@@ -181,12 +186,12 @@ export const extractArchive = async (
| IExtractComicBookCoverErrorResponse
> => {
const sourceFolder = "./comics/";
const targetComicCoversFolder = "covers";
const targetExtractionFolder = "covers";
const extractionOptions: IExtractionOptions = {
folderDetails: fileObject,
extractTarget: "all",
extractTarget: "cover",
sourceFolder,
targetComicCoversFolder,
targetExtractionFolder,
};
switch (fileObject.extension) {
case ".cbz":