File size: 5,709 Bytes
59c0ef4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
  return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
exports.GenerateScript = void 0;
var transitions_json_1 = __importDefault(require("../public/assets/transitions.json"));
var RenderUtils_1 = require("./RenderUtils.cjs");
var Categories_1 = require("./models/Categories.cjs");
function GenerateScript(Script) {
  var _a, _b, _c, _d, _e, _f;
  var fps = (_a = Script === null || Script === void 0 ? void 0 : Script.meta) === null || _a === void 0 ? void 0 : _a.fps;
  if (!fps) {
    Script.meta.fps = 24;
    fps = 24;
  }
  var durationInSec = 0;
  var lastDirection = false;
  var preloadImages = [];
  var preloadVideos = [];
  var contents = Script.transcript
    .sort(function (t, u) { return t.index - u.index; })
    // .filter(item => (item.audioCaptionFile != undefined))
    // .slice(0, 2)
    .map(function (section, idx, array) {
      section.index = section.index || idx;
      var text = section.text, durationMilis = section.duration, offset = section.offset, mediaAbsPaths = section.mediaAbsPaths, mediaAbsPaths = section.mediaAbsPaths, audioFullPath = section.audioFullPath, title = section.title, pointers = section.pointers;
      mediaAbsPaths = mediaAbsPaths || mediaAbsPaths || [];
      if (!durationMilis) {
        durationMilis = section.durationInSeconds * 1000;
      }
      if (!durationMilis)
        durationMilis = 10e3;
      // maybe required for youtube composition !!!
      var curDurSecs = (durationMilis / 1e3);
      if (curDurSecs < 3) {
        curDurSecs = 3;
      }
      //@ts-ignore
      var transitionFile = ((section === null || section === void 0 ? void 0 : section.transition_file) || transitions_json_1["default"][0].file);
      var transition_type = (section === null || section === void 0 ? void 0 : section.transition_type);
      if (transition_type && transition_type != 'none') {
        section.transition_duration_sec = (section === null || section === void 0 ? void 0 : section.transition_duration_sec) || 0.5;
      }
      //@ts-ignore
      var transitionDurationSec = ((section === null || section === void 0 ? void 0 : section.transition_duration_sec) || (transition_type && transition_type != 'none') ? 0.5 : 0);
      var transitionDurationFrames = transitionDurationSec * fps;
      var commDuration = durationInSec; //+ transitionDurationSec
      durationInSec = durationInSec + curDurSecs; ///+ transitionDurationSec
      lastDirection = !lastDirection;
      mediaAbsPaths.forEach(function (p) {
        var im = p.path;
        if (im.startsWith("http")) {
          if (im.indexOf("-video-") > -1 || im.indexOf(".mp4") > -1 || im.indexOf(".webm") > -1) {
            preloadVideos.push(im);
            // preloadVideo(im)
          }
          else {
            preloadImages.push(im);
            // preloadImage(im)
          }
        }
      });
      var bgImagePaths = mediaAbsPaths.map(function (p) {
        p.path = RenderUtils_1.RenderUtils.getFileName(p === null || p === void 0 ? void 0 : p.path);
        return p;
      });
      if (!offset) {
        offset = commDuration;
      }
      var frame = Object.assign(section, {
        "commulativeDurationStartSec": commDuration,
        "text": text,
        "transition_file": RenderUtils_1.RenderUtils.getFileName(transitionFile),
        "durationInSecs": curDurSecs,
        "duration": Math.ceil(curDurSecs * fps),
        "offset": offset * fps,
        "direction": lastDirection ? 'left' : 'right',
        "bgImagePaths": bgImagePaths,
        "audioPath": RenderUtils_1.RenderUtils.getFileName(audioFullPath),
        "textColor": '#F44336',
        "emphasisOnImage": (title === null || title === void 0 ? void 0 : title.length) > 0 && (pointers === null || pointers === void 0 ? void 0 : pointers.length) > 0 || Script.meta.emphasisOnImage
      });
      return frame;
    });
  console.log('contents', contents);
  var intro = {
    durationInFrames: 0,
    durationInSec: 5.433,
    file: Script.meta.tenantVideoConfig ? RenderUtils_1.RenderUtils.getFileName(Script.meta.tenantVideoConfig.introFile, "assets") : 'assets/music_intro.mp4'
  };
  var ADJUST_END_DUR_SEC = 3;
  var outro = {
    durationInFrames: 0,
    durationInSec: 8.034 - ADJUST_END_DUR_SEC,
    file: Script.meta.tenantVideoConfig ? RenderUtils_1.RenderUtils.getFileName(Script.meta.tenantVideoConfig.outroFile, "assets") : 'assets/music_outro.mp4'
  };
  if (intro && ((_c = (_b = Script === null || Script === void 0 ? void 0 : Script.meta) === null || _b === void 0 ? void 0 : _b.tenantVideoConfig) === null || _c === void 0 ? void 0 : _c.introFile)) {
    durationInSec += intro.durationInSec;
    intro.durationInFrames = Math.ceil(fps * intro.durationInSec);
  }
  if (outro && ((_e = (_d = Script === null || Script === void 0 ? void 0 : Script.meta) === null || _d === void 0 ? void 0 : _d.tenantVideoConfig) === null || _e === void 0 ? void 0 : _e.outroFile)) {
    durationInSec += outro.durationInSec;
    //hack for blank end
    outro.durationInSec += 30;
    outro.durationInFrames = Math.ceil(fps * outro.durationInSec);
  }
  // durationInSec = 10
  var duration = Math.ceil(durationInSec * fps);
  console.log("Total Video Duration", durationInSec);
  //@ts-ignore
  var playListsIDs = Categories_1.YoutubeCategoriesConfig.GET_PLAY_LIST_IDS(((_f = Script.meta) === null || _f === void 0 ? void 0 : _f.userId) || "104349087108535511186");
  return {
    Script: Script,
    contents: contents,
    playListsIDs: playListsIDs,
    duration: duration,
    outro: outro,
    intro: intro
  };
}
exports.GenerateScript = GenerateScript;