Files
jhonny-editor/code/engine/consultar_edicao_concluida.py
João Henrique 5644b42722 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
2026-09-10 13:30:10 -04:00

57 lines
2.0 KiB
Python

"""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()