🗜 unrar single vs all refactored
This commit is contained in:
@@ -6,7 +6,7 @@ export interface IExtractionOptions {
|
|||||||
folderDetails: IFolderData;
|
folderDetails: IFolderData;
|
||||||
extractTarget: string;
|
extractTarget: string;
|
||||||
sourceFolder: string;
|
sourceFolder: string;
|
||||||
targetComicCoversFolder: string;
|
targetExtractionFolder: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IComicVineSearchMatch {
|
export interface IComicVineSearchMatch {
|
||||||
|
|||||||
@@ -23,8 +23,11 @@ export const unrar = async (
|
|||||||
| IExtractedComicBookCoverFile[]
|
| IExtractedComicBookCoverFile[]
|
||||||
| IExtractComicBookCoverErrorResponse
|
| IExtractComicBookCoverErrorResponse
|
||||||
> => {
|
> => {
|
||||||
const comicCoversTargetPath =
|
const extractionTargetPath =
|
||||||
extractionOptions.sourceFolder + extractionOptions.targetComicCoversFolder;
|
extractionOptions.sourceFolder + extractionOptions.targetExtractionFolder;
|
||||||
|
const directoryOptions = {
|
||||||
|
mode: 0o2775,
|
||||||
|
};
|
||||||
const fileBuffer = await fs
|
const fileBuffer = await fs
|
||||||
.readFile(
|
.readFile(
|
||||||
extractionOptions.folderDetails.containedIn +
|
extractionOptions.folderDetails.containedIn +
|
||||||
@@ -43,36 +46,38 @@ export const unrar = async (
|
|||||||
|
|
||||||
const extractedFile = [...file.files][0];
|
const extractedFile = [...file.files][0];
|
||||||
const fileArrayBuffer = extractedFile.extraction;
|
const fileArrayBuffer = extractedFile.extraction;
|
||||||
|
const pathFragments = explodePath(extractedFile.fileHeader.name);
|
||||||
|
const targetPath =
|
||||||
|
extractionTargetPath + "/" + pathFragments.exploded.join("/");
|
||||||
|
|
||||||
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
|
logger.info(`Attempting to write ${extractedFile.fileHeader.name}`);
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
fs.writeFile(
|
try {
|
||||||
comicCoversTargetPath + extractedFile.fileHeader.name,
|
await fse.ensureDir(targetPath, directoryOptions);
|
||||||
fileArrayBuffer,
|
logger.info(`${targetPath} was created or already exists.`);
|
||||||
(err) => {
|
try {
|
||||||
if (err) {
|
await fs.writeFile(
|
||||||
logger.error("Failed to write file", err);
|
targetPath + "/" + pathFragments.fileName,
|
||||||
reject(err);
|
fileArrayBuffer,
|
||||||
} else {
|
);
|
||||||
logger.info(
|
resolve({
|
||||||
`The file ${extractedFile.fileHeader.name} was saved to disk.`,
|
name: `${extractedFile.fileHeader.name}`,
|
||||||
);
|
path: targetPath,
|
||||||
resolve({
|
fileSize: extractedFile.fileHeader.packSize,
|
||||||
name: `${extractedFile.fileHeader.name}`,
|
});
|
||||||
path: comicCoversTargetPath,
|
} catch (error) {
|
||||||
fileSize: extractedFile.fileHeader.packSize,
|
logger.error(`${error}: Couldn't write file.`);
|
||||||
});
|
reject(error);
|
||||||
}
|
}
|
||||||
},
|
} catch (error) {
|
||||||
);
|
logger.error(`${error}: Coudln't create directory.`);
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
case "all":
|
case "all":
|
||||||
const files = extractor.extract({});
|
const files = extractor.extract({});
|
||||||
const extractedFiles = [...files.files];
|
const extractedFiles = [...files.files];
|
||||||
const options = {
|
|
||||||
mode: 0o2775,
|
|
||||||
};
|
|
||||||
|
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
const comicBookCoverFiles: IExtractedComicBookCoverFile[] = [];
|
const comicBookCoverFiles: IExtractedComicBookCoverFile[] = [];
|
||||||
@@ -81,9 +86,9 @@ export const unrar = async (
|
|||||||
const fileBuffer = file.extraction;
|
const fileBuffer = file.extraction;
|
||||||
const pathFragments = explodePath(file.fileHeader.name);
|
const pathFragments = explodePath(file.fileHeader.name);
|
||||||
const targetPath =
|
const targetPath =
|
||||||
comicCoversTargetPath + "/" + pathFragments.exploded.join("/");
|
extractionTargetPath + "/" + pathFragments.exploded.join("/");
|
||||||
try {
|
try {
|
||||||
await fse.ensureDir(targetPath, options);
|
await fse.ensureDir(targetPath, directoryOptions);
|
||||||
logger.info(`${targetPath} was created or already exists.`);
|
logger.info(`${targetPath} was created or already exists.`);
|
||||||
try {
|
try {
|
||||||
await fs.writeFile(
|
await fs.writeFile(
|
||||||
@@ -181,12 +186,12 @@ export const extractArchive = async (
|
|||||||
| IExtractComicBookCoverErrorResponse
|
| IExtractComicBookCoverErrorResponse
|
||||||
> => {
|
> => {
|
||||||
const sourceFolder = "./comics/";
|
const sourceFolder = "./comics/";
|
||||||
const targetComicCoversFolder = "covers";
|
const targetExtractionFolder = "covers";
|
||||||
const extractionOptions: IExtractionOptions = {
|
const extractionOptions: IExtractionOptions = {
|
||||||
folderDetails: fileObject,
|
folderDetails: fileObject,
|
||||||
extractTarget: "all",
|
extractTarget: "cover",
|
||||||
sourceFolder,
|
sourceFolder,
|
||||||
targetComicCoversFolder,
|
targetExtractionFolder,
|
||||||
};
|
};
|
||||||
switch (fileObject.extension) {
|
switch (fileObject.extension) {
|
||||||
case ".cbz":
|
case ".cbz":
|
||||||
|
|||||||
Reference in New Issue
Block a user