File size: 688 Bytes
345855e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | from __future__ import annotations
from dataclasses import dataclass, field
from pathlib import Path
@dataclass
class FFmpegCommand:
args: list[str] = field(default_factory=lambda: ["ffmpeg"])
def add(self, *args: object) -> "FFmpegCommand":
self.args.extend(str(arg) for arg in args)
return self
def input(self, path: str | Path, **options: object) -> "FFmpegCommand":
for key, value in options.items():
self.add(f"-{key}", value)
self.add("-i", path)
return self
def overwrite(self) -> "FFmpegCommand":
self.add("-y")
return self
def build(self) -> list[str]:
return list(self.args)
|