Pytube: Cómo descargar videos de Youtube con esta herramienta de Python

Introducción

pytube es un paquete de python escrito con el objetivo principal de descargar videos del famoso sitio web de videos Youtube. De acuerdo con la documentación oficial, no existen dependencias de terceros para esta herramienta, en otras palabras, es un paquete independiente que utiliza las bibliotecas estándar de Python.

Instale pytube en su máquina

La instalación de cualquier paquete de python es fácil con la ayuda del administrador de paquetes de python pip. Se muestra en el siguiente comando:

                      pip install pytube
                    

Este comando recopilará el paquete, lo descargará e instalará en su máquina. Una operación exitosa debería imprimir el siguiente resultado en su consola de Linux.

                      Collecting pytube
  Downloading pytube-6.2.2-py2-none-any.whl
Installing collected packages: pytube
Successfully installed pytube-6.2.2
                    

Hacer uso de pytube

Una vez finalizada la instalación, abra una consola de python e importe el paquete pytube usando la declaración de importación, como se muestra en el siguiente bloque de código:

                      import pytube
                    

La clase pitón YouTube representa una sola instancia de una sesión de Youtube, por lo que deberá iniciarla con el siguiente código:

                      yt = pytube.YouTube('https://www.youtube.com/watch?v=xtZOnyYu16U')
                    

Con la generación de la instancia que se le está asignando a la variable yt uno puede obtener fácilmente el nombre del video usando el atributo de nombre de archivo.

                      fn = yt.filename
                    

Como sabrá, para obtener el valor de un objeto en python, simplemente escriba la variable y presione el botón de retorno en su teclado.

                      fn
                    

Luego se imprimirá lo siguiente:

                      u'Stoto - Late Night (Original Mix)'
                    

Se explica por sí mismo. El resultado en el nombre del archivo depende del enlace de video pasado como entrada en el YouTube.__init__ método.

También hay un atributo video_id que analiza la identificación de la URL del video que se pasa en el método __init__.

                      video_id = yt.video_id
                    

La identificación del video se puede imprimir usando una declaración de impresión, como la que se muestra aquí:

                      print(video_id)
                    

A continuación, se mostrará lo siguiente en la consola:

                      'xtZOnyYu16U'
                    

Para obtener una lista de los videos disponibles para descargar, se puede ejecutar el método get_videos y asignarlo a una variable; como en este codigo example:

                      videos = yt.get_videos()
                    

Luego imprima cada video usando un bucle for.

                      for v in videos:
    print(v)
                    

La salida que se mostrará en la consola en mi caso es la siguiente: *Dependiendo de la URL del video que pasó en la instancia, esta salida puede ser diferente*

                      <Video: MPEG-4 Visual (.3gp) - 144p - Simple>
<Video: MPEG-4 Visual (.3gp) - 240p - Simple>
<Video: H.264 (.mp4) - 360p - Baseline>
<Video: H.264 (.mp4) - 720p - High>
<Video: VP8 (.webm) - 360p - N/A>
                    

Hasta ahora, una lista de videos está disponible para nosotros. Averiguar el tipo de cada objeto en esta lista es tan fácil como ejecutar el siguiente código:

                      for v in videos:
    print(type(v))
                    

En la consola se imprimirá lo siguiente informándonos del tipo de objeto del que procede cada uno de los vídeos.

                      <class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
<class 'pytube.models.Video'>
                    

La clase pytube.modelos.Video se puede usar para crear instancias únicas de videos de Youtube con el fin de descargarlos a través del método de descarga.

La primera instancia de video se puede sacar de la lista usando las funciones de indexación del objeto integrado de la lista de Python.

                      first_video = videos[0]
                    

Imprimir el primer video es tan fácil como utilizar este código:

                      print(first_video)
                    

Una instancia de video tiene muchos atributos, como el nombre de archivo, la URL, la extensión, el códec de video, el códec de audio, la tasa de bits de audio, la resolución, etc.

Para acceder a cada atributo, se puede seguir la sintaxis que se muestra a continuación:

                      object.attribute
                    

Para examplepara obtener la extensión del primer video, se puede ejecutar el siguiente código de python.

                      first_video.extension
                    

Ejecutar el comando anterior producirá el siguiente resultado en mi caso.

                      '3gp'
                    

La calidad del video se almacena como una cadena en el resolución atributo de la instancia de Video.

                      quality = first_video.resolution
print(quality)
                    

La calidad del video se va a imprimir.

                      '144p'
                    

Se puede acceder a otros atributos, como la tasa de bits del audio o el video, con el siguiente código.

                      audio_bitrate = first_video.audio_bitrate
video_bitrate = first_video.video_bitrate
print(audio_bitrate)
print(video_bitrate)
                    

Cada instancia de Video tiene un método de descarga que hace que sea muy fácil descargar cualquier video de uno de los sitios más utilizados cuando se trata de contenido de video.

Uno puede descargar fácilmente un video usando el siguiente código:

                      first_video.download('/Users/oltjano/Desktop')
                    

El código anterior va a llamar al descargar en la instancia de Video y descargue el video a la ruta especificada. La ruta es un parámetro requerido para el método de descarga de la instancia de Video para que el programa sepa dónde guardar el archivo.

El directorio de salida de destino en el caso anterior es el siguiente:

                      /Users/oltjano/Desktop
                    

Siéntase libre de especificar cualquier ruta que desee. También se puede sobrescribir un archivo de video configurando el forzar_sobrescribir parámetro a Cierto como se muestra aquí:

                      first_video.download(path="/Users/oltjano/Desktop", force_overwrite=True)
                    

Descarga el video deseado de Youtube

Es posible que desee descargar un video de Youtube con un formato de archivo y una calidad específicos. La herramienta pytube ofrece un método a los usuarios para realizar esta tarea.

Nota : Se recomienda que reinicie la consola de python para que podamos tener un entorno limpio.

Importe el paquete pytube con el siguiente comando:

                      import pytube
                    

Asigne la cadena de enlace del video de Youtube que desea descargar a una variable para que cuando sea necesario hacer múltiples usos sea más fácil realizar la tarea.

                      video_link = 'https://www.youtube.com/watch?v=8ZpVwAeLzm4'
                    

Luego inicie una sesión de Youtube usando el siguiente comando:

                      yt = pytube.YouTube(video_link)
                    

Obtenga la lista de los videos disponibles para descargar usando el siguiente comando:

                      videos = yt.videos
                    

La lista anterior puede brindarle información sobre las instancias de video que se pueden usar para descargar el video a través del método de descarga.

Utilizar el dar t método presente en el pytube.YouTube instancia para filtrar una instancia de video según el formato de archivo especificado y la calidad del video.

                      video = yt.get('mp4', '720p')
                    

Si está disponible, el código anterior devolverá la instancia de Video específica. Si no, entonces se generará un error.

Si no se genera ningún error, el video se puede descargar utilizando el código que se muestra a continuación.

Antes de descargar el video, se requerirá una ruta a la ubicación donde desea que se guarde. Establezca la variable de ruta como se muestra a continuación:

                      path="/Users/Oltjano/Desktop"


                    

Luego descarga el video usando el siguiente comando:

                      video.download(path)
                    

Conclusión

Existen muchas herramientas que pueden ayudar a un usuario de Linux a descargar videos de Youtube a través de la línea de comandos. Algunos son de código abierto, otros no. Con habilidades de codificación de nivel de introducción, uno puede escribir scripts para interactuar con pytube para fines específicos, como descargar varios videos a la vez o descargar una lista de reproducción completa.

¡Pero incluso si no posee tales habilidades, descargar un video con pytube es cuestión de simplemente escribir un solo comando en su consola!

Related Posts