🔬 Image analysis flyout scaffold

This commit is contained in:
2022-02-08 14:48:04 -08:00
parent 8bb74404fc
commit 171d64c14a
9 changed files with 5594 additions and 35 deletions

1
.gitignore vendored
View File

@@ -69,3 +69,4 @@ comics/
userdata/
.DS_Store
erl_crash.dump
temp

View File

@@ -47,7 +47,7 @@ const ComicSchema = mongoose.Schema({
},
rawFileDetails: {
name: { type: String, es_indexed: true },
path: String,
filePath: String,
fileSize: Number,
extension: String,
containedIn: String,

4551
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -27,9 +27,11 @@
"eslint": "^7.32.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-prefer-arrow": "^1.2.2",
"install": "^0.13.0",
"jest": "^27.2.5",
"jest-cli": "^27.2.5",
"moleculer-repl": "^0.7.0",
"npm": "^8.4.1",
"ts-jest": "^25.3.0",
"ts-node": "^8.8.1",
"typescript": "^3.9.10"

View File

@@ -1,4 +1,5 @@
"use strict";
import axios from "axios";
import {
Context,
Service,
@@ -6,9 +7,8 @@ import {
ServiceSchema,
Errors,
} from "moleculer";
import {
resizeImage,
} from "../utils/imagetransformation.utils";
import path from "path";
import { analyze, resizeImage } from "../utils/imagetransformation.utils";
export default class ImageTransformation extends Service {
// @ts-ignore
public constructor(
@@ -53,6 +53,20 @@ export default class ImageTransformation extends Service {
return { resizeOperationStatus: resizeResult };
},
},
analyze: {
rest: "POST /analyze",
params: {},
handler: async (
ctx: Context<{ imageFilePath: string }>
) => {
const url = new URL(ctx.params.imageFilePath);
const pathName = url.pathname;
const decodedImageFileURI = decodeURI(pathName);
return await analyze(path.resolve("." + decodedImageFileURI));
},
},
},
methods: {},
},

View File

@@ -52,7 +52,6 @@ import {
import { unrarArchive } from "../utils/uncompression.utils";
import { extractCoverFromFile2 } from "../utils/uncompression.utils";
import { scrapeIssuesFromDOM } from "../utils/scraping.utils";
import axios from "axios";
const ObjectId = require("mongoose").Types.ObjectId;
import fsExtra from "fs-extra";
const through2 = require("through2");
@@ -517,6 +516,7 @@ export default class ImportService extends Service {
options: IExtractionOptions;
}>
) {
console.log(ctx.params);
return await unrarArchive(
ctx.params.filePath,
ctx.params.options

View File

@@ -120,6 +120,14 @@ export default class QueueService extends Service {
});
},
},
unarchiveComicBook: {
rest: "POST /unarchiveComicBook",
params: {},
handler: async (ctx:Context<{}>) => {
},
},
},
methods: {},
async started(): Promise<any> {

View File

@@ -3,6 +3,7 @@ import { ISharpResizedImageStats } from "threetwo-ui-typings";
const imghash = require("imghash");
const leven = require("leven");
import { isNull, reject } from "lodash";
import fs from "fs";
export const extractMetadataFromImage = async (
imageFilePath: string
@@ -34,11 +35,17 @@ export const resizeImage = async (
return err;
}
console.log("Image file %s resized with the following parameters: %o", imageFile, info);
console.log("Image file resized with the following parameters: %o", info);
return info;
});
};
export const analyze = async (inputFilePath: string | Buffer) => {
const stats = await sharp(inputFilePath).stats();
// const { r, g, b } = dominant;
return stats;
}
export const calculateLevenshteinDistance = async (
imagePath1: string,
imagePath2: string

1034
yarn.lock

File diff suppressed because it is too large Load Diff