Jarian 0da74d39a0 init: media-transcriber pipeline
- whisper.cpp base.en transcription on RTX 5060 Ti (GPU 1)
- 25,439 videos indexed from /mnt/mediaserver/
- pipeline: ffmpeg extract -> whisper-server infer -> save SRT
- thermal cycle: 45min work / 15min rest
- fixes: curl quotes for spaces, --convert + WorkingDirectory=/tmp
2026-07-07 04:47:18 +00:00

40 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))
def main():
if len(sys.argv) < 2:
print("Usage: mt.py <scan|transcribe|continuous|status>")
sys.exit(1)
cmd = sys.argv[1]
if cmd == "scan":
import json
from indexer import scan
skip_dur = "--duration" not in sys.argv
idx = scan(skip_duration=skip_dur)
print(json.dumps({
"total": idx["total_videos"],
"transcribed": idx["transcribed"],
"pending": idx["total_videos"] - idx["transcribed"],
}, indent=2))
elif cmd in ("transcribe", "continuous"):
from worker import run_once, run_continuous
run_once() if cmd == "transcribe" else run_continuous()
elif cmd == "status":
import json
with open("/home/jarian/projects/media-transcriber/index.json") as f:
idx = json.load(f)
print(f"Total: {idx['total_videos']}")
print(f"Done: {idx['transcribed']}")
print(f"Pending: {idx['total_videos'] - idx['transcribed']}")
print(f"Updated: {idx['last_updated']}")
else:
print(f"Unknown command: {cmd}")
sys.exit(1)
if __name__ == "__main__":
main()