73 lines
2.0 KiB
Python
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()
|