import shutil import sys from pathlib import Path from typing import Optional __shaka_platform = { "win32": "win", "darwin": "osx" }.get(sys.platform, sys.platform) def find(*names: str) -> Optional[Path]: """Find the path of the first found binary name.""" for name in names: path = shutil.which(name) if path: return Path(path) return None FFMPEG = find("ffmpeg") FFProbe = find("ffprobe") FFPlay = find("ffplay") SubtitleEdit = find("SubtitleEdit") ShakaPackager = find( "shaka-packager", "packager", f"packager-{__shaka_platform}", f"packager-{__shaka_platform}-arm64", f"packager-{__shaka_platform}-x64" ) Aria2 = find("aria2c", "aria2") CCExtractor = find( "ccextractor", "ccextractorwin", "ccextractorwinfull" ) HolaProxy = find("hola-proxy") MPV = find("mpv") Caddy = find("caddy") MP4Decrypt = find("mp4decrypt") __all__ = ( "FFMPEG", "FFProbe", "FFPlay", "SubtitleEdit", "ShakaPackager", "Aria2", "CCExtractor", "HolaProxy", "MPV", "Caddy", "MP4Decrypt", "find" )