18. Búsqueda en Youtube

 

18. Búsqueda en YouTube con Python: Tutorial para Principiantes

🎵 Introducción: Tu asistente musical y de videos

¡Excelente noticia! Ahora que tu asistente puede buscar en Google, vamos a darle superpoderes musicales y de video. Imagina poder decir "ponme música" y que automáticamente se abra YouTube con tu canción favorita. ¡Es como tener un DJ personal en tu computadora!

Analoǵía del Control Remoto:

  • Google = Buscar información (como un buscador web)

  • YouTube = Ver videos y escuchar música (como un control remoto de TV)


🎯 ¿Qué vamos a lograr hoy?

Vamos a enseñarle a tu asistente a:

  1. Buscar videos en YouTube

  2. Reproducir música automáticamente

  3. Controlar todo con tu voz

¡La magia ya está en pywhatkit! La misma librería que usamos para Google también funciona para YouTube.


🔍 Comparación rápida: Google vs YouTube

Acción

Google

YouTube

Buscar información

pywhatkit.search()

pywhatkit.playonyt()

Resultado

Páginas web

Video que se reproduce

Uso típico

Información, noticias

Música, tutoriales, entretenimiento


✍️ Código paso a paso

Paso 1: Copiar y adaptar (¡reutilizar es inteligente!)

python

# Tenemos esta función para Google:

def buscar_google(comando):

    busca = comando.replace('busca en google', '').strip()

    hablar('Comenzando búsqueda...')

    pywhatkit.search(busca)

    hablar('Búsqueda completada')


# Vamos a crear una PARA YouTube:

def buscar_youtube(comando):

    busca = comando.replace('busca en youtube', '').strip()

    hablar('Comenzando búsqueda...')

    pywhatkit.playonyt(busca)  # ¡DIFERENCIA CLAVE!

    hablar('Búsqueda completada')

💡 Consejo para principiantes: Cuando el código es similar, ¡copia y adapta! Es como seguir una receta:

  • Misma base (limpiar comando + hablar + ejecutar)

  • Ingrediente diferente (search vs playonyt)


Paso 2: Entender playonyt()

python

pywhatkit.playonyt("despacito")

Esto hace TRES cosas automáticamente:

  1. Abre YouTube en tu navegador

  2. Busca "despacito"

  3. ¡Y reproduce el primer video!

Es como decirle a un amigo:

  • ❌ "Abre YouTube, escribe despacito, haz clic en buscar, luego en el primer video"

  • ✅ "Pon despacito en YouTube"


Paso 3: El error común y su solución

Problema que menciona el texto:

python

# ERROR: TypeError - función toma 0 argumentos pero se le dio 1

def buscar_youtube():  # ← ¡Falta el parámetro!

    # código...

    

# Cuando llamamos:

buscar_youtube(comando)  # ← Le pasamos algo, pero la función no lo espera

Solución:

python

# CORRECTO: La función DEBE recibir el parámetro

def buscar_youtube(comando):  # ← Ahora sí recibe 'comando'

    busca = comando.replace('busca en youtube', '').strip()

    # resto del código...

📌 Regla de oro: Si vas a usar algo dentro de una función, debes declararlo como parámetro.


Paso 4: Integrar con el asistente principal

python

# En tu loop principal (donde procesas comandos):

if 'busca en youtube' in comando or 'reproduce en youtube' in comando:

    buscar_youtube(comando)

Ejemplos que funcionarán:

  • "busca en youtube tutorial de python"

  • "reproduce en youtube música relajante"

  • "busca en youtube receta de pastel"


🎵 Código completo mejorado

python

# ASISTENTE VIRTUAL - BÚSQUEDA EN YOUTUBE

import pywhatkit

import pyttsx3

import speech_recognition as sr


# Configuración de voz (igual que antes)

engine = pyttsx3.init()

def hablar(texto):

    engine.say(texto)

    engine.runAndWait()


# Función específica para YouTube

def buscar_youtube(comando):

    """

    Busca y reproduce un video en YouTube

    

    Args:

        comando (str): Comando completo del usuario

                      Ejemplo: "busca en youtube despacito"

    """

    

    # OPCIÓN 1: Si dice "busca en youtube"

    if 'busca en youtube' in comando:

        busca = comando.replace('busca en youtube', '').strip()

    

    # OPCIÓN 2: Si dice "reproduce en youtube"  

    elif 'reproduce en youtube' in comando:

        busca = comando.replace('reproduce en youtube', '').strip()

    

    # OPCIÓN 3: Si dice solo "youtube"

    elif 'youtube' in comando and len(comando.split()) > 1:

        busca = comando.replace('youtube', '').strip()

    else:

        hablar("No entendí qué quieres buscar en YouTube")

        return

    

    # Verificar que haya algo para buscar

    if not busca:

        hablar("¿Qué te gustaría ver en YouTube?")

        return

    

    # Ejecutar la búsqueda

    hablar(f"Buscando {busca} en YouTube")

    

    try:

        pywhatkit.playonyt(busca)

        hablar(f"Reproduciendo {busca}")

    except Exception as e:

        hablar("Hubo un error al buscar en YouTube")

        print(f"Error: {e}")


# Función principal del asistente

def run_asistente():

    hablar("Asistente de YouTube activado")

    

    while True:

        # Escuchar comando (tu código de reconocimiento de voz)

        comando = escuchar()  # Tu función para escuchar

        

        if not comando:

            continue

        

        # Detectar comandos de YouTube

        if any(palabra in comando for palabra in 

               ['youtube', 'busca en youtube', 'reproduce en youtube']):

            buscar_youtube(comando)

        

        elif 'salir' in comando:

            hablar("Cerrando asistente de YouTube")

            break


# Diagrama visual del proceso:

"""

🎤 TÚ HABLAS → "busca en youtube canciones 80s"

     ↓

🎧 ASISTENTE ESCUCHA → convierte a texto

     ↓

🧠 PROCESA → detecta "busca en youtube"

     ↓

✂️ LIMPIA → quita "busca en youtube" → queda "canciones 80s"

     ↓

🎵 EJECUTA → pywhatkit.playonyt("canciones 80s")

     ↓

🖥️ RESULTADO → YouTube se abre y reproduce

"""


🚨 Problemas comunes y soluciones

Problema 1: Publicidades (como menciona el texto)

python

# ¡Es normal! YouTube muestra ads antes de algunos videos

# No es error de tu código, es cómo funciona YouTube

Problema 2: No se reproduce automáticamente

  • Verifica que tengas un navegador compatible (Chrome, Firefox)

  • Asegúrate de tener JavaScript habilitado

  • Espera unos segundos, pywhatkit tiene un delay incorporado

Problema 3: Reproduce el video incorrecto

  • YouTube reproduce el primer resultado de búsqueda

  • Para mayor precisión: "busca en youtube Luis Fonsi despacito oficial"


🎮 Ejercicio práctico: Personaliza tu función

Reto 1: Agrega opciones de búsqueda

python

# Puedes agregar estos comandos:

# "música en youtube" → agrega "música" automáticamente

# "video tutorial de" → agrega "tutorial" 


if 'música' in comando and 'youtube' in comando:

    busca = comando.replace('música', '').replace('youtube', '').strip()

    busca = f"{busca} música"  # Agrega "música" al final

Reto 2: Controla el tiempo

python

# `playonyt()` puede recibir un segundo parámetro: tiempo de espera

pywhatkit.playonyt(busca, wait_time=2)  # Espera 2 segundos


📊 Esquema de funciones del asistente

text

ASISTENTE VIRTUAL

├── 🔊 Hablar (pyttsx3)

├── 🎤 Escuchar (speech_recognition)

├── 🔍 Buscar en Google (pywhatkit.search)

├── 🎵 Buscar en YouTube (pywhatkit.playonyt) ← ¡NUEVO!

└── 📚 Buscar en Wikipedia (wikipedia)


✅ Resumen clave

  1. pywhatkit.playonyt() es la función mágica para YouTube

  2. Misma lógica que Google: limpiar comando + ejecutar

  3. Error común: No olvidar el parámetro en la función

  4. ¡Se reproduce automáticamente! No solo busca, sino que reproduce

  5. Publicidades = normal No es error de tu código


🎯 Ideas para expandir tu asistente

  1. Lista de reproducción:

  2. python

if 'pon mi playlist' in comando:

    # Reproduce varios videos seguidos

  1.     videos = ["canción 1", "canción 2", "canción 3"]

  2. Control de volumen:

  3. python

if 'sube volumen' in comando:

  1.     # Código para subir volumen del sistema

  2. Buscar específicamente:

  3. python

if 'tutorial' in comando:

  1.     busca = comando + " tutorial paso a paso"


📝 Cuestionario de repaso

Pregunta 1

¿Qué función de pywhatkit usamos para YouTube?
a) search_yt()
b) youtube_search()
c) playonyt()
d) open_youtube()

Pregunta 2

Si digo "busca en youtube ejercicios de yoga", ¿qué texto se enviará a YouTube?
a) "busca en youtube"
b) "ejercicios de yoga"
c) "youtube ejercicios"
d) "busca youtube ejercicios de yoga"

Pregunta 3

¿Qué hace pywhatkit.playonyt("rock clásico")?
a) Solo busca "rock clásico"
b) Busca y reproduce el primer video
c) Descarga videos de rock
d) Crea una playlist

Pregunta 4

¿Por qué es importante poner (comando) después de def buscar_youtube?
a) Porque se ve mejor
b) Para recibir el texto que dice el usuario
c) Es opcional
d) Para evitar errores de sintaxis

Pregunta 5

Si YouTube muestra una publicidad antes del video, ¿es esto?
a) Un error en tu código
b) Normal, YouTube siempre muestra ads
c) Problema de instalación
d) Error de internet


Respuestas del cuestionario

  1. c) playonyt() - "play on YouTube" (reproducir en YouTube)

  2. b) "ejercicios de yoga" - Se elimina "busca en youtube"

  3. b) Busca y reproduce el primer video - La magia de playonyt()

  4. b) Para recibir el texto que dice el usuario - Sin parámetro, no podemos procesar el comando

  5. b) Normal, YouTube siempre muestra ads - No es problema de tu código, es de YouTube


🎉 ¡Felicidades!

Ahora tu asistente puede:

  • ✅ Buscar información (Google)

  • ✅ Reproducir música y videos (YouTube)

  • ✅ Responder a tu voz

Próximo paso ideal: Agregar control de reproducción (pausar, siguiente, anterior) ¡Sigue practicando



https://www.youtube.com/watch?v=Pj9KbAKpQyk

https://www.youtube.com/watch?v=-0tIy8wWtzE

https://www.youtube.com/watch?v=YqSSId7xfwU

https://www.youtube.com/watch?v=MjK-j7YJ5YI


https://www.youtube.com/watch?v=l2G8-iQYfoA



https://www.youtube.com/watch?v=t-YO0XeHczU


Comentarios

Entradas más populares de este blog

1-7. Transforma tu audio a texto

10. Haz que tu asistente hable

8. NUEVO - Solución si tu micrófono no está captando tu audio