feat: corrigido o carregamento do extrator de áudio no complemento

- corrigido o carregamento do extrator de áudio no complemento de identificação de locutores do Scanner.
- corrigida a descoberta da timeline ativa no painel CEP com fallback compatível entre versões do Premiere

Resumo:
- 5 arquivos alterados
- 0 novos
- 3 modificados
- 2 removidos

 5 files changed, 23 insertions(+), 2 deletions(-)

Arquivos:
  - .jhonny/analises.db-shm
  - .jhonny/analises.db-wal
  - code/cep-plugin/main.js
  - code/engine/executar_scanner.py
  - code/engine/testes/test_executar_scanner.py
This commit is contained in:
João Henrique
2026-09-09 19:19:40 -04:00
parent f6dd03f7b4
commit 5e1e471b3a
5 changed files with 23 additions and 2 deletions
Binary file not shown.
View File
+5 -2
View File
@@ -2152,12 +2152,15 @@ function silenceListSequences() {
"try{" + "try{" +
"if(!app.project) return JSON.stringify({ok:false,error:'Nenhum projeto aberto.'});" + "if(!app.project) return JSON.stringify({ok:false,error:'Nenhum projeto aberto.'});" +
"var sequences=[];" + "var sequences=[];" +
"for(var i=0;i<app.project.sequences.numSequences;i++){" + "var colecao=null;try{colecao=app.project.sequences;}catch(ignorarColecao){colecao=null;}" +
"var quantidade=colecao&&typeof colecao.numSequences!=='undefined'?Number(colecao.numSequences):0;" +
"for(var i=0;i<quantidade;i++){" +
"var seq=app.project.sequences[i];" + "var seq=app.project.sequences[i];" +
"sequences.push({id:String(seq.sequenceID),name:String(seq.name),duration:Number(seq.end.seconds)||0," + "sequences.push({id:String(seq.sequenceID),name:String(seq.name||''),duration:seq.end&&typeof seq.end.seconds!=='undefined'?Number(seq.end.seconds):0," +
"videoTracks:seq.videoTracks.numTracks||0,audioTracks:seq.audioTracks.numTracks||0," + "videoTracks:seq.videoTracks.numTracks||0,audioTracks:seq.audioTracks.numTracks||0," +
"active:app.project.activeSequence&&seq.sequenceID===app.project.activeSequence.sequenceID});" + "active:app.project.activeSequence&&seq.sequenceID===app.project.activeSequence.sequenceID});" +
"}" + "}" +
"if(!sequences.length&&app.project.activeSequence){var ativa=app.project.activeSequence;sequences.push({id:String(ativa.sequenceID),name:String(ativa.name||''),duration:ativa.end&&typeof ativa.end.seconds!=='undefined'?Number(ativa.end.seconds):0,videoTracks:ativa.videoTracks.numTracks||0,audioTracks:ativa.audioTracks.numTracks||0,active:true});}" +
"return JSON.stringify({ok:true,sequences:sequences});" + "return JSON.stringify({ok:true,sequences:sequences});" +
"}catch(e){return JSON.stringify({ok:false,error:String(e)});}" + "}catch(e){return JSON.stringify({ok:false,error:String(e)});}" +
"}())", "}())",
+1
View File
@@ -39,6 +39,7 @@ if CAMINHO_DA_MIDIA:
os.environ["PATH"] = CAMINHO_DA_MIDIA + os.pathsep + os.environ.get("PATH", "") os.environ["PATH"] = CAMINHO_DA_MIDIA + os.pathsep + os.environ.get("PATH", "")
from engine.integracoes.premiere.conversores import ConversorDeTimeline from engine.integracoes.premiere.conversores import ConversorDeTimeline
from engine.integracoes.midia import ExtracaoDeAudio
from engine.scanner import ConfiguracaoVisualDoScanner, criar_detector_apple_vision, gerar_relatorio_visual from engine.scanner import ConfiguracaoVisualDoScanner, criar_detector_apple_vision, gerar_relatorio_visual
from engine.scanner.transcricao_da_timeline import TranscricaoDaTimeline from engine.scanner.transcricao_da_timeline import TranscricaoDaTimeline
from engine.persistencia import RepositorioDeAnalisesSQLite, RepositorioDeTimelineSQLite from engine.persistencia import RepositorioDeAnalisesSQLite, RepositorioDeTimelineSQLite
@@ -24,6 +24,23 @@ class TesteDoPontoDeEntradaDoScanner(unittest.TestCase):
self.assertIn("usage:", resultado.stdout) self.assertIn("usage:", resultado.stdout)
self.assertNotIn("No module named 'engine'", resultado.stderr) self.assertNotIn("No module named 'engine'", resultado.stderr)
def test_ponto_de_entrada_disponibiliza_extracao_de_audio_para_complementos(self):
"""Garante que o complemento de locutores encontre o extrator de áudio."""
caminho_do_script = Path(__file__).resolve().parents[1] / "executar_scanner.py"
resultado = subprocess.run(
[
sys.executable,
"-c",
"import executar_scanner; assert executar_scanner.ExtracaoDeAudio",
],
cwd=caminho_do_script.parent,
capture_output=True,
text=True,
check=False,
)
self.assertEqual(resultado.returncode, 0, resultado.stderr)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()