Add Avisynth video encoding workflow
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from shutil import which
|
||||
|
||||
from tools.console import prompt_input
|
||||
|
||||
|
||||
def require_executable(name: str) -> str:
|
||||
executable = which(name)
|
||||
if executable:
|
||||
return executable
|
||||
fallback = _windows_default_executable(name)
|
||||
if fallback is not None:
|
||||
print(f"\n{name} was not found on PATH; using {fallback}.")
|
||||
return str(fallback)
|
||||
if not sys.stdin.isatty():
|
||||
raise RuntimeError(_missing_tool_message(name))
|
||||
|
||||
print(f"\n{name} was not found on PATH.")
|
||||
while True:
|
||||
answer = prompt_input(
|
||||
f"Absolute path to {name} for this run (blank = cancel): "
|
||||
).strip().strip('"')
|
||||
if not answer:
|
||||
raise RuntimeError(_missing_tool_message(name))
|
||||
path = Path(answer).expanduser()
|
||||
if not path.is_absolute():
|
||||
print("Please enter an absolute path.")
|
||||
elif not path.is_file():
|
||||
print(f"File not found: {path}")
|
||||
else:
|
||||
return str(path.resolve())
|
||||
|
||||
|
||||
def _missing_tool_message(name: str) -> str:
|
||||
return (
|
||||
f"{name} was not found on PATH. Install it and make sure the "
|
||||
f"'{name}' command works before running this script."
|
||||
)
|
||||
|
||||
|
||||
def _windows_default_executable(name: str) -> Path | None:
|
||||
if os.name != "nt" or name.casefold().removesuffix(".exe") != "mkvmerge":
|
||||
return None
|
||||
|
||||
path = Path(r"C:\Program Files\MKVToolNix\mkvmerge.exe")
|
||||
return path.resolve() if path.is_file() else None
|
||||
Reference in New Issue
Block a user