Spaces:
Sleeping
Sleeping
File size: 1,071 Bytes
d286c92 | 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | """Shared utilities."""
import os
VIDEO_EXTENSIONS = {
".mp4", ".mkv", ".avi", ".mov", ".wmv", ".flv", ".webm",
".m4v", ".mpg", ".mpeg", ".ts", ".m2ts", ".3gp",
}
def fmt_size(n: int | float) -> str:
if n < 0:
return "—"
for unit in ("B", "KB", "MB", "GB", "TB"):
if n < 1024:
return f"{n:.1f} {unit}"
n /= 1024
return f"{n:.1f} PB"
def fmt_eta(seconds: float) -> str:
if seconds <= 0 or seconds != seconds:
return "—"
seconds = int(seconds)
h, r = divmod(seconds, 3600)
m, s = divmod(r, 60)
if h:
return f"{h}h {m}m"
if m:
return f"{m}m {s}s"
return f"{s}s"
def is_video(path: str) -> bool:
return os.path.splitext(path)[1].lower() in VIDEO_EXTENSIONS
def find_first_video(directory: str) -> str:
for root, _, files in os.walk(directory):
for f in files:
if is_video(f):
return os.path.join(root, f)
return ""
def ffmpeg_ok() -> bool:
import shutil
return shutil.which("ffmpeg") is not None
|