feat: sincronizado o estado de transcrição, métricas e diarização
- sincronizado o estado de transcrição, métricas e diarização entre SQLite, Scanner e Editar vídeo Resumo: - 6 arquivos alterados - 1 novos - 5 modificados - 0 removidos 5 files changed, 181 insertions(+), 12 deletions(-) Arquivos: - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/persistencia/consultas.py - code/engine/testes/test_consultas_de_persistencia.py - code/engine/consultar_status_da_analise.py
This commit is contained in:
@@ -96,6 +96,45 @@ class ConsultasDeAnalises:
|
||||
"total_cenas": contagens["cenas"],
|
||||
}
|
||||
|
||||
def consultar_status_da_analise(self, video_id: str) -> dict | None:
|
||||
"""Devolve o estado compacto das análises de áudio de um vídeo."""
|
||||
self._validar_texto_obrigatorio("video_id", video_id)
|
||||
resumo = self.consultar_resumo_do_video(video_id)
|
||||
if resumo is None:
|
||||
return None
|
||||
linha = self.conexao.execute(
|
||||
"""SELECT
|
||||
COUNT(*) AS falas,
|
||||
SUM(CASE WHEN falante IS NOT NULL AND TRIM(falante) <> '' THEN 1 ELSE 0 END) AS falas_com_falante,
|
||||
SUM(CASE WHEN caracteristicas_acusticas IS NOT NULL
|
||||
AND caracteristicas_acusticas <> '{}'
|
||||
THEN 1 ELSE 0 END) AS falas_com_metricas
|
||||
FROM segmentos_de_transcricao
|
||||
WHERE video_id = ?""",
|
||||
(video_id,),
|
||||
).fetchone()
|
||||
falantes = [
|
||||
item["falante"] for item in self.conexao.execute(
|
||||
"""SELECT DISTINCT falante
|
||||
FROM segmentos_de_transcricao
|
||||
WHERE video_id = ? AND falante IS NOT NULL AND TRIM(falante) <> ''
|
||||
ORDER BY falante""",
|
||||
(video_id,),
|
||||
).fetchall()
|
||||
]
|
||||
return {
|
||||
**resumo,
|
||||
"audio": {
|
||||
"transcricao_disponivel": bool(linha["falas"]),
|
||||
"total_falas": linha["falas"] or 0,
|
||||
"falas_com_falante": linha["falas_com_falante"] or 0,
|
||||
"falas_com_metricas": linha["falas_com_metricas"] or 0,
|
||||
"diarizacao_disponivel": bool(linha["falas_com_falante"]),
|
||||
"metricas_de_voz_disponiveis": bool(linha["falas_com_metricas"]),
|
||||
"falantes": falantes,
|
||||
},
|
||||
}
|
||||
|
||||
def listar_falas_no_intervalo(
|
||||
self,
|
||||
video_id: str,
|
||||
|
||||
Reference in New Issue
Block a user