feat: carregamento automático da análise do Scanner ao abrir a aba
- carregamento automático da análise do Scanner ao abrir a aba Refinar - simplificada a aba Editar vídeo para exibir análises disponíveis sem carregamento manual - movida a visualização do tipo de vídeo para a guia Projeto com leitura do banco Resumo: - 10 arquivos alterados - 2 novos - 8 modificados - 0 removidos 8 files changed, 114 insertions(+), 11 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/abas/projeto/projeto.js - code/cep-plugin/index.html - code/cep-plugin/main.js - code/engine/integracoes/audio/__init__.py - code/engine/integracoes/audio/modelos_de_analise_musical.py - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py - code/engine/testes/test_analisador_de_musica_essentia.py - code/engine/consultar_edicao_concluida.py - code/engine/integracoes/audio/classificador_de_musica_essentia.py
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
"""Consulta a configuração editorial concluída mais recente de um vídeo."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
import sqlite3
|
||||
import sys
|
||||
|
||||
CAMINHO_DO_CODIGO = Path(__file__).resolve().parent.parent
|
||||
if str(CAMINHO_DO_CODIGO) not in sys.path:
|
||||
sys.path.insert(0, str(CAMINHO_DO_CODIGO))
|
||||
|
||||
from engine.persistencia.conexao import abrir_banco
|
||||
|
||||
|
||||
def consultar(caminho_do_banco: Path, video_id: str) -> dict[str, object] | None:
|
||||
"""Retorna a edição mais recente sem alterar o banco."""
|
||||
conexao = abrir_banco(caminho_do_banco)
|
||||
try:
|
||||
linha = conexao.execute(
|
||||
"""SELECT id, video_id, sequencia, tipo_de_video, configuracao, concluida_em
|
||||
FROM edicoes_de_video WHERE video_id = ?
|
||||
ORDER BY concluida_em DESC, id DESC LIMIT 1""", (video_id,),
|
||||
).fetchone()
|
||||
if linha is None:
|
||||
return None
|
||||
return {
|
||||
"id": linha["id"], "video_id": linha["video_id"],
|
||||
"sequencia": linha["sequencia"], "tipo_de_video": linha["tipo_de_video"],
|
||||
"configuracao": json.loads(linha["configuracao"]),
|
||||
"concluida_em": linha["concluida_em"],
|
||||
}
|
||||
finally:
|
||||
conexao.close()
|
||||
|
||||
|
||||
def principal() -> None:
|
||||
"""Executa a consulta pela linha de comando."""
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("video_id")
|
||||
parser.add_argument("--banco", type=Path, default=Path(".jhonny/analises.db"))
|
||||
opcoes = parser.parse_args()
|
||||
try:
|
||||
edicao = consultar(opcoes.banco, opcoes.video_id)
|
||||
if edicao is None:
|
||||
raise ValueError("Nenhuma edição concluída encontrada para este vídeo.")
|
||||
print(json.dumps({"ok": True, "edicao": edicao}, ensure_ascii=False))
|
||||
except (OSError, ValueError, sqlite3.Error, json.JSONDecodeError) as erro:
|
||||
print(json.dumps({"ok": False, "erro": str(erro)}, ensure_ascii=False))
|
||||
raise SystemExit(1) from erro
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
principal()
|
||||
Reference in New Issue
Block a user