feat: corrigida a resolução da mídia real ao aplicar planos editor

- corrigida a resolução da mídia real ao aplicar planos editoriais salvos.
- atualizada a guia Trilhas para recuperar e reaproveitar o catálogo salvo

Resumo:
- 5 arquivos alterados
- 0 novos
- 5 modificados
- 0 removidos

 5 files changed, 88 insertions(+), 9 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - code/cep-plugin/main.js
  - code/engine/analisar_trilhas.py
  - code/engine/persistencia/repositorio_de_trilhas.py
  - code/engine/testes/test_repositorio_de_trilhas.py
This commit is contained in:
João Henrique
2026-09-10 14:07:23 -04:00
parent 4c04365934
commit b038d9b2e4
5 changed files with 88 additions and 9 deletions
+19 -5
View File
@@ -23,8 +23,8 @@ def emitir(evento: str, **dados: object) -> None:
print("@@PROGRESS " + json.dumps({"evento": evento, **dados}, ensure_ascii=False), flush=True)
def executar(pasta: Path, banco: Path, diretorio_dos_modelos: Path | None) -> int:
"""Analisa todos os arquivos musicais encontrados na pasta e subpastas."""
def executar(pasta: Path, banco: Path, diretorio_dos_modelos: Path | None, apenas_listar: bool = False) -> int:
"""Atualiza o catálogo e, opcionalmente, analisa as trilhas pendentes."""
arquivos = tuple(sorted(
arquivo for arquivo in pasta.rglob("*")
if arquivo.is_file() and arquivo.suffix.lower() in EXTENSOES_DE_AUDIO
@@ -33,14 +33,27 @@ def executar(pasta: Path, banco: Path, diretorio_dos_modelos: Path | None) -> in
try:
repositorio = RepositorioDeTrilhasSQLite(conexao)
trilhas = repositorio.registrar_pasta_e_arquivos(pasta, arquivos)
if apenas_listar:
emitir("catalogo_atualizado", trilhas=[
{"nome": trilha.nome_do_arquivo, "status": trilha.status}
for trilha in trilhas
])
return 0
classificador = (
ClassificadorDeMusicaEssentia(diretorio_dos_modelos)
if diretorio_dos_modelos and diretorio_dos_modelos.is_dir()
else None
)
analisador = AnalisadorDeMusicaInstrumentalEssentia(classificador=classificador)
emitir("lote_iniciado", total=len(trilhas), pasta=str(pasta), nomes=[trilha.nome_do_arquivo for trilha in trilhas])
for ordem, trilha in enumerate(trilhas, start=1):
pendentes = tuple(trilha for trilha in trilhas if trilha.status != "concluida")
emitir(
"lote_iniciado",
total=len(pendentes),
pasta=str(pasta),
nomes=[trilha.nome_do_arquivo for trilha in pendentes],
trilhas=[{"nome": trilha.nome_do_arquivo, "status": trilha.status} for trilha in trilhas],
)
for ordem, trilha in enumerate(pendentes, start=1):
repositorio.iniciar_analise(trilha.identificador)
emitir("trilha_iniciada", nome=trilha.nome_do_arquivo, indice=ordem, total=len(trilhas), percentual=(ordem - 1) * 100 / max(1, len(trilhas)))
try:
@@ -62,9 +75,10 @@ def principal() -> None:
argumentos.add_argument("pasta", type=Path)
argumentos.add_argument("--banco", type=Path, default=Path(".jhonny/analises.db"))
argumentos.add_argument("--modelos", type=Path, default=None)
argumentos.add_argument("--listar", action="store_true")
opcoes = argumentos.parse_args()
try:
raise SystemExit(executar(opcoes.pasta, opcoes.banco, opcoes.modelos))
raise SystemExit(executar(opcoes.pasta, opcoes.banco, opcoes.modelos, opcoes.listar))
except (OSError, RuntimeError, ValueError) as erro:
emitir("lote_com_erro", erro=str(erro))
raise SystemExit(1) from erro