File size: 6,051 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");
var Categories_1 = require("./models/Categories");
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;