Spaces:
Sleeping
Sleeping
File size: 2,104 Bytes
e93a448 cc3d383 |
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 |
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"))) |