import json from pathlib import Path from engine.integracoes.midia import ExtracaoDeAudio from engine.integracoes.groq import ProviderDeTranscricaoGroq from engine.integracoes.premiere.cliente_mcp import ClienteMCPPorStdio from engine.integracoes.premiere.conversores import ConversorDeTimeline from engine.scanner.transcricao_da_timeline import TranscricaoDaTimeline ARQUIVO = Path('/Volumes/Merongo/PROJETOS/03 - Mastopexia/0E6A8290.MP4') CHAVE = json.loads((Path.home()/'.premiere-mcp/config.json').read_text()).get('groqApiKey','') SAIDA = Path('/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/Jhonny/code/relatorios') cliente = ClienteMCPPorStdio(['node', 'dist/index.js']) cliente.conectar() bruta = cliente.chamar('get_active_sequence', {})['structuredContent']['data'] timeline = ConversorDeTimeline().converter(bruta) for faixa in timeline.faixas: for clipe in faixa.clipes: if clipe.nome == '0E6A8290.MP4': clipe.arquivo = str(ARQUIVO) provider = ProviderDeTranscricaoGroq(CHAVE) transcricoes = TranscricaoDaTimeline(provider, ExtracaoDeAudio(duracao_da_parte=600), SAIDA/'audio').executar(timeline) linhas = [f'# Relatório de transcrição — {timeline.nome}', '', f'Duração: {bruta["end"]:.3f} s', f'Clipes processados: {sum(len(f.clipes) for f in timeline.faixas if f.tipo == "video")}', ''] for faixa in timeline.faixas: if faixa.tipo != 'video': continue for clipe in faixa.clipes: if clipe.nome != '0E6A8290.MP4': continue resultado = next((r for r in transcricoes if r.identificador_do_clipe == clipe.identificador), None) intervalo = clipe.intervalo_na_origem texto = resultado.texto if resultado else '' linhas += [f'## {clipe.identificador} — {clipe.intervalo_na_timeline.inicio:.3f}s–{clipe.intervalo_na_timeline.fim:.3f}s', f'Origem: {intervalo.inicio:.3f}s–{intervalo.fim:.3f}s', '', texto or '_Sem fala detectada._', ''] (SAIDA/'transcricao-timeline.md').write_text('\n'.join(linhas), encoding='utf-8') print(SAIDA/'transcricao-timeline.md')