VideoDownloader es un programa de descarga de videos desarrollado en base a la biblioteca Python yt-dlp
.
yt-dlp es un descargador de audio/vídeo de línea de comandos rico en funciones que admite miles de sitios web. Este proyecto es una bifurcación de youtube-dl basada en el ahora desaparecido youtube-dlc.
yt-dlp básicamente es compatible con todos los sitios web de videos comunes. Es un programa de línea de comandos con funciones muy poderosas y parámetros ricos. Este proyecto está desarrollado en base a la biblioteca Python de yt-dlp (yt_dlp). Utiliza la biblioteca tkinter para crear una aplicación GUI para la descarga de videos, lo que elimina la necesidad de ingresar comandos largos en la línea de comandos y le brinda una experiencia de descarga sencilla. .
El entorno de Windows se usa de forma predeterminada, yo uso pycharm+Anaconda:
pitón>=3.8
ffmpeg se usa para fusionar audio y video automáticamente después de la descarga. Tenga en cuenta que es el archivo ejecutable binario de ffmpeg, no la biblioteca de Python. Recuerde agregarlo a la variable de entorno, como: D:ffmpegbin
(1) Clonar este proyecto
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Cree un nuevo entorno virtual conda para el proyecto, ejemplo:
conda crear -n descarga de video python = 3.12
(3) Utilice pip para instalar la biblioteca yt_dlp:
conda activar descarga de video instalación de pip yt-dlp
En Linux, tome Ubuntu24.04 como ejemplo, use vim para editar, entorno virtual python venv (también puede usar conda):
(1) Clonar el proyecto localmente
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) Instalar Python Venv
apto para instalar python3.12-venv
(3) Crear un entorno virtual
descargador python3 -m venv
(4) Activar el entorno virtual
descargador de fuente/bin/activar
(5) Instalar bibliotecas relacionadas
instalación de pip yt-dlp sudo apto instalar python3-tk pip install Prettytable# Para empaquetar, use pip install pyinstaller
(6) Otorgar permisos ejecutables a main.py
sudo chmod 775 principal.py
(7) Ejecución (tenga en cuenta la ruta)
python3 principal.py
Posibles modificaciones: Si utiliza para obtener archivos cookies desde el navegador, es posible que deba modificar la ruta y es posible que deba modificar la ubicación de almacenamiento predeterminada.
Ventanas:
Instale la biblioteca pyinstaller:
pip instalar pyinstaller
Ejemplo de comando de empaquetado, preste atención a cada ruta. El siguiente código se ejecuta en el directorio donde se encuentra main.py:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Descargador main.py
Ubuntu:
Un ejemplo sencillo:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
MacOS:
Agregar procesamiento y descarga de listas de videos;
Realice múltiples tareas de descarga al mismo tiempo;
Admite más parámetros personalizados;
...
No existe un manual de referencia especial para yt_dlp en pypi. Los parámetros disponibles del programa de línea de comando yt-dlp están escritos tanto en github como en pypi, pero puede leer la implementación específica de yt_dlp: YoutubeDL.py
para obtener los parámetros y significados disponibles. .
Los siguientes son principalmente los parámetros admitidos por yt_dlp.YoutubeDL(download_opts)
.
Los objetos YoutubeDL aceptan muchos parámetros para no saturar el constructor del objeto con argumentos, en su lugar recibe un diccionario de opciones. Estas opciones están disponibles a través del atributo params para que las utilicen los InfoExtractors. se le agregan, por lo que se trata de un "registro mutuo". Opciones disponibles: nombre de usuario: nombre de usuario para fines de autenticación. contraseña: contraseña para fines de autenticación. contraseña de video: contraseña para fines de autenticación. acceder a un video.ap_mso: Identificador de operador de sistemas múltiples de Adobe Pass.ap_username: Nombre de usuario de cuenta de operador de sistemas múltiples.ap_password: Contraseña de cuenta de operador de sistemas múltiples.usenetrc: Utilice netrc para la autenticación en su lugar.netrc_location: Ubicación del archivo netrc de forma predeterminada. ~/.netrc.netrc_cmd: use un comando de shell para obtener credenciales detallado: imprima información adicional en stdout.quiet: no imprima mensajes en stdout.no_warnings: No imprima nada para advertencias.forceprint: un dictado con claves CUANDO se asigna a una lista de plantillas para imprimir en la salida estándar. Las claves permitidas son video o cualquiera de los elementos en utils.POSTPROCESS_WHEN. Por compatibilidad, también se acepta una lista única print_to_file. : Un dict con claves CUANDO (igual que forceprint) asignado a una lista de tuplas con (plantilla, nombre de archivo)forcejson: Forzar la impresión de info_dict como JSON.dump_single_json: fuerza la impresión del info_dict de toda la lista de reproducción (o video) como una sola línea JSON.force_write_download_archive: fuerza la escritura del archivo de descarga independientemente de 'skip_download' o 'simulate'.simulate: no descargue los archivos de video si no está configurado (. o Ninguno), simula solo si se utiliza listsubtitles, listformats o list_thumbnails: código de formato de vídeo, consulte "FORMATO". SELECTION" para obtener más detalles. También puede pasar una función. La función toma 'ctx' como argumento y devuelve los formatos para descargar. Consulte "build_format_selector" para obtener una implementación.allow_unplayable_formats: permite extraer y descargar formatos que no se pueden reproducir.ignore_no_formats_error: ignorar "No "Error de formatos de video". Útil para extraer metadatos incluso si el video no está realmente disponible para descargar (experimental)format_sort: A lista de campos por los cuales ordenar los formatos de video. Consulte "Formatos de clasificación" para obtener más detalles.format_sort_force: fuerce el formato_sort dado; consulte "Formatos de clasificación" para obtener más detalles.prefer_free_formats: si se prefieren los formatos de video con contenedores gratuitos a los que no lo son. los de la misma calidad.allow_multiple_video_streams: permite fusionar múltiples transmisiones de video en un solo archivoallow_multiple_audio_streams: permite fusionar múltiples transmisiones de audio un solo archivocheck_formats Si se debe probar si los formatos se pueden descargar. Puede ser Verdadero (marque todos), Falso (no marque ninguno). Rutas 'seleccionadas' (verifique los formatos seleccionados), o Ninguna (marque solo si lo solicita el extractor): Diccionario de rutas de salida Las claves permitidas son 'home' 'temp' y las claves de OUTTMPL_TYPES (en utils/_utils.py)outtmpl. : Diccionario de plantillas para nombres de salida. Las claves permitidas son las 'predeterminadas' y las claves de OUTTMPL_TYPES (en utils/_utils.py). con youtube-dl, también se puede usar una sola cadena outtmpl_na_placeholder: marcador de posición para metacampos no disponibles.restrictfilenames: no permite "&" ni espacios en el nombre del archivostrim_file_name: limita la longitud del nombre del archivo (extensión excluida)windowsfilenames: fuerza que los nombres de los archivos sean compatibles con Windowsignoreerrors : No se detiene en errores de descarga/postprocesamiento. Puede ser 'only_download' para ignorar solo los errores de descarga. 'only_download' para CLI, pero Falso para APIskip_playlist_after_errors: Número de fallas permitidas hasta que se omita el resto de la lista de reproducción.allowed_extractors: Lista de expresiones regulares para comparar con los nombres de extractores que están permitidos. Sobrescrituras: Sobrescribe todos los archivos de video y metadatos si es Verdadero, sobrescribe solo los que no sean de video. archivos si ninguno y no sobrescriba ningún archivo si Falseplaylist_items: índices específicos de la lista de reproducción para descargar.playlistronom: descargar elementos de la lista de reproducción en orden aleatorio.lazy_playlist: procesa las entradas de la lista de reproducción a medida que se reciben.matchtitle: descarga solo los títulos coincidentes.rejecttitle: rechaza las descargas de títulos coincidentes.logger: registra mensajes en una instancia de logging.Logger.logtostderr: imprime todo en stderr en lugar de stdout.consoletitle: muestra el progreso en la barra de título de la ventana de la consola.writedescription: escribe la descripción del video en un archivo .descriptionwriteinfojson: escribe la descripción del video en un Archivo .info.jsonclean_infojson: elimine los metadatos internos de infojsongetcomments: extraiga los comentarios del video. Esto no se escribirá en el disco a menos que también se proporcione writeinfojsonwriteannotations: escriba las anotaciones del video en un archivo .annotations.xmlwritethumbnail: escriba la imagen en miniatura en un archivoallow_playlist_files: Si se debe escribir la descripción de las listas de reproducción, infojson, etc. también en el disco cuando se usa 'escribir*' opcioneswrite_all_thumbnails: escribe todos los formatos de miniaturas en archivos writelink: escribe un archivo de acceso directo a Internet, dependiendo de la plataforma actual (.url/.webloc/.desktop)writeurllink: escribe un archivo de acceso directo a Internet para Windows (.url)writewebloclink: escribe un archivo de acceso directo a Internet para macOS (.webloc)writedesktoplink: escribe un archivo de acceso directo a Internet de Linux (.desktop)writesubtitles: escribe los subtítulos del vídeo en un archivowriteautomaticsub: Escriba los subtítulos generados automáticamente en un archivolistsubtitles: enumera todos los subtítulos disponibles para el videosubtitlesformat: el código de formato para los subtítulossubtitleslangs: lista de idiomas de los subtítulos para descargar (puede ser una expresión regular). La lista puede contener "todos" para referirse a todos. los subtítulos disponibles El idioma puede tener el prefijo "-" para excluirlo de los idiomas solicitados, por ejemplo, ['todos', '-live_chat']keepvideo: Mantenga el archivo de video después del procesamiento posterior. daterange: un objeto utils.DateRange, descárguelo solo si upload_date está en el rango.skip_download: omita la descarga real del archivo de videocachedir: ubicación de los archivos de caché en el sistema de archivos. False para deshabilitar el caché del sistema de archivos. .noplaylist: descargue un solo video en lugar de una lista de reproducción si tiene dudas.age_limit: un número entero que representa la edad del usuario en años son los videos inadecuados para la edad determinada. skipped.min_views: un número entero que representa el recuento mínimo de vistas