Docfile commited on
Commit
8170733
·
verified ·
1 Parent(s): bea9f70

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -5
app.py CHANGED
@@ -127,13 +127,19 @@ def download_youtube_video(url):
127
  with tempfile.TemporaryDirectory() as temp_dir:
128
  output_template = os.path.join(temp_dir, '%(title)s.%(ext)s')
129
 
130
- # Using yt-dlp instead of youtube-dl
131
  command = [
132
- 'yt-dlp', # Changed from youtube-dl to yt-dlp
133
  '--format', 'best[filesize<50M]',
134
  '--quiet',
135
  '--no-warnings',
136
  '--output', output_template,
 
 
 
 
 
 
137
  url
138
  ]
139
 
@@ -156,8 +162,37 @@ def download_youtube_video(url):
156
  stdout, stderr = process.communicate()
157
 
158
  if process.returncode != 0:
159
- logger.error(f"Erreur yt-dlp: {stderr}")
160
- raise Exception(f"Erreur yt-dlp: {stderr}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
 
162
  downloaded_files = os.listdir(temp_dir)
163
  if not downloaded_files:
@@ -177,7 +212,6 @@ def download_youtube_video(url):
177
  logger.error(f"Erreur lors du téléchargement de la vidéo: {e}")
178
  return None
179
 
180
-
181
  def telecharger_pdf(url):
182
  """Télécharge un PDF et retourne le chemin du fichier"""
183
  try:
 
127
  with tempfile.TemporaryDirectory() as temp_dir:
128
  output_template = os.path.join(temp_dir, '%(title)s.%(ext)s')
129
 
130
+ # Enhanced configuration for yt-dlp
131
  command = [
132
+ 'yt-dlp',
133
  '--format', 'best[filesize<50M]',
134
  '--quiet',
135
  '--no-warnings',
136
  '--output', output_template,
137
+ '--cookies-from-browser', 'chrome', # Use Chrome cookies to appear as logged-in user
138
+ '--user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', # Modern user agent
139
+ '--sleep-interval', '2', # Add small delay between requests
140
+ '--max-sleep-interval', '5',
141
+ '--socket-timeout', '10',
142
+ '--retries', '3',
143
  url
144
  ]
145
 
 
162
  stdout, stderr = process.communicate()
163
 
164
  if process.returncode != 0:
165
+ if "Sign in to confirm you're not a bot" in stderr:
166
+ logger.error("Détection anti-bot YouTube - tentative avec configuration alternative")
167
+ # Fallback approach with different configuration
168
+ command = [
169
+ 'yt-dlp',
170
+ '--format', 'best[filesize<50M]',
171
+ '--quiet',
172
+ '--no-warnings',
173
+ '--output', output_template,
174
+ '--cookies', 'youtube.com_cookies.txt', # Use cookies file if available
175
+ '--user-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0', # Alternative user agent
176
+ '--sleep-interval', '3',
177
+ '--max-sleep-interval', '6',
178
+ '--socket-timeout', '15',
179
+ '--retries', '5',
180
+ '--no-check-certificates', # Skip HTTPS certificate validation
181
+ url
182
+ ]
183
+ process = subprocess.Popen(
184
+ command,
185
+ stdout=subprocess.PIPE,
186
+ stderr=subprocess.PIPE,
187
+ universal_newlines=True
188
+ )
189
+ stdout, stderr = process.communicate()
190
+ if process.returncode != 0:
191
+ logger.error(f"Erreur yt-dlp: {stderr}")
192
+ raise Exception(f"Erreur yt-dlp: {stderr}")
193
+ else:
194
+ logger.error(f"Erreur yt-dlp: {stderr}")
195
+ raise Exception(f"Erreur yt-dlp: {stderr}")
196
 
197
  downloaded_files = os.listdir(temp_dir)
198
  if not downloaded_files:
 
212
  logger.error(f"Erreur lors du téléchargement de la vidéo: {e}")
213
  return None
214
 
 
215
  def telecharger_pdf(url):
216
  """Télécharge un PDF et retourne le chemin du fichier"""
217
  try: