import tempfile import browser_cookie3 from yt_dlp import YoutubeDL def export_youtube_cookies_netscape(domain: str = "youtube.com") -> str: """ Exporte les cookies du navigateur (Chrome/Firefox) pour le domaine spécifié dans un fichier au format Netscape (standard .txt). Retourne le chemin du fichier temporaire. """ # Récupère les cookies du navigateur # browser_cookie3 supporte 'chrome', 'firefox', 'edge'… # cj = browser_cookie3.brave(domain_name=domain) cj = browser_cookie3.librewolf(domain_name=domain) # Crée un fichier temporaire en mode écriture texte tmp = tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") # Format Netscape : # domain \t include_subdomains \t path \t secure \t expires \t name \t value for cookie in cj: include_sub = "TRUE" if cookie.domain.startswith('.') else "FALSE" secure_flag = "TRUE" if cookie.secure else "FALSE" expires = cookie.expires or 0 line = "\t".join([ cookie.domain, include_sub, cookie.path, secure_flag, str(expires), cookie.name, cookie.value, ]) tmp.write(line + "\n") tmp.flush() return tmp.name def cookies_to_env(cookie_file_path: str) -> str: """Convert cookie file content to environment variable format""" try: with open(cookie_file_path, 'r') as f: lines = f.readlines() # Keep header comments header = [line.strip() for line in lines if line.startswith('#')] # Get cookie content (non-comment lines) cookies = [line.strip() for line in lines if line.strip() and not line.startswith('#')] # Join with escaped newlines content = '\\n'.join(header + [''] + cookies) # Empty line after headers # Create env file content return f'FIREFOX_COOKIES="{content}"' except Exception as e: raise ValueError(f"Error converting cookie file: {str(e)}") print(cookies_to_env(export_youtube_cookies_netscape("youtube.com")))