Install globally:
def present_subtitle_choices(subtitles): """Show interactive table and return selected index.""" if not subtitles: console.print("[yellow]No subtitles found.[/yellow]") return None table = Table(title="Available Subtitles") table.add_column("#", style="cyan") table.add_column("Provider", style="magenta") table.add_column("Language", style="green") table.add_column("URL", style="blue") for idx, sub in enumerate(subtitles): table.add_row(str(idx+1), sub["provider"], sub["lang"], sub["url"][:60] + "...") console.print(table) choice = Prompt.ask("Select subtitle number", default="1") try: return int(choice) - 1 except: return 0 predestination subtitle download
pip install . Then run from anywhere:
def download_subtitle(sub_url, output_path): """Download subtitle from URL to output_path.""" try: r = requests.get(sub_url, timeout=30, stream=True) r.raise_for_status() with open(output_path, "wb") as f: for chunk in r.iter_content(chunk_size=8192): f.write(chunk) return True except Exception as e: console.print(f"[red]Download failed: {e}[/red]") return False style="blue") for idx
all_subs = [] # Try OpenSubtitles first (hash match) console.print("[dim]Searching OpenSubtitles...[/dim]") subs_os = search_opensubs(video_file, lang_code) all_subs.extend(subs_os) sub in enumerate(subtitles): table.add_row(str(idx+1)
if auto: selected = 0 else: selected = present_subtitle_choices(all_subs) if selected is None: sys.exit(0)