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")))