File size: 2,278 Bytes
6b85c8b
 
 
926fa9d
8dd5bba
b0c8eb8
08ff55b
f077067
4021252
b1a7870
e9fc3f5
6b85c8b
 
 
8dd5bba
08b8660
b0c8eb8
8dd5bba
f077067
4021252
b1a7870
e9fc3f5
6b85c8b
 
 
 
 
256845f
6b85c8b
 
 
 
 
 
926fa9d
6b85c8b
 
 
926fa9d
6b85c8b
 
 
51570c3
6b85c8b
 
256845f
6b85c8b
51570c3
 
 
 
 
 
6b85c8b
51570c3
6b85c8b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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 { CropPlugin } from './crop.js';
import { FlattenPathsPlugin } from './normalize-flatten-paths.js';
import { SpeedPlugin } from './speed.js';
import { OverlayPlugin } from './overlay.js';
import { HookPlugin } from './hook.js';
import { SingleStaticVideoPlugin } from './single-static-video.js';

const pluginRegistry = {
  'split-media-render': SplitRenderPlugin,
  'frames': FramesPlugin,
  'generate-captions': CaptionPlugin,
  'crop': CropPlugin,
  'flatten-paths': FlattenPathsPlugin,
  'speed': SpeedPlugin,
  'overlay': OverlayPlugin,
  'hook': HookPlugin,
  'static-video': SingleStaticVideoPlugin,
};

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))
}