Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
#
|
131 |
command = [
|
132 |
-
'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 |
-
|
160 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
|