feat: aprimorado o preview de falantes na tela Refinar para reprod
- aprimorado o preview de falantes na tela Refinar para reproduzir os trechos do vídeo - corrigida a leitura dos timestamps do preview de falantes usando os clipes do banco - alterado o preview de falantes para reproduzir diretamente na timeline ativa do Premiere - evitadas reinicializações concorrentes durante o monitoramento do preview na timeline - substituído o polling contínuo por temporização de cada trecho do preview - restaurado o preview de áudio dos falantes usando o WAV da transcrição - corrigida a localização do WAV de transcrição ao carregar análises existentes - atualizado o cabeçalho do painel CEP para Jhonny Marrone com ícone de lâmpada mágica Resumo: - 4 arquivos alterados - 0 novos - 4 modificados - 0 removidos 4 files changed, 39 insertions(+), 5 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css
This commit is contained in:
+30
-3
@@ -2246,8 +2246,28 @@ function silenceConsultarPreviewDeFalantes(videoId) {
|
||||
} catch (_) { return null; }
|
||||
}
|
||||
|
||||
function silenceLocalizarAudioParaFalantes(pasta) {
|
||||
function silenceLocalizarAudioParaFalantes(pasta, dadosDoRelatorio) {
|
||||
var encontrados = [];
|
||||
var nomesDeMidia = [];
|
||||
|
||||
function adicionarNomeDeMidia(nome) {
|
||||
if (!nome) return;
|
||||
var base = path.parse(String(nome)).name;
|
||||
if (base && nomesDeMidia.indexOf(base) < 0) nomesDeMidia.push(base);
|
||||
}
|
||||
|
||||
adicionarNomeDeMidia(silenceState.mediaPath);
|
||||
var artefatosDeAudio = dadosDoRelatorio && dadosDoRelatorio.artefatos && dadosDoRelatorio.artefatos.audio || [];
|
||||
artefatosDeAudio.forEach(function (nomeDoArtefato) {
|
||||
try {
|
||||
var caminhoDoArtefato = path.join(pasta, nomeDoArtefato);
|
||||
var dadosDoAudio = JSON.parse(fs.readFileSync(caminhoDoArtefato, "utf-8"));
|
||||
(dadosDoAudio.faixa && dadosDoAudio.faixa.clipes || []).forEach(function (clipe) {
|
||||
adicionarNomeDeMidia(clipe.nome || clipe.arquivo || clipe.sourceFile);
|
||||
});
|
||||
} catch (_) {}
|
||||
});
|
||||
|
||||
function visitar(caminho) {
|
||||
if (encontrados.length) return;
|
||||
try {
|
||||
@@ -2261,7 +2281,14 @@ function silenceLocalizarAudioParaFalantes(pasta) {
|
||||
} catch (_) {}
|
||||
}
|
||||
visitar(pasta);
|
||||
return encontrados[0] || null;
|
||||
if (encontrados.length) return encontrados[0];
|
||||
|
||||
for (var indice = 0; indice < nomesDeMidia.length; indice++) {
|
||||
var pastaDaTranscricao = path.join(SILENCE_OUTPUT_ROOT, nomesDeMidia[indice]);
|
||||
var caminhoDoAudio = path.join(pastaDaTranscricao, nomesDeMidia[indice] + ".wav");
|
||||
if (fs.existsSync(caminhoDoAudio)) return caminhoDoAudio;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function silenceLocalizarMidiaNoRelatorio(caminhoDoRelatorio, dadosDoRelatorio) {
|
||||
@@ -2300,7 +2327,7 @@ function silenceLoadScannerAnalysis() {
|
||||
silenceState.mediaPath = silenceLocalizarMidiaNoRelatorio(caminhoDoRelatorio, dadosDoRelatorio);
|
||||
silenceState.fileBaseName = path.basename(path.dirname(caminhoDoRelatorio));
|
||||
silenceState.outputDir = path.dirname(caminhoDoRelatorio);
|
||||
silenceState.audioCachePath = silenceLocalizarAudioParaFalantes(silenceState.outputDir);
|
||||
silenceState.audioCachePath = silenceLocalizarAudioParaFalantes(silenceState.outputDir, dadosDoRelatorio);
|
||||
silenceState.transcriptPath = path.join(silenceState.outputDir, "transcricao-do-scanner.json");
|
||||
silenceState.cachedTranscriptPath = null;
|
||||
silenceState.tipoVideoId = null;
|
||||
|
||||
Reference in New Issue
Block a user