|
1 | 1 | /* ============================================================ |
2 | | - OpenCut CEP Panel - Main Controller v1.5.1 |
| 2 | + OpenCut CEP Panel - Main Controller v1.5.2 |
3 | 3 | 6-Tab Professional Toolkit |
4 | 4 | ============================================================ */ |
5 | 5 | (function () { |
|
5162 | 5162 | { name: "Repeat Detection", tab: "captions", sub: "cap-repeat", keywords: "repeat detect loop fumble duplicate take" }, |
5163 | 5163 | { name: "Chapter Generation", tab: "captions", sub: "cap-chapters", keywords: "chapters youtube timestamps sections topics" }, |
5164 | 5164 | { name: "Footage Search", tab: "nlp", sub: "nlp-search", keywords: "search footage clips index content find" }, |
5165 | | - { name: "Color Match", tab: "timeline", sub: "tl-colormatch", keywords: "color match grade balance reference clip" }, |
| 5165 | + { name: "Color Match", tab: "video", sub: "vid-color", keywords: "color match grade balance reference clip" }, |
5166 | 5166 | { name: "Multicam Switcher", tab: "timeline", sub: "tl-multicam", keywords: "multicam speaker podcast camera switch diarize" }, |
5167 | 5167 | { name: "Loudness Match", tab: "audio", sub: "aud-loudmatch", keywords: "loudness lufs normalize match audio levels" }, |
5168 | | - { name: "Auto Zoom", tab: "timeline", sub: "tl-autozoom", keywords: "auto zoom push in ken burns face zoom" }, |
| 5168 | + { name: "Auto Zoom", tab: "video", sub: "vid-effects", keywords: "auto zoom push in ken burns face zoom" }, |
5169 | 5169 | { name: "AI Command", tab: "nlp", sub: "nlp-command", keywords: "nlp ai command natural language instruction" }, |
5170 | 5170 | { name: "Deliverables", tab: "export", sub: "exp-deliverables", keywords: "deliverables vfx adr music cue sheet asset list" }, |
5171 | 5171 | ]; |
|
6112 | 6112 | if (!paths.length) { showAlert("No project media found."); return; } |
6113 | 6113 | var outDir = (document.getElementById("loudMatchOutputDir") || {}).value || projectFolder; |
6114 | 6114 | startJob("/audio/loudness-match", { |
6115 | | - filepaths: paths, |
| 6115 | + files: paths, |
6116 | 6116 | target_lufs: parseFloat(document.getElementById("loudMatchTarget").value || "-14"), |
6117 | 6117 | output_dir: outDir, |
6118 | 6118 | }); |
|
6124 | 6124 | var res = document.getElementById("loudMatchResults"); |
6125 | 6125 | var table = document.getElementById("loudMatchTable"); |
6126 | 6126 | if (res) res.classList.remove("hidden"); |
6127 | | - if (table && r.clips) { |
| 6127 | + var outputs = r.outputs || r.clips || []; |
| 6128 | + if (table && outputs.length) { |
6128 | 6129 | var html = '<table style="width:100%;font-size:11px;border-collapse:collapse;">' |
6129 | 6130 | + '<tr><th style="text-align:left;padding:2px 4px;">Clip</th><th>Original LUFS</th><th>Status</th></tr>'; |
6130 | | - for (var i = 0; i < r.clips.length; i++) { |
6131 | | - var c = r.clips[i]; |
6132 | | - var name = (c.path || c.name || "").split(/[/\\]/).pop(); |
| 6131 | + for (var i = 0; i < outputs.length; i++) { |
| 6132 | + var c = outputs[i]; |
| 6133 | + var name = (c.input || c.path || c.name || "").split(/[/\\]/).pop(); |
6133 | 6134 | html += '<tr><td style="padding:2px 4px;">' + esc(name) + '</td>' |
6134 | 6135 | + '<td style="text-align:center;">' + safeFixed(c.original_lufs, 1) + '</td>' |
6135 | | - + '<td style="text-align:center;color:' + (c.success ? 'var(--success)' : 'var(--error)') + ';">' + (c.success ? "OK" : "Failed") + '</td></tr>'; |
| 6136 | + + '<td style="text-align:center;color:' + (c.job_ok || c.success ? 'var(--success)' : 'var(--error)') + ';">' + (c.job_ok || c.success ? "OK" : "Failed") + '</td></tr>'; |
6136 | 6137 | } |
6137 | 6138 | html += '</table>'; |
6138 | 6139 | table.innerHTML = html; |
|
6182 | 6183 | if (!paths.length) { showAlert("No project media found."); return; } |
6183 | 6184 | var btn = document.getElementById("indexAllClipsBtn"); |
6184 | 6185 | if (btn) { btn.disabled = true; btn.textContent = "Indexing..."; } |
6185 | | - api("POST", "/search/index", { filepaths: paths }, function (err, data) { |
| 6186 | + api("POST", "/search/index", { files: paths }, function (err, data) { |
6186 | 6187 | if (btn) { btn.disabled = false; btn.textContent = "Index All Project Clips"; } |
6187 | 6188 | if (err || (data && data.error)) { showAlert("Indexing failed: " + (data ? data.error : "Network error")); return; } |
6188 | 6189 | footageIndex = data; |
|
6196 | 6197 | var query = (document.getElementById("footageSearchQuery") || {}).value || ""; |
6197 | 6198 | if (!query) { showAlert("Enter a search query."); return; } |
6198 | 6199 | var maxResults = parseInt((document.getElementById("footageSearchMax") || {}).value || "10"); |
6199 | | - api("POST", "/search/footage", { query: query, max_results: maxResults }, function (err, data) { |
| 6200 | + api("POST", "/search/footage", { query: query, top_k: maxResults }, function (err, data) { |
6200 | 6201 | var res = document.getElementById("footageSearchResults"); |
6201 | 6202 | if (!res) return; |
6202 | 6203 | if (err || !data) { res.innerHTML = '<div class="hint">Search failed.</div>'; return; } |
|
0 commit comments