Delanoe Pirard commited on
Commit
cc3d383
·
1 Parent(s): e1b7852
Files changed (3) hide show
  1. agents/video_analyzer_agent.py +37 -3
  2. get_cookie.py +23 -0
  3. yt_cookie.txt +0 -16
agents/video_analyzer_agent.py CHANGED
@@ -22,6 +22,37 @@ from youtube_transcript_api import YouTubeTranscriptApi, TranscriptsDisabled, No
22
  logger = logging.getLogger(__name__)
23
 
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  # ---------------------------------------------------------------------------
26
  # Prompt loader
27
  # ---------------------------------------------------------------------------
@@ -106,17 +137,20 @@ def download_video_and_analyze(video_url: str) -> str:
106
  llm_model_name = os.getenv("VIDEO_ANALYZER_LLM_MODEL", "models/gemini-1.5-pro")
107
  gemini_api_key = os.getenv("GEMINI_API_KEY")
108
 
109
- cookie_txt = "yt_cookie.txt"
110
-
111
  ydl_opts = {
112
  'format': 'best',
113
  'outtmpl': os.path.join("downloaded_videos", 'temp_video.%(ext)s'),
114
  'quiet': True,
115
  'extract_flat': True,
116
  'ignoreerrors': True,
117
- "cookiefile": cookie_txt
118
  }
119
 
 
 
 
 
 
 
120
  with yt_dlp.YoutubeDL(ydl_opts) as ydl_download:
121
  ydl_download.download(video_url)
122
 
 
22
  logger = logging.getLogger(__name__)
23
 
24
 
25
+ def env_to_cookies(env_content: str, output_file: str) -> None:
26
+ """Convert environment variable content back to cookie file"""
27
+ try:
28
+ # Extract content from env format
29
+ if '="' not in env_content:
30
+ raise ValueError("Invalid env content format")
31
+
32
+ content = env_content.split('="', 1)[1].strip('"')
33
+
34
+ # Replace escaped newlines with actual newlines
35
+ cookie_content = content.replace('\\n', '\n')
36
+
37
+ # Write to cookie file
38
+ with open(output_file, 'w') as f:
39
+ f.write(cookie_content)
40
+
41
+ except Exception as e:
42
+ raise ValueError(f"Error converting to cookie file: {str(e)}")
43
+
44
+ def env_to_cookies_from_env(output_file: str) -> None:
45
+ """Convert environment variable from .env file to cookie file"""
46
+ try:
47
+ env_content = os.getenv('YT_COOKIE', "")
48
+ # print(f"Printing env content: \n{env_content}")
49
+ if not env_content:
50
+ raise ValueError("YT_COOKIE not found in .env file")
51
+
52
+ env_to_cookies(f'YT_COOKIE="{env_content}"', output_file)
53
+ except Exception as e:
54
+ raise ValueError(f"Error converting to cookie file: {str(e)}")
55
+
56
  # ---------------------------------------------------------------------------
57
  # Prompt loader
58
  # ---------------------------------------------------------------------------
 
137
  llm_model_name = os.getenv("VIDEO_ANALYZER_LLM_MODEL", "models/gemini-1.5-pro")
138
  gemini_api_key = os.getenv("GEMINI_API_KEY")
139
 
 
 
140
  ydl_opts = {
141
  'format': 'best',
142
  'outtmpl': os.path.join("downloaded_videos", 'temp_video.%(ext)s'),
143
  'quiet': True,
144
  'extract_flat': True,
145
  'ignoreerrors': True,
 
146
  }
147
 
148
+ cookiefile = "cookies.txt"
149
+ env_to_cookies_from_env(cookiefile)
150
+
151
+ # Add cookies
152
+ ydl_opts["cookiefile"] = cookiefile # create_temp_cookie_file()
153
+
154
  with yt_dlp.YoutubeDL(ydl_opts) as ydl_download:
155
  ydl_download.download(video_url)
156
 
get_cookie.py CHANGED
@@ -34,3 +34,26 @@ def export_youtube_cookies_netscape(domain: str = "youtube.com") -> str:
34
 
35
  tmp.flush()
36
  return tmp.name
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  tmp.flush()
36
  return tmp.name
37
+
38
+
39
+ def cookies_to_env(cookie_file_path: str) -> str:
40
+ """Convert cookie file content to environment variable format"""
41
+ try:
42
+ with open(cookie_file_path, 'r') as f:
43
+ lines = f.readlines()
44
+
45
+ # Keep header comments
46
+ header = [line.strip() for line in lines if line.startswith('#')]
47
+ # Get cookie content (non-comment lines)
48
+ cookies = [line.strip() for line in lines if line.strip() and not line.startswith('#')]
49
+
50
+ # Join with escaped newlines
51
+ content = '\\n'.join(header + [''] + cookies) # Empty line after headers
52
+
53
+ # Create env file content
54
+ return f'FIREFOX_COOKIES="{content}"'
55
+
56
+ except Exception as e:
57
+ raise ValueError(f"Error converting cookie file: {str(e)}")
58
+
59
+ print(cookies_to_env(export_youtube_cookies_netscape("youtube.com")))
yt_cookie.txt DELETED
@@ -1,16 +0,0 @@
1
- # Netscape HTTP Cookie File
2
- # This file is generated by yt-dlp. Do not edit.
3
-
4
- .youtube.com TRUE / TRUE 1761617545 __Secure-ROLLOUT_TOKEN CK2CtoGE9_qCKBDVmd6PqaqLAxjs7cKEmYGNAw%3D%3D
5
- .youtube.com TRUE / TRUE 1761622693 VISITOR_INFO1_LIVE XJWWeg-61Jo
6
- .youtube.com TRUE / TRUE 1780502573 __Secure-3PAPISID Es8lNi2tKH_w6xhk/A5yqk-H0g0K329X1o
7
- .youtube.com TRUE / TRUE 1780502573 __Secure-3PSID g.a000wQiyYVADhJ0IDxSDoFRi6cUtMUs77vKiv67cKlhfBRyt8TWh6wP59ja7Ccu2lEPStG0E9gACgYKAT0SARASFQHGX2MirUvQtL-jYTLLnMocXq-eVxoVAUF8yKq2SkbS4FUiTUqswnomlXXS0076
8
- .youtube.com TRUE / TRUE 1761622693 VISITOR_PRIVACY_METADATA CgJCRRIhEh0SGwsMDg8QERITFBUWFxgZGhscHR4fICEiIyQlJiBt
9
- .youtube.com TRUE / FALSE 0 PREF f4=4000000&tz=UTC&f7=100&f6=40000400&f5=30000&hl=en
10
- .youtube.com TRUE / TRUE 1777602578 __Secure-1PSIDTS sidts-CjIBjplskKsM_03lNIkS3RrNBUeXvyspivYPoOliq4TT_dcTTR60_KSnwv-tWi7MPFIArRAA
11
- .youtube.com TRUE / TRUE 1777602578 __Secure-3PSIDTS sidts-CjIBjplskKsM_03lNIkS3RrNBUeXvyspivYPoOliq4TT_dcTTR60_KSnwv-tWi7MPFIArRAA
12
- .youtube.com TRUE / TRUE 1777602578 __Secure-3PSIDCC AKEyXzWAno5sygvBmiCVOYca7OcomSey2MkLYLei77boI7N8znStQNIMPKLzIesnRhDOs_tFdC4T
13
- .youtube.com TRUE / TRUE 0 SOCS CAI
14
- .youtube.com TRUE / TRUE 1746072493 GPS 1
15
- .youtube.com TRUE / TRUE 1809142693 __Secure-YT_TVFAS t=483201&s=2
16
- .youtube.com TRUE / TRUE 1761622693 DEVICE_INFO ChxOelE1T1RNeE5qVXlOREF5TVRVeE1ERTJOdz09EKXZy8AGGKXZy8AG