🏷️ Corregir detección de nombres de videos
- Implementar obtención previa del título del video antes de descargar - Usar títulos reales de YouTube como nombres de archivos - Limpiar caracteres especiales para compatibilidad con sistema de archivos - Mantener compatibilidad con UUIDs como fallback - Mejorar experiencia de usuario con nombres descriptivos Antes: archivos con UUID (ej: 16dc1717-25b4-40fb-9069-3a639e331a65.mp3) Ahora: archivos con títulos (ej: Rick Astley - Never Gonna Give You Up.mp3) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
39
app.py
39
app.py
@@ -110,9 +110,46 @@ def download_video(url, download_id, format_type='mp4'):
|
|||||||
# return
|
# return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# Primero obtener información del video para el título
|
||||||
|
info_opts = {
|
||||||
|
'quiet': True,
|
||||||
|
'no_warnings': True,
|
||||||
|
'extract_flat': False,
|
||||||
|
'restrictfilenames': True,
|
||||||
|
'no_check_certificate': True,
|
||||||
|
'socket_timeout': 60,
|
||||||
|
'retries': 5,
|
||||||
|
'ignoreerrors': True,
|
||||||
|
'http_headers': {
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
|
||||||
|
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
|
||||||
|
'Accept-Language': 'en-US,en;q=0.5',
|
||||||
|
'Accept-Encoding': 'gzip, deflate',
|
||||||
|
'DNT': '1',
|
||||||
|
'Connection': 'keep-alive',
|
||||||
|
'Upgrade-Insecure-Requests': '1'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Obtener información del video para usar el título
|
||||||
|
video_title = None
|
||||||
|
try:
|
||||||
|
with yt_dlp.YoutubeDL(info_opts) as ydl:
|
||||||
|
info = ydl.extract_info(url, download=False)
|
||||||
|
video_title = info.get('title', f'video_{download_id}')
|
||||||
|
# Limpiar el título para el sistema de archivos
|
||||||
|
import re
|
||||||
|
video_title = re.sub(r'[<>:"/\\|?*]', '', video_title)
|
||||||
|
video_title = video_title.strip()
|
||||||
|
if not video_title:
|
||||||
|
video_title = f'video_{download_id}'
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error obteniendo título del video: {e}")
|
||||||
|
video_title = f'video_{download_id}'
|
||||||
|
|
||||||
# Estrategia 1: Configuración simple y robusta
|
# Estrategia 1: Configuración simple y robusta
|
||||||
ydl_opts = {
|
ydl_opts = {
|
||||||
'outtmpl': os.path.join(app.config['DOWNLOAD_FOLDER'], f'{download_id}.%(ext)s'),
|
'outtmpl': os.path.join(app.config['DOWNLOAD_FOLDER'], f'{video_title}.%(ext)s'),
|
||||||
'progress_hooks': [lambda d: hook(d, download_id)],
|
'progress_hooks': [lambda d: hook(d, download_id)],
|
||||||
'quiet': True,
|
'quiet': True,
|
||||||
'no_warnings': True,
|
'no_warnings': True,
|
||||||
|
|||||||
Reference in New Issue
Block a user