- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
58 lines
1.3 KiB
Python
58 lines
1.3 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Any
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class IntervaloDeTempo:
|
|
inicio: float
|
|
fim: float
|
|
|
|
def __post_init__(self) -> None:
|
|
if self.inicio < 0 or self.fim < self.inicio:
|
|
raise ValueError("Intervalo de tempo inválido.")
|
|
|
|
@property
|
|
def duracao(self) -> float:
|
|
return self.fim - self.inicio
|
|
|
|
|
|
@dataclass
|
|
class Clipe:
|
|
identificador: str
|
|
nome: str
|
|
intervalo_na_timeline: IntervaloDeTempo
|
|
intervalo_na_origem: IntervaloDeTempo | None = None
|
|
arquivo: str | None = None
|
|
identificador_da_faixa: str | None = None
|
|
offline: bool = False
|
|
metadados: dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class Faixa:
|
|
identificador: str
|
|
nome: str
|
|
tipo: str
|
|
indice: int
|
|
clipes: list[Clipe] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class Timeline:
|
|
identificador: str
|
|
nome: str
|
|
duracao: float | None = None
|
|
taxa_de_quadros: float | None = None
|
|
largura: int | None = None
|
|
altura: int | None = None
|
|
faixas: list[Faixa] = field(default_factory=list)
|
|
metadados: dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class Projeto:
|
|
identificador: str
|
|
nome: str
|
|
caminho: str | None = None
|
|
sequencias: list[Any] = field(default_factory=list)
|