Spaces:
Running
Running
File size: 3,005 Bytes
e93a448 a14d455 e93a448 cc3d383 a14d455 cc3d383 a14d455 cc3d383 114747f a14d455 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
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") |