diff --git a/src/client/workers/extractCovers.worker.ts b/src/client/workers/extractCovers.worker.ts index faa745a..0545204 100644 --- a/src/client/workers/extractCovers.worker.ts +++ b/src/client/workers/extractCovers.worker.ts @@ -31,6 +31,6 @@ export const greet = async ( } }); Promise.all(extractedDataPromises).then((data) => { - console.log(data.data); + console.log(data); }); }; diff --git a/src/server/interfaces/folder.interface.ts b/src/server/interfaces/folder.interface.ts index 8fedc23..2e07047 100644 --- a/src/server/interfaces/folder.interface.ts +++ b/src/server/interfaces/folder.interface.ts @@ -8,6 +8,7 @@ export interface IExtractionOptions { sourceFolder: string; targetExtractionFolder: string; paginationOptions: IPaginationOptions; + extractionMode: string; } export interface IPaginationOptions { diff --git a/src/server/route/routes/importComics.routes.ts b/src/server/route/routes/importComics.routes.ts index b760300..2c3d96f 100644 --- a/src/server/route/routes/importComics.routes.ts +++ b/src/server/route/routes/importComics.routes.ts @@ -1,13 +1,6 @@ import router from "../router"; import { default as paginate } from "express-paginate"; -import { - walkFolder, - extractArchive, - unrar, - unzip, - extractMetadataFromImage, - explodePath, -} from "../../utils/fs.utils"; +import { walkFolder, extractArchive, getCovers } from "../../utils/fs.utils"; import _ from "lodash"; import { IExtractionOptions } from "../../interfaces/folder.interface"; import { Request, Response } from "express"; @@ -16,32 +9,28 @@ router.route("/getComicCovers").post(async (req: Request, res: Response) => { typeof req.body.extractionOptions === "object" ? req.body.extractionOptions : {}; - const extractedData = await extractArchive(req.body); - if ( - _.isArray(extractedData) && - !_.isUndefined(req.body.paginationOptions.pageLimit) - ) { - const pageCount = Math.ceil( - extractedData.length / req.body.paginationOptions.pageLimit, - ); + const foo = await getCovers(req.body); + return res.json({ foo }); + // const extractedData = await extractArchive(req.body); + // if ( + // _.isArray(extractedData) && + // !_.isUndefined(req.body.paginationOptions.pageLimit) + // ) { + // const pageCount = Math.ceil( + // extractedData.length / req.body.paginationOptions.pageLimit, + // ); - return res.json({ - object: "list", - has_more: paginate.hasNextPages(req)(pageCount), - pageCount, - itemCount: extractedData.length, - extractedData, - }); - } - // const foo = await extractMetadataFromImage( - // "./comics/covers/Ghosts and Ruins-001.jpg", - // ); - // const foo = await unzipOne(options); - // const foo = await unzip("asd"); - // const foo = explodePath("Chapter Three/HELLBOY - The Chained Coffin - 069.jpg"); - return res.json({ - extractedData, - }); + // return res.json({ + // object: "list", + // has_more: paginate.hasNextPages(req)(pageCount), + // pageCount, + // itemCount: extractedData.length, + // extractedData, + // }); + // } + // return res.json({ + // extractedData, + // }); }); router.route("/walkFolder").post(async (req: Request, res: Response) => { diff --git a/src/server/utils/fs.utils.ts b/src/server/utils/fs.utils.ts index 862bd4c..800ad0e 100644 --- a/src/server/utils/fs.utils.ts +++ b/src/server/utils/fs.utils.ts @@ -1,6 +1,38 @@ +/* + * MIT License + * + * Copyright (c) 2015 Rishi Ghan + * + The MIT License (MIT) + +Copyright (c) 2015 Rishi Ghan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + */ + +/* + * Revision History: + * Initial: 2021/05/04 Rishi Ghan + */ + const sharp = require("sharp"); const unrarer = require("node-unrar-js"); -import { UnrarError } from "node-unrar-js"; const Walk = require("@root/walk"); const fse = require("fs-extra"); @@ -197,6 +229,30 @@ export const extractArchive = async ( } }; +export const getCovers = async ( + options: IExtractionOptions, +): Promise => { + switch (options.extractionMode) { + case "bulk": + const extractedDataPromises = _.map( + options.folderObjects, + (folderObject) => { + extractArchive({ + extractTarget: options.extractTarget, + sourceFolder: options.sourceFolder, + targetExtractionFolder: options.targetExtractionFolder, + folderDetails: folderObject, + paginationOptions: options.paginationOptions, + extractionMode: options.extractionMode, + }); + }, + ); + return Promise.all(extractedDataPromises).then((data) => data.data); + case "single": + break; + } +}; + export const walkFolder = async (folder: string): Promise => { const result: IFolderData[] = []; await Walk.walk(folder, async (err, pathname, dirent) => {