diff --git a/API/data/alldebrid.json b/API/data/alldebrid.json index cc243ed..28ba01d 100644 --- a/API/data/alldebrid.json +++ b/API/data/alldebrid.json @@ -92,7 +92,7 @@ "(hitfile\\.net/[a-z0-9A-Z]{4,9})" ], "regexp": "(hitf\\.(to|cc)/([a-z0-9A-Z]{4,9}))|(htfl\\.(net|to|cc)/([a-z0-9A-Z]{4,9}))|(hitfile\\.(net)/download/free/([a-z0-9A-Z]{4,9}))|((hitfile\\.net/[a-z0-9A-Z]{4,9}))", - "status": false + "status": true }, "mega": { "name": "mega", @@ -426,7 +426,7 @@ "google\\.com/uc\\?id=([0-9A-Za-z_-]+)" ], "regexp": "(((drive|docs)\\.google\\.com/open\\?id=([0-9A-Za-z_-]+)))|((drive|docs)\\.google\\.com/file/d/([0-9A-Za-z_-]+))|(google\\.com/uc\\?id=([0-9A-Za-z_-]+))", - "status": false + "status": true }, "hexupload": { "name": "hexupload", diff --git a/scripts/bootstrap.py b/scripts/bootstrap.py index af94155..9fe483d 100644 --- a/scripts/bootstrap.py +++ b/scripts/bootstrap.py @@ -680,19 +680,37 @@ def main() -> int: """Show a simple interactive menu to choose install/uninstall or delegate.""" try: installed = _is_installed() + term_width = shutil.get_terminal_size((80, 20)).columns while True: os.system("cls" if os.name == "nt" else "clear") - print("====================================") - print(" MEDEIA MACINA BOOTSTRAP MENU") - print("====================================") - print("1) Install / Reinstall") - print("2) Extras > HydrusNetwork") - if installed: - print("3) Uninstall") - print("4) Status") - print("q) Quit") + # Center the logo + logo_lines = LOGO.strip().splitlines() + # Filter out the ruler lines if they are still there + logo_lines = [line for line in logo_lines if not any(c.isdigit() for c in line.strip())] - choice = input("\nChoose an option: ").strip().lower() + print("\n" * 2) + for line in logo_lines: + print(line.center(term_width)) + + print("\n") + menu_title = " MEDEIA MACINA BOOTSTRAP MENU " + border = "=" * len(menu_title) + print(border.center(term_width)) + print(menu_title.center(term_width)) + print(border.center(term_width)) + print("\n") + + install_text = "1) Reinstall" if installed else "1) Install" + print(install_text.center(term_width)) + print("2) Extras > HydrusNetwork".center(term_width)) + if installed: + print("3) Uninstall".center(term_width)) + print("q) Quit".center(term_width)) + + prompt = "\nChoose an option: " + # Try to center the prompt roughly + indent = " " * ((term_width // 2) - (len(prompt) // 2)) + choice = input(f"{indent}{prompt}").strip().lower() if choice in ("1", "install", "reinstall"): return "install" @@ -703,11 +721,6 @@ def main() -> int: if installed and choice in ("3", "uninstall"): return "uninstall" - if installed and choice in ("4", "status"): - print("\nInstallation detected." if installed else "\nNot installed.") - input("\nPress Enter to continue...") - continue - if choice in ("q", "quit", "exit"): return 0 except EOFError: @@ -910,7 +923,14 @@ def main() -> int: if not args.quiet and not args.debug: # Clear the terminal before showing logo os.system('cls' if os.name == 'nt' else 'clear') - print(LOGO) + term_width = shutil.get_terminal_size((80, 20)).columns + logo_lines = LOGO.strip().splitlines() + # Filter out the ruler lines + logo_lines = [line for line in logo_lines if not any(c.isdigit() for c in line.strip())] + print("\n" * 2) + for line in logo_lines: + print(line.center(term_width)) + print("\n") # Determine total steps for progress bar total_steps = 7 # Base: venv, pip, deps, project, cli, finalize, env diff --git a/tool/ytdlp.py b/tool/ytdlp.py index 3454cd4..cd62804 100644 --- a/tool/ytdlp.py +++ b/tool/ytdlp.py @@ -166,6 +166,10 @@ def list_formats( if cookiefile: ydl_opts["cookiefile"] = str(cookiefile) + else: + # Best effort attempt to use browser cookies if no file is explicitly passed + ydl_opts["cookiesfrombrowser"] = "chrome" + if no_playlist: ydl_opts["noplaylist"] = True if playlist_items: @@ -558,6 +562,11 @@ class YtDlpTool: cookiefile = self.resolve_cookiefile() if cookiefile is not None and cookiefile.is_file(): base_options["cookiefile"] = str(cookiefile) + else: + # Add browser cookies support "just in case" if no file found (best effort) + # This uses yt-dlp's support for extracting from common browsers. + # Defaulting to 'chrome' as the most common path. + base_options["cookiesfrombrowser"] = "chrome" if opts.no_playlist: base_options["noplaylist"] = True