Explorando la inteligencia artificial y OpenAI con Python

0 of 25 lessons complete (0%)

Bibliotecas, YouTube, Extracción de audio y reconocimiento de voz con IA.

Descargando video de YouTube

You don’t have access to this lesson

Please register or sign in to access the course content.

En clases anteriores, vimos la biblioteca “pytube”, la cual nos ayudaría a descargar videos de YouTube. Desafortunadamente, en este momento, cuenta con un error y no es posible implementarla. Al final del curso, les dejaré una versión del código con esta librería para que puedan ver la diferencia, y si ya funciona para el momento en que estén viendo este curso, puedan utilizarla.

Para continuar con el curso, vamos a implementar la biblioteca “yt_dlp”, que de igual forma nos permite descargar videos de YouTube. Para instalarla, utilizamos el siguiente comando:

pip3 install yt_dlp

Ahora ya podemos continuar con nuestro código…

En esta clase, vamos a crear la función que nos ayudará a descargar el video y nos devolverá el nombre del mismo para poder utilizar esa información más adelante. Para crear la función, colocamos el siguiente código:

def descargar_youtube(url):

Una vez que creamos la función, lo primero que vamos a hacer es solicitarle al usuario un nuevo nombre para el video descargado y la carpeta que se va a crear. Esto es necesario, ya que la biblioteca “yt_dlp” no tiene una función que limpie los nombres de los títulos de los videos. Si estos incluyen caracteres especiales, habrá problemas con nuestro programa.

Para hacer la solicitud al usuario, agregamos la siguiente línea:

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

Una vez que ya tenemos el nuevo título, procedemos a configurar las opciones de descarga para “yt_dlp”. Esta biblioteca cuenta con varias opciones que puedes leer en su documentación. Nosotros, para este programa, vamos a utilizar solo 4 opciones: “format” para la calidad del video, “outtmpl” para el nombre que tendrá el nuevo video y “noplaylist” para que no descargue listas de reproducción completas, sino solo el video entregado. También se agrega ‘download’: False para no descargar el video de forma automática junto con su información, ya que no la vamos a necesitar.

Procedemos a crear un diccionario con el nombre de “ydl_opts”:

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

    ydl_opts = {
        'format': 'best',
        'outtmpl': f'{title}.%(ext)s',
        'noplaylist': True,
        'download': False
    }

Después, creamos un contexto para la descarga del video, lo que significa que estamos configurando ciertas opciones (como el formato de archivo y el nombre del archivo de salida) para que la descarga se realice de manera adecuada.

Luego, le decimos al objeto “ydl” que descargue el video de la URL proporcionada. Todo esto se realiza en un bloque “with”, que asegura que los recursos utilizados por la librería sean liberados correctamente al finalizar la descarga del video.

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

    ydl_opts = {
        'format': 'best',
        'outtmpl': f'{title}.%(ext)s',
        'noplaylist': True,
        'download': False


    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

Finalmente, a la variable “title” le agregamos el nombre de la extensión y retornamos el valor del título. Así quedaría la función completa:

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

    ydl_opts = {
        'format': 'best',
        'outtmpl': f'{title}.%(ext)s',
        'noplaylist': True,
        'download': False 
    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])  

    title = title + f".mp4"
    return title

Todo nuestro código que llevamos hasta el momento se debería de ver así:

import openai
import sys
import os
import whisper
import yt_dlp

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

    ydl_opts = {
        'format': 'best',
        'outtmpl': f'{title}.%(ext)s',
        'noplaylist': True,
        'download': False 
    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])  
       
    title = title + f".mp4"
    return title

print("¿Qué tipo de video desea analizar?")
print("1. Video descargado")
print("2. Video de YouTube")
opcion = int(input("Elija una opción: "))

if opcion == 1:
    archivo_video = input("Ingrese el nombre del video: ")
elif opcion == 2:
    url = input("Ingrese la URL del video de YouTube: ")
    archivo_video = descargar_youtube(url)
else:
    print("Opción no válida.")
    sys.exit()

Nota del maestro: Recuerda que este curso es gratuito y no cuenta con soporte. Si tienes problemas o dudas, puedes escribirme en Twitter haciendo clic aquí y esperar a que tenga un tiempo libre para poder contestarte. También puedes considerar tomar el curso profesional en nuestra plataforma de Azul School, que incluye soporte prioritario para todos nuestros cursos y muchos más beneficios. Haz clic aquí para comprar tu membresía anual u obtener más información al respecto.