Descargar vídeos de YoutTube con Python y Pafy

Índice

    Introducción:

    YouTube es una plataforma que nos permite disfrutar de vídeos informativos, películas, música y mucho, mucho más.

    Siempre que escuchamos una canción queremos descargarla, si vemos un vídeo también queremos descargarlo, de esta manera podríamos verlos desde donde queramos sin necesidad de una conexión a Internet.

    Hoy te enseñare a descargar vídeos y audios de el sitio web conocido como YoutTube, esto lo lograremos haciendo uso de una librería llamada Pafy, si aun no tienes la librería Pafy, puedes descargarla ingresando al siguiente enlace: Librería Pafy.


    Resultado de imagen para youtube

    Usando Pafy:

    Pafy una biblioteca de Python para descargar contenido de YouTube y recuperar metadatos.

    Antes de descargar contenido, usaremos a Pafy para obtener información de un vídeo especifico.

    A continuación te mostrare un ejemplo para obtener el titulo de un vídeo.



    import pafy
    
    url_video = "https://www.youtube.com/watch?v=JkK8g6FMEXE"
    
    video = pafy.new(url_video)
    
    print(video.title)
    
    


    Analicemos el código: Lo primero que hacemos es importar a Pafy, luego creamos una variable con el identificar url_video con el link del video de tu elección, creamos una variable llamada video la cual instanciará a pafy.new al cual le pasamos como argumento la variable url_vide. Luego de este procedimiento, usamos la función print para imprimir el titulo del vídeo, el cual conseguimos usando el método title. El resultado debería ser el siguiente:




    Como pueden observar, mi resultado es "Aerosmith - I Don't Want to Miss a Thing", el cual es vídeo que he seleccionado para esta prueba.


    Si quieres ver la descripción del vídeo en vez del titulo, el procedimiento es el mismo, pero en vez de usar el método title, usamos el método "description".





    Como pueden observar, el resultado es el deseado.


    ¿Que otras cosas podemos lograr con Pafy?


    A continuación les mostrare otros métodos con los que podemos obtener más datos de un vídeo de Youtube:

     
    import pafy
    
    url_video = "https://www.youtube.com/watch?v=JkK8g6FMEXE"
    
    video = pafy.new(url_video)
    
    video.viewcount #Este método nos devuelve el numero de visitas del vídeo
    
    video.category #Este método nos devuelve el tipo de categoría del vídeo
    
    video.author #Este método nos devuelve el nombre del canal que subió el vídeo
    
    video.duration #Este método nos devuelve la duración del vídeo
    
    video.published #Este método nos devuelve la fecha en la que fue publicado el vídeo
    
    video.likes #Este método nos devuelve el numero de likes del vídeo
    
    vdieo.dislikes #Este método nos devuelve el numero de dislike del vídeo
    
    video.keywords #Este método nos devuelve una lista con todas las etiquetas del vídeo
    
    video.thumb #Este método nos devuelve una url la cual es la miniatura del vídeo
    
    video.videoid #Este método nos devuelve el identificador del vídeo
    
    

    Estos son algunos de los métodos que Pafy nos proporciona.




    Descargando Vídeos y Música de YouTube.

    Llegamos a la parte que todos estaban esperando, usaremos algunos métodos para descargar vídeo y audios de los vídeo que queramos.


    Empecemos por descargar nuestro primer vídeo.


    import pafy
    
    video = pafy.new("https://www.youtube.com/watch?v=JkK8g6FMEXE")
    
    best = video.getbest(preftype="mp4")
    
    best.download()
    
    



    Como pueden observar, estamos repitiendo el mismo procedimiento de antes, pero ahora estamos haciendo uso del método getbest, el cual nos devuelve la mejor resolución del vídeo, le pasamos como argumento a preftype con el formato del vídeo en este caso sera mp4. Luego usamos el método download para empezar la descarga, luego de este veremos el progresa de la descarga, el resultado debería quedarnos algo así:


    Luego de que termine el proceso, el archivo con formato mp4 debería estar en el directorio actual del programa:


    Ahora veamos un ejemplo de como seria el procedimiento para descargar el audio de este video:

    import pafy
    
    video = pafy.new("https://www.youtube.com/watch?v=JkK8g6FMEXE")
    
    bestaudio = video.getbestaudio()
    
    bestaudio.download()
    
    


    Como pueden observar el procedimiento es el mismo, pero con el uso del método getbestaudio. Y nos volvería a mostrar el progreso de la descarga:


    Bueno, eso a sido todo de parte por hoy, esta librería es muy interesante y de mucha utilidad.


    Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes.

    1. Anónimo dice:

      Gracias!

      1. Luis Salcedo dice:

        A la orden 😀

    2. Unknown dice:

      No Puedo Instalar,Nesecito Su Ayuda.

      1. Luis Salcedo dice:

        En que puedo ayudarle?

    3. Unknown dice:

      hola me pasa lo mismo WARNING:root:pafy: youtube-dl not found; falling back to internal backend. This is not as well maintained as the youtube-dl backend. To hide this message, set the environmental variable PAFY_BACKEND to "internal".
      Traceback (most recent call last):

      1. Luis Salcedo dice:

        Ese mensaje no es de error, la cuestión es que no instalamos youtube-dl, como lo indica el mensaje, podríamos esconder el mensaje cambiando la variable PAFY_BACKEND a "internal", pero puedes usar la librería normalmente.

    4. Anónimo dice:

      Y como se hace?

    5. Anónimo dice:

      Como se puede cancelar la descarga?

    6. Anónimo dice:

      Se puede elegir la carpeta donde guardar?

      1. Luis Salcedo dice:

        Sí, fue una de las partes que me falto explicar, al método download puedes pasarle el argumento filepath asignándole la ruta en la cual quieres que el contenido se descargue.

        Ejemplo: best.download(filepath="/tmp/")

      2. Anónimo dice:

        Muy bien Gracias, me gusta mucho el blog. ��

    7. hugo dice:

      hola buenas tardes, magnifico blog, yo me hice un script basandome en este para descargar video de youtube, y los audios mp3, con una interfaz grafica de wxpython y lo compile con pyinstaller para crear el ejecutable y le añadi otras opciones, pero todo partiendo de este maravilloso blog.

      1. Luis Salcedo dice:

        Excelente, es bueno saber que ayudamos a otros a crear sus proyectos, Saludos 😀

    8. Anónimo dice:

      disculpa, lo que pasa es que cuando descargo el audio se descarga en (webm) y no se me reproduce, como puedo hacer que descargue en mp3

    9. Bhelma dice:

      Buenos días.
      Conozco este blog desde hace muy poquito, y la verdad, que me está ayudando bastante para crear un bot para telegram.
      Lo que quería comentar, o vaya casualidad, es que el vídeo que utilice de ejemplo para descargar el audio, me funcionó a la primera, pero hay amigos...pero a partir del segundo, sólo me sale errores y no descarga el audio.
      Se puede tener una idea de por que?

      Gracias por el blog.

      1. Bhelma dice:

        Me auto-contesto.
        Como soy culo inquieto, hasta que no he encontrado la solucion no he parado.
        Aunque es verdad que sin el modulo youtube-dl funciona, me he dado cuenta que dependiendo de videos no es asi.
        Hay algunos videos, que por alguna razon, sin ese modulo no los reconoce y devuelve un error de que esa url no existe, asi que decidi instalar el modulo..y a funcionar correctamente.

        Pues nada, solo era eso, comentarlo por si alguno mas le habia pasado.

        Saludos a todos.

      2. PythonDiario dice:

        Gracias Bhellma por el aporte 😉

        Saludos

    10. Anónimo dice:

      y si un id de youtube que por error se digita mal, pafy va en error, como puedo verificar o saltar este paso y asi cuando digito mal el id, no me muestre el error y continue con el codigo.

    11. Tecnoconocimiento Accesible dice:

      hola mmuy bueno el tuto una pregunta.
      se puede descargar en formato mp3,
      y cómo se haría
      ponen como que se pone una lista entre corchetes, pero no se entiende ni sale porque no definen la lista, no me sale el código, si pudieras poner un ejeemplo bien explicado te lo agradeceríamos mas de uno, de todos modos igualmente mil gracias.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.