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