Initialer Push, Grundsätzlich funktioniert das Programm

This commit is contained in:
2026-07-09 23:00:31 +02:00
parent 70088f7861
commit 952bbb6158
51 changed files with 3066 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
"""Kleiner Wrapper um ffprobe zur Längenermittlung von Audiodateien."""
from __future__ import annotations
import logging
import subprocess
from pathlib import Path
logger = logging.getLogger(__name__)
def probe_duration_seconds(audio_path: Path) -> float:
"""Ermittelt die Länge einer Audiodatei in Sekunden via ffprobe.
Gibt 0.0 zurück, wenn ffprobe die Datei nicht auswerten kann, statt
abzustürzen - die Länge ist reine Anzeige-Information und darf das
Hinzufügen einer Datei nicht verhindern.
"""
try:
result = subprocess.run(
[
"ffprobe",
"-v", "error",
"-show_entries", "format=duration",
"-of", "default=noprint_wrappers=1:nokey=1",
str(audio_path),
],
capture_output=True,
text=True,
check=True,
)
return float(result.stdout.strip())
except (subprocess.CalledProcessError, ValueError, FileNotFoundError):
logger.exception("ffprobe konnte die Länge von %s nicht ermitteln", audio_path)
return 0.0