#!/usr/bin/env python3 """ euni_menu.py — interaktivní menu pro stahování kurzů z euni.cz. Spuštění: python euni_menu.py Jen vyber číslo a Enter. Každá volba spustí příslušný skript a po doběhnutí se vrátíš do menu (Ctrl+C přeruší aktuální akci, ne celé menu). """ import os import subprocess import sys from pathlib import Path for _s in (sys.stdout, sys.stderr): try: _s.reconfigure(errors="backslashreplace") except Exception: pass SKRIPT_DIR = Path(__file__).resolve().parent PY = sys.executable # klíč -> (popis, skript, argumenty) AKCE = { "1": ("Test - 3 kurzy, jen dokumenty (rychle)", "euni_stahni.py", ["--from-json", "--no-videos", "--limit", "3"]), "2": ("Vsechny dokumenty (PDF/prezentace)", "euni_stahni.py", ["--from-json", "--no-videos"]), "3": ("Vse vcetne videi - nejvyssi kvalita (1080p, velke)", "euni_stahni.py", ["--from-json"]), "4": ("Vse vcetne videi - 720p (mensi, rychlejsi)", "euni_stahni.py", ["--from-json", "--video-format", "bestvideo[height<=720]+bestaudio/best"]), "5": ("Jen videa (1080p)", "euni_stahni.py", ["--from-json", "--no-docs"]), "6": ("Prehled stavu (dashboard)", "euni_report.py", []), "7": ("Obnova ze SeaweedFS na disk", "euni_restore.py", []), "8": ("Backfill - dohrat chybejici kopie do SeaweedFS", "euni_stahni.py", ["--seaweed-backfill", "--from-json"]), "9": ("Aktualizovat seznam kurzu (znovu scrape do Mongo)", "euni_stahni.py", ["--scrape-only"]), } def vycisti_obrazovku(): os.system("cls" if os.name == "nt" else "clear") def vypis_menu(): print("=" * 60) print(" EUNI - stahovani kurzu z euni.cz") print("=" * 60) print() for k in sorted(AKCE): print(f" {k}) {AKCE[k][0]}") print() print(" 0) Konec") print() def main(): while True: vycisti_obrazovku() vypis_menu() try: volba = input("Vyber cislo a stiskni Enter: ").strip() except (EOFError, KeyboardInterrupt): print() break if volba in ("0", "q", "exit", "konec"): break akce = AKCE.get(volba) if not akce: continue _, skript, args = akce print() try: subprocess.run([PY, str(SKRIPT_DIR / skript), *args], cwd=str(SKRIPT_DIR)) except KeyboardInterrupt: print("\nPreruseno uzivatelem.") try: input("\n=== HOTOVO. Stiskni Enter pro navrat do menu ===") except (EOFError, KeyboardInterrupt): break if __name__ == "__main__": main()