Files
edge-tts/src/edge_playback/__main__.py
2024-11-22 18:28:43 +02:00

73 lines
2.0 KiB
Python

"""Main entrypoint for the edge-playback package."""
import os
import subprocess
import sys
import tempfile
from shutil import which
def pr_err(msg: str) -> None:
"""Print to stderr."""
print(msg, file=sys.stderr)
def _main() -> None:
depcheck_failed = False
for dep in ("edge-tts", "mpv"):
if not which(dep):
pr_err(f"{dep} is not installed.")
depcheck_failed = True
if depcheck_failed:
pr_err("Please install the missing dependencies.")
sys.exit(1)
keep = os.environ.get("EDGE_PLAYBACK_KEEP_TEMP") is not None
mp3_fname = os.environ.get("EDGE_PLAYBACK_MP3_FILE")
vtt_fname = os.environ.get("EDGE_PLAYBACK_VTT_FILE")
media, subtitle = None, None
try:
if not mp3_fname:
media = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
media.close()
mp3_fname = media.name
if not vtt_fname:
subtitle = tempfile.NamedTemporaryFile(suffix=".vtt", delete=False)
subtitle.close()
vtt_fname = subtitle.name
print(f"Media file: {mp3_fname}")
print(f"Subtitle file: {vtt_fname}\n")
with subprocess.Popen(
[
"edge-tts",
f"--write-media={mp3_fname}",
f"--write-subtitles={vtt_fname}",
]
+ sys.argv[1:]
) as process:
process.communicate()
with subprocess.Popen(
[
"mpv",
f"--sub-file={vtt_fname}",
mp3_fname,
]
) as process:
process.communicate()
finally:
if keep:
print(f"\nKeeping temporary files: {mp3_fname} and {vtt_fname}")
else:
if mp3_fname is not None and os.path.exists(mp3_fname):
os.unlink(mp3_fname)
if vtt_fname is not None and os.path.exists(vtt_fname):
os.unlink(vtt_fname)
if __name__ == "__main__":
_main()