From e16244d68d34b59cc9bf61228216518a8d5ba0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Henrique?= Date: Thu, 10 Sep 2026 10:38:18 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20removidos=20da=20tela=20Editar=20v?= =?UTF-8?q?=C3=ADdeo=20os=20passos=20legados=20de=20transcri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - removidos da tela Editar vídeo os passos legados de transcrição, falantes e métricas. Resumo: - 4 arquivos alterados - 0 novos - 4 modificados - 0 removidos 4 files changed, 35 insertions(+), 161 deletions(-) Arquivos: - .jhonny/analises.db - admin/PremiereMCP.command - code/cep-plugin/index.html - code/cep-plugin/main.js --- .jhonny/analises.db | Bin 1073152 -> 1073152 bytes admin/PremiereMCP.command | 17 +++--- code/cep-plugin/index.html | 122 ++----------------------------------- code/cep-plugin/main.js | 57 +++++++---------- 4 files changed, 35 insertions(+), 161 deletions(-) diff --git a/.jhonny/analises.db b/.jhonny/analises.db index 62f15b5de6827b8a2e8a4478db62e648738f86d0..393a21d3bc93a311653e2a4a71c474c9c2da4888 100644 GIT binary patch delta 2476 zcmah~&2Lmy6rTz$7K90LL*l~Ai_1~v9vg4oXf*$B{@J|IeA2wPbNq^H-oCMY^2DLBf?gj# z(3<2#$A(=y;dWOi{O#lI?;dZDJ$k(T%KKL)#wMONCZ6t`oc(9w$gOH@vT=E?aq`Yb zx9`9Cc9n2pbjG_hsu9M~l!|ojye;d3qwuXrCvs~q zql8M%|HxITC??OV#%g*#OfH+wI(yxfX11cj>O9s3r4si6Te2#)z}?ZQP6!R6MU$^+ z%KLXoZaa?4JRz$Cm}OM33f$ygujrWicl$pZRdHrwZE|GAjiT(N;86-J*Jz#MOclm6 zO4l*q%F!xk611dvqhPE1_vBbvrW8G7g*9DLMs+DQRwbmINy|`gI=UvDkhKI{KwJUX zknRt)^ZgyPsS0+^)a6!8-Ooj9Iw@zQ{_6ekd{z0wTgu&vvDpBY{AU@hFbD{h10mkn zZ#<`|&R5YsB;*S1u!!kP8w42D>1r6syj%`R)jmWa;Q!0lz=dq8)f`A$1+vd)1^A$s z6x8rr?t;4LcLBY66NvAB4;3>bprCm$W5^p_wCvb+p>#o|Bd2l_WZF%MI$+``>jfkFW)qBqNNgKdL7qv;^uNnz`q%0W!dDsAp`N;JbV^%BlJ9+`5W$1 z^fi7ljEGbwtQ*-p15G>Dq%xgiEQF;DjuVpVgMU14;MU&nRa+5eG5obcsgqlqCP+N| z85`>ZfM^-tpwb#U9Vo7q1iG#^PyutAu--rfDO@H+HVit(c2Q*nC)qsAJwov=rxnN(G#MBAQHz*1LBSz%#)0F6OJO5TJHYUbM9-bZS50S>EYCLBv$S-xnM z7xB$W$3n-8^I>xe*_p=i07bF_Igg4E=${1785?Kd2 z<$La~HLm;G=kef@7|Q_9Q9YPfOR676DX}zoQ{a2N3+SJ%YzAFf;aRNaN(duWhrUzt zN(NYBsG7pyBvctrd`#F{YeB%7%UHZ_X5ElkPSz$_J=xp@aDu=^GT!mCgxj#|Im~qy|geCKNSom8R_@DFNxGR;?4Wlx9?xixPAY6Cf9`JEE^aF+F2BsftUq|S%H`hh}nUd1Bf|+m Extensions > MCP for Adobe Premiere Pro" - echo " 3. Confira se aparecem as abas 'Bridge' e 'Cortar silencio'" + step "4/4 RECARREGAR A EXTENSAO CEP" + echo "O painel ja foi reinstalado (passo 1). Para carregar a copia nova:" + echo " 1. Feche somente o painel MCP for Adobe Premiere Pro" + echo " 2. Abra novamente em Window > Extensions > MCP for Adobe Premiere Pro" + echo " 3. Confira a aba Editar video e os passos Concluir edicao / Aplicar na timeline" fi echo if [ "$FAILED" != "0" ]; then die "ciclo terminou com pendencias - corrija os avisos acima antes de testar no Premiere." fi -ok "Ciclo concluido. Pronto para recarregar o painel no Premiere." +ok "Ciclo concluido. Pronto para recarregar somente a extensao no Premiere." diff --git a/code/cep-plugin/index.html b/code/cep-plugin/index.html index 0d48afb..7df80be 100755 --- a/code/cep-plugin/index.html +++ b/code/cep-plugin/index.html @@ -95,7 +95,7 @@

Análise do Scanner

Não carregada
-

Carregue a análise mais recente do Scanner antes de gerar o plano de edição.

+

Carregue a análise mais recente do Scanner antes de concluir a edição.

  • TranscriçãoAguardando
  • Detecção de falantesAguardando
  • @@ -122,124 +122,14 @@
-
+
-
-

Transcrever a fala

-

Gera o texto com marcação de tempo usando o Whisper local.

-
- Bloqueado -
-
- - - - - - - -
-
- - Só grava a preferência no JSON — não corta nada aqui. A IA decide os cortes usando esse valor. -
-
- - -
-
- - -
-
- - - -
-
-

Concluir edição

Salva no banco a análise carregada, o tipo de vídeo e as configurações editoriais escolhidas. O JSON para a IA poderá ser gerado depois, quando necessário.

- Bloqueado + Bloqueado
@@ -255,14 +145,14 @@
-
+
- +

Aplicar na timeline

Selecione o plano de edição que a IA devolveu (cortes, zooms, textos, marcadores) e execute na sequência.

- Bloqueado + Bloqueado
diff --git a/code/cep-plugin/main.js b/code/cep-plugin/main.js index fe6139e..61d71a5 100755 --- a/code/cep-plugin/main.js +++ b/code/cep-plugin/main.js @@ -2151,11 +2151,13 @@ function silenceSelecionarTipoVideo() { if (!tipo) { document.getElementById("silenceTipoVideoInfo").textContent = "Selecione um tipo cadastrado para continuar."; setStep(1, "ready", "Selecione um tipo"); + setStep(2, "locked", "Selecione o tipo"); document.getElementById("btnBuildPlan").disabled = true; return; } document.getElementById("silenceTipoVideoInfo").textContent = tipo.nome + " · instruções serão incluídas no JSON para a IA."; setStep(1, "done", "Selecionado"); + setStep(2, "ready", "Pronto para concluir"); document.getElementById("btnBuildPlan").disabled = false; silenceLog("Tipo de vídeo selecionado: " + tipo.nome + ".", "ok"); } @@ -2371,10 +2373,9 @@ function silenceLoadScannerAnalysis() { info.textContent = silenceState.sequenceName + " · " + quantidade + " trecho(s) · " + (audioDoBanco.metricas_de_voz_disponiveis ? "métricas disponíveis" : "métricas não realizadas") + " · " + (audioDoBanco.diarizacao_disponivel ? falantes.length + " falante(s)" : "diarização não realizada"); - setStep(3, "ready", "Pronto"); + setStep(2, "locked", "Selecione o tipo"); setStep(1, "ready", "Selecione um tipo"); - setStep(4, "locked", "Selecione o tipo"); - setStep(5, "locked", "Bloqueado"); + setStep(3, "locked", "Aguardando conclusão"); renderizarTiposDeVideoParaEdicao(); document.getElementById("btnBuildPlan").disabled = true; // btnDiarize/btnVoiceFeatures/silenceDiarizeInfo/silenceVoiceFeaturesInfo ficavam no @@ -2712,10 +2713,8 @@ function silenceDetectClip() { // muda — evita aplicar um plano gerado para outro material. function lockStepsFrom(first) { var buttons = { - 2: ["btnTranscribe"], - 3: ["btnDiarize", "btnVoiceFeatures"], - 4: ["btnBuildPlan"], - 5: ["btnApplyEditorialActions"], + 2: ["btnBuildPlan"], + 3: ["btnApplyEditorialActions"], }; for (var n = first; n <= 5; n++) { setStep(n, "locked", "Bloqueado"); @@ -2769,8 +2768,7 @@ function silenceUseCachedTranscript() { // Passos que dependem de existir uma transcrição, seja nova ou reaproveitada. function unlockAfterTranscript() { setStep(2, "done", "Transcrito"); - setStep(3, "ready", "Opcional"); - setStep(4, "ready", "Sua vez"); + setStep(2, "ready", "Pronto para concluir"); document.getElementById("btnBuildPlan").disabled = false; // btnDiarize/btnVoiceFeatures ficavam no step3 (legado, comentado em 2026-09-09). var elBtnDiarize = document.getElementById("btnDiarize"); @@ -3264,14 +3262,6 @@ function silenceConcluirEdicao() { configuracao: { nome_do_tipo: silenceState.tipoVideo.nome, instrucoes_do_tipo: tipoVideoResumoParaJson(silenceState.tipoVideo), - configuracoes_de_fala: speakerConfigurationForJson(), - configuracoes_de_edicao: { - remocao_de_silencio: { - habilitada: document.getElementById("silenceRemovalEnabled").checked, - duracao_minima_segundos: Number(document.getElementById("silenceRemovalMinDuration").value) || 0.8, - }, - legendas: carregarConfiguracaoDeLegendas(), - }, transcricao: { caminho: silenceState.transcriptPath, origem: "Scanner", @@ -3287,7 +3277,7 @@ function silenceConcluirEdicao() { } setBusy("btnBuildPlan", true); - setStep(4, "running", "Salvando…"); + setStep(2, "running", "Salvando…"); taskStart("Concluindo a edição", "Salvando a configuração no banco"); silenceLog("Salvando o tipo de vídeo e as configurações editoriais no banco…"); runStreamed( @@ -3297,14 +3287,14 @@ function silenceConcluirEdicao() { function (codigo, ultimoErro) { setBusy("btnBuildPlan", false); if (codigo !== 0) { - setStep(4, "error", "Falhou"); + setStep(2, "error", "Falhou"); taskEnd(false, "Não foi possível concluir a edição.", ultimoErro); silenceLog("Falha ao salvar a configuração editorial.", "err"); showToast("err", ultimoErro || "Não foi possível salvar a edição no banco."); return; } - setStep(4, "done", "Edição concluída"); - setStep(5, "locked", "Aguardando plano da IA"); + setStep(2, "done", "Edição concluída"); + setStep(3, "locked", "Aguardando plano da IA"); taskEnd(true, "Edição concluída e salva no banco."); silenceLog("Edição concluída e salva no banco de análises.", "ok"); showToast("ok", "Edição concluída e salva no banco."); @@ -3323,20 +3313,15 @@ function silenceGenerateJson() { return; } setBusy("btnBuildPlan", true); - setStep(4, "running", "Gerando…"); + setStep(2, "running", "Gerando…"); silenceLog("Gerando arquivo JSON para a IA…"); try { var transcript = JSON.parse(fs.readFileSync(silenceState.transcriptPath, "utf-8")); - var silenceEnabled = document.getElementById("silenceRemovalEnabled").checked; - var minSilence = parseFloat(document.getElementById("silenceRemovalMinDuration").value); - if (!isFinite(minSilence) || minSilence < 0) minSilence = 0.8; - transcript.sequence = { name: silenceState.sequenceName, media_path: silenceState.mediaPath, }; transcript.settings = Object.assign({}, transcript.settings, { - silence_removal: { enabled: silenceEnabled, min_silence_seconds: minSilence }, legendas: carregarConfiguracaoDeLegendas(), }); transcript.speaker_configuration = speakerConfigurationForJson(); @@ -3361,13 +3346,13 @@ function silenceGenerateJson() { document.getElementById("silencePlanInfo").textContent = "Envie este arquivo a um agente de IA externo. Ele deve devolver o plano de edição em JSON para o passo 5."; - setStep(4, "done", "JSON pronto"); - setStep(5, "ready", "Sua vez"); + setStep(2, "done", "JSON pronto"); + setStep(3, "ready", "Sua vez"); document.getElementById("btnApplyEditorialActions").disabled = false; showToast("ok", "JSON gerado: " + path.basename(out)); silenceLog("JSON gerado em " + out + " (" + segCount + " trechos).", "ok"); } catch (e) { - setStep(4, "error", "Falhou"); + setStep(2, "error", "Falhou"); showToast("err", "Falha ao gerar o JSON: " + e.message); silenceLog("Falha ao gerar o JSON: " + e.message, "err"); } @@ -3442,7 +3427,7 @@ function applyEditorialActions() { if (typeof window.confirm === "function" && !window.confirm(summary)) return; setBusy("btnApplyEditorialActions", true); - setStep(5, "running", "Aplicando…"); + setStep(3, "running", "Aplicando…"); taskStart("Aplicando o plano de edição", "Criando backup da sequência"); silenceLog("Criando backup da sequência…"); cs.evalScript( @@ -3457,7 +3442,7 @@ function applyEditorialActions() { var caminhoDoPlano = path.join(silenceState.outputDir || os.tmpdir(), "plano-editorial-" + Date.now() + ".json"); try { fs.writeFileSync(caminhoDoPlano, JSON.stringify(plan, null, 2), "utf-8"); } catch (erroEscrita) { setBusy("btnApplyEditorialActions", false); - setStep(5, "error", "Falhou"); + setStep(3, "error", "Falhou"); taskEnd(false, "Não foi possível salvar o plano.", erroEscrita.message); return; } @@ -3474,12 +3459,12 @@ function applyEditorialActions() { processoAplicacao = null; setBusy("btnApplyEditorialActions", false); if (code !== 0) { - setStep(5, "error", "Falhou"); + setStep(3, "error", "Falhou"); taskEnd(false, "Falha ao aplicar o plano (código " + code + ").", lastErr); silenceLog("Falha ao aplicar o plano (código " + code + ").", "err"); return; } - setStep(5, "done", "Aplicado"); + setStep(3, "done", "Aplicado"); taskEnd(true, numActions + " ação(ões) aplicadas na timeline!"); silenceLog("Plano de edição aplicado com sucesso!", "ok"); } @@ -4134,8 +4119,8 @@ function downloadModel(model, btn, approxMB) { setStep(1, "locked", "Scanner"); setStep(2, "locked", "Scanner"); setStep(3, "locked", "Aguardando análise"); - setStep(4, "locked", "Aguardando análise"); - setStep(5, "locked", "Aguardando plano"); + setStep(2, "locked", "Aguardando análise"); + setStep(3, "locked", "Aguardando análise"); log("MCP for Adobe Premiere Pro CEP connector loaded"); setStatus("waiting", "Aguardando — a ponte está iniciando");