sd-parsers
Version:
A library to read metadata from images created by Stable Diffusion
67 lines • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FooocusParser = void 0;
const parser_1 = require("./parser");
const data_1 = require("../data");
const exceptions_1 = require("../exceptions");
const SAMPLER_PARAMS = ['guidance_scale', 'cfg_scale', 'scheduler', 'seed', 'sharpness', 'steps'];
const REPLACEMENT_RULES = [['guidance_scale', 'cfg_scale']];
/**
* Parser for images generated by Fooocus
*/
class FooocusParser extends parser_1.Parser {
constructor() {
super(...arguments);
this.generator = data_1.Generators.FOOOCUS;
}
async parse(_parameters) {
let parameters;
try {
if (!_parameters.hasOwnProperty('parameters')) {
throw new Error('parameters field is missing');
}
if (typeof _parameters.parameters === 'string') {
parameters = JSON.parse(_parameters.parameters);
}
else if (typeof _parameters.parameters === 'object' && _parameters.parameters !== null) {
throw new Error('parameters field is missing');
}
else {
throw new Error('parameters field is missing');
}
}
catch (error) {
throw new exceptions_1.ParserError(`Error decoding parameter data: ${error}`);
}
try {
const model = (parameters.base_model || parameters.base_model_hash) ?
(0, data_1.createModel)({
name: parameters.base_model,
hash: parameters.base_model_hash
}) : undefined;
delete parameters.base_model;
delete parameters.base_model_hash;
const samplerParams = Object.fromEntries((0, parser_1.popKeys)(SAMPLER_PARAMS, parameters));
const normalizedParams = this.normalizeParameters(samplerParams, REPLACEMENT_RULES);
const samplerName = parameters.sampler || 'unknown';
delete parameters.sampler;
const prompt = parameters.prompt;
delete parameters.prompt;
const negativePrompt = parameters.negative_prompt;
delete parameters.negative_prompt;
const prompts = prompt ? [(0, data_1.createPrompt)(prompt)] : [];
const negativePrompts = negativePrompt ? [(0, data_1.createPrompt)(negativePrompt)] : [];
const sampler = (0, data_1.createSampler)(samplerName, normalizedParams, {
model,
prompts,
negativePrompts
});
return (0, data_1.createPromptInfo)(this.generator, [sampler], parameters, _parameters);
}
catch (error) {
throw new exceptions_1.ParserError(`Error reading parameter value: ${error}`);
}
}
}
exports.FooocusParser = FooocusParser;
//# sourceMappingURL=fooocus.js.map