Spaces:
Running
Running
| import tempfile | |
| import browser_cookie3 | |
| from yt_dlp import YoutubeDL | |
| from agents.video_analyzer_agent import env_to_cookies_from_env | |
| 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_content(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 content | |
| except Exception as e: | |
| raise ValueError(f"Error converting cookie file: {str(e)}") | |
| def save_to_env_file(env_content: str, env_file: str = '.env') -> None: | |
| """Save environment variable content to .env file""" | |
| try: | |
| with open(env_file, 'w') as f: | |
| f.write(env_content) | |
| #print(f"Successfully saved to {env_file}") | |
| except Exception as e: | |
| raise ValueError(f"Error saving to env file: {str(e)}") | |
| def content_to_cookies(env_content: str, output_file: str) -> None: | |
| """Convert environment variable content back to cookie file""" | |
| try: | |
| # Replace escaped newlines with actual newlines | |
| cookie_content = env_content.replace('\\n', '\n') | |
| # Write to cookie file | |
| with open(output_file, 'w') as f: | |
| f.write(cookie_content) | |
| except Exception as e: | |
| raise ValueError(f"Error converting to cookie file: {str(e)}") | |
| content_to_cookies(cookies_to_content(export_youtube_cookies_netscape("youtube.com")), "cookies.txt") |