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