diff --git a/code/engine/editor/aplicador_de_plano_de_edicao.py b/code/engine/editor/aplicador_de_plano_de_edicao.py index b0e7903..6412278 100644 --- a/code/engine/editor/aplicador_de_plano_de_edicao.py +++ b/code/engine/editor/aplicador_de_plano_de_edicao.py @@ -402,8 +402,18 @@ class AplicadorDePlanoDeEdicao: pontos_para_cortar.add(self.mapeador.instante_na_timeline(clipe, acao.inicio)) if acao.fim < clipe.intervalo_na_origem.fim: pontos_para_cortar.add(self.mapeador.instante_na_timeline(clipe, acao.fim)) + razor_bem_sucedido = True for ponto in sorted(pontos_para_cortar, reverse=True): - self.escrita.dividir_todas_as_faixas(ponto) + try: + self.escrita.dividir_todas_as_faixas(ponto) + except ErroDeEdicao: + razor_bem_sucedido = False + break + if not razor_bem_sucedido: + raise ErroDeMapeamentoDeTempo( + f"O razor falhou ao isolar o trecho do gancho " + f"({acao.inicio:.3f}-{acao.fim:.3f}s); o gancho não foi aplicado." + ) faixas = self._timeline_atual().faixas faixas_afetadas = [ diff --git a/code/engine/testes/test_aplicador_de_plano_de_edicao.py b/code/engine/testes/test_aplicador_de_plano_de_edicao.py index cf64b2b..fd09f0b 100644 --- a/code/engine/testes/test_aplicador_de_plano_de_edicao.py +++ b/code/engine/testes/test_aplicador_de_plano_de_edicao.py @@ -330,7 +330,7 @@ class TesteAplicadorDePlanoDeEdicao(unittest.TestCase): mapeador=MapeadorDeTempoDeOrigemParaTimeline(), ) plano = PlanoDeEdicao("0E6A8290.mp4", ( - AcaoDeEdicao(TipoDeAcao.CORTE, inicio=0.0, fim=40.6, motivo="bastidor"), + AcaoDeEdicao(TipoDeAcao.CORTE, inicio=2.3, fim=20.0, motivo="bastidor"), AcaoDeEdicao(TipoDeAcao.MARCADOR, inicio=90.0, fim=90.5, motivo="ok", parametros={"content": "X"}), )) resultado = aplicador.aplicar(plano)