import _ from 'lodash' import fs from 'fs' import { SplitRenderPlugin } from './split-render.js'; import { FramesPlugin } from './frames.js'; import { CaptionPlugin } from './generate-captions.js'; import { FlattenPathsPlugin } from './flatten-paths.js'; import { SpeedPlugin } from './speed.js'; const pluginRegistry = { 'split-media-render': SplitRenderPlugin, 'frames': FramesPlugin, 'generate-captions': CaptionPlugin, 'flatten-paths': FlattenPathsPlugin, 'speed': SpeedPlugin, }; export async function applyPluginsPrerender(plugins, originalManuscript, originalManuscriptPath, jobId) { for (let pluginInfo of plugins) { let pluginName = pluginInfo.name; let options = pluginInfo || {}; _.set(originalManuscript, 'meta.plugins', plugins) console.log(`Applying plugin: ${pluginName} with options:`, options) if (pluginRegistry[pluginName]) { let pluginInstance = new pluginRegistry[pluginName](pluginName, options); await pluginInstance.applyPrerender(originalManuscript, jobId); } else { console.warn(`Plugin ${pluginName} not found in registry.`); } fs.writeFileSync(originalManuscriptPath, JSON.stringify(originalManuscript, null, 2)) } } export async function applyPluginsPostrender(plugins, originalManuscript, originalManuscriptPath, jobId, outFiles) { for (let pluginInfo of plugins) { let pluginName = pluginInfo.name; let options = pluginInfo || {}; console.log(`Applying post-render plugin: ${pluginName} with options:`, options) if (pluginRegistry[pluginName]) { let pluginInstance = new pluginRegistry[pluginName](pluginName, options); await pluginInstance.applyPostrender(originalManuscript, jobId, outFiles); } else { console.warn(`Plugin ${pluginName} not found in registry.`); } } fs.writeFileSync(originalManuscriptPath, JSON.stringify(originalManuscript, null, 2)) }