Skip to content

Instantly share code, notes, and snippets.

@Cariosvertel
Last active September 14, 2023 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cariosvertel/ba93c318fd6f2b2b7bbb9cd65e4a8dfd to your computer and use it in GitHub Desktop.
Save Cariosvertel/ba93c318fd6f2b2b7bbb9cd65e4a8dfd to your computer and use it in GitHub Desktop.

Arreglando bugs efectivamente

Link del video de Arreglando bugs efectivamente

https://youtu.be/0wmldC5Pmxg

Link repositorio youtube_download_python_project.py

https://github.com/jkmenco/youtube_download_python_project
Hola, ¿qué tal? En este vídeo veremos la resolución de errores ebook al momento de programar. ¿Cómo lo haremos? Bueno, vamos a hacerlo de la siguiente forma. Voy a desarrollar algo simple y a medida que me tropiece, le daremos soluciones y así poco a poco hasta finalizar el programa. Comencemos entonces esta odisea explorando esta biblioteca PyTuby. Sirve para descargar vídeos de YouTube utilizando Python. Con esto de base, vamos a trabajar entonces en un programa que descargue vídeos de YouTube. Listo, aquí tenemos por ahora, bueno, empezamos a exportar y aquí tenemos un vídeo el cual quiero descargar. Lo tengo aquí como stream. Veamos la documentación a ver qué es lo que nos dice. Ok, debemos importar la clase de YouTube desde PyTuby, luego dentro de la clase ingresamos la URL del vídeo como stream, ok, y dentro de esta llamada de YouTube seleccionamos la primera transmisión, stream, disponible y se descarga el vídeo. No especifica más aquí así que supongo que la calidad será estándar y se usa el download para descargar. Ok, ok, el resto parece que es lo mismo pero diferentes manipulaciones y bueno, sigamos. Vamos a aviso al estudio. Ok, lo haré de otra forma, seguro que aplicándolo de una forma diferente a la documentación nos surgirán pequeños errores pero la idea es corregir eso en el camino. Vale, entonces crearé mi variable de YouTube para usar mi link más fácilmente y ahora la transmisión a partir del vídeo y como decía la primera transmisión, y ahora descargar. Bueno, ejecutemos a ver qué tal. Ok, tenemos un error, no estoy seguro lo que es ya que tras que soy nuevo con PyTuby no seguí el pie de la letra a la documentación y veamos lo que dice en consola. Vale, me informa que en la línea 7 y el error es de atributo de YouTube. Vale, lo primero seriendo es investigar de esto pero antes que nada me gustaría integrar una capa más de seguridad. Voy a utilizar el try y el accept para capturar todo esto de una mejor forma. Listo, entonces ahora que estoy capturando de una mejor forma el error, veamos cómo nos informa. Vale, aquí me lo resumen más fácil entonces este es el error, un poco más claro. Copiaré esto, lo pegaré en el navegador y bueno, a ver qué me encuentro. Ok, acá me estoy encontrando algo y bueno, según parece, veamos para confirmar. Bueno, según parece, mi error, este de aquí, es que me faltó agregarle el streams antes del first. Vamos a arreglar esto y volvamos al código. Oh, mucho mejor. Listo, ahora sí, veamos qué tal trabaja. Listo, ya lo descargó pero no me gusta ese formato. ¿3GPP? No, no me gusta, lo quiero en mp4. Ok, si volvemos acá a la documentación, parece ser que debo filtrar las transmisiones disponibles del video y seleccionar el formato mp4 y ordenar las resoluciones. Vale, vamos a hacerlo. Veamos qué pasa. Ok, perfecto, ya logró descargar entonces mp4. Pero ahora creo que lo mejor sería controlar la ruta de la descarga, que sea un poco más automático, independiente de dónde se ubique mi programa. Si no mal recuerdo, eso se hacía con la biblioteca OS, creo que era, el módulo de Python con funciones para interactuar con el sistema operativo. Vamos a importarlo, listo, pero vamos a investigar sobre esto. Ok, acá me encuentro algo de cómo obtener mi ruta en Python, ¿cierto? A ver... Vale, acá tengo la fórmula, vamos a integrarla. Pues ya está, ya controlamos, ya estamos controlando la descarga, controlamos la ruta de la descarga, el formato del video. Ok, vamos bien, vamos bien. Vale, pero movamos todo esto a una función para controlar todo esto más fácil. Listo, sigamos, a ver qué más puedo hacer. Ok, me encontré esta biblioteca muy interesante que quiero usar, esta es Whisport de Open, ahí, a ver qué nos dice. Ok, acá nos dice que Whisport es una biblioteca de reconocimiento de voz, multilinguaje, traducción de voz e identificación de idioma. Vale, esto es lo que necesito. Bueno, además de la instalación, ciertamente. Aquí, uso con Python, vale, exporto, cargo modelo y con el modelo utilizo el método de transcribir y ya. Ok, vamos a utilizarlo. Listo, veamos si sale. Creo que algo salió mal, veamos. Ok, vamos a ver. Ok, mucho mejor así. Listo, esto me va a facilitar más para saber qué fue lo que está pasando. Vamos a copiar esto y vamos a gulearlo. A ver, el problema que estoy tratando de resolver es que no puede ejecutar el modelo Whisper para algunos audios. Dice algo relacionado con la decodificación del audio. Ok, es similar a lo mío. A ver qué les responden. Hombre, sí, mira, muy similar. Veamos cuáles son las respuestas. Debe estar seguro de que la ruta del archivo sea válida. A ver, me encontré con el mismo problema y parecía que el archivo de audio tenía un nombre diferente. Utilizaba MP3, pero era WAB. Ok, creo que tengo el punto. La falla al cargar del archivo debe ser que la ruta no es válida o el archivo no es válido. Veamos cómo puedo arreglar esto. Ok, ok, creo que el error sí es mío, claramente. Solo le estoy entregando la ruta, entonces debo separar esto. Bueno, entonces creo que debo obtener el nombre del vídeo y una vez con el nombre puedo mejorar la ruta. Listo, ahora sí está funcionando. Pero bueno, qué molesto ver toda la consola así. Además de que ya sé que está transcribiendo el texto. Vamos a hacer unas mejoras, voy a agregar unos prints para ver mejor todo esto. Listo, y ahora quiero crear un archivo para que almacene todo el texto que estoy transcribiendo. Vale, veamos, eso creo que lo puedo hacer aquí. Quitamos el print y a ver. Ok, vamos a ver qué tal nos va. Los prints están funcionando porque todo me lo está separando más. Veamos qué es esto. Vamos a aguliar esto. Ok, bueno según parece lo que intenté fue pasar un diccionario como argumento de archivo, pero dicha función espera recibir es un string. Ok, vamos. Ok, esto vale, yo estoy entregando mal el contenido de lo que está transcrito. Creo que esto lo puedo controlar mucho mejor si separo todo en funciones individuales para, bueno, así controla mejor cada sección. Vamos a hacer una función para transcribir el audio y otra para escribir todo eso en un archivo. Vale, lo hicimos entonces. Hemos logrado integrar todos los componentes, todos los componentes para crear un programa completo y funcional. Veamos el proceso entonces. Fue, hacemos un recorrido, bueno descubrimos Pytube, hicimos nuestros códigos iniciales, hicimos correcciones para la descarga del video, el manejo de las rutas de las descargas, la creación de una función para la descarga, preparamos todo para integrar whisper y logramos hacer la transcripción del texto y creamos el archivo y bueno hubieron muchísimos tropiezos a medida que íbamos creando todo esto pero fíjense a través de dicho proceso aprendimos a resolver los errores paso a paso desde la descarga del video hasta la transcripción del audio. Recordemos entonces las prácticas esenciales que hemos explorado, la búsqueda en Google para aprovechar la sabiduría colectiva, exploramos problemas similares para encontrar soluciones previas y utilizamos palabras claves genéricas al investigar dichos errores y bueno al seguir estas estrategias hemos superado los obstáculos de manera efectiva y avanzar. Esto sería todo por el momento y aquí hemos arreglado book efectivamente.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment