File size: 688 Bytes
1425afc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)