sábado, 5 de abril de 2025

Info Clima - Script de Python (v2)

Versión actualizada del script publicado en esta entrada: Info Clima - Script de Python para ver la información del Servicio Meteorológico Nacional

Esta versión ya no usa la información del SMN dado que el sitio me estaba dando problemas, específicamente con la descarga del archivo zip.

Esta versión se utiliza la API de WeatherApi

captura script

Para el uso del script es necesario crear una cuenta gratuita en el sitio y obtener la API KEY para insertar luego en el código.

captura api key

Dado que sigo continuando mi aprendizaje sobre python y estaba leyendo sobre clases decidí reescribir el código utilizando esté método. Esto responde a una decisión completamente arbitraria aunque sí creo que el resultado es un código más ordenado o "limpio" si se quiere.

Las clases proveen una forma de empaquetar datos y funcionalidad juntos. Al crear una nueva clase, se crea un nuevo tipo de objeto, permitiendo crear nuevas instancias de ese tipo. Cada instancia de clase puede tener atributos adjuntos para mantener su estado. Las instancias de clase también pueden tener métodos (definidos por su clase) para modificar su estado. Fuente

Por el momento el script anterior será reemplazado por este, si en algún momento logro hacer funcionar el script anterior subiré ambas versiones al repo.

Nota: me olvidé de aclarar que la funcionalidad del script es exactamente igual, por un tema de comodidad si no se ingresa nada en el prompt obtiene los datos para 'Buenos Aires'. En este caso no hay que descargar un archivo ni descomprimirlo, simplemente solicitar los datos mediante la API. Lo cual introduce el uso de la librería json para convertir los datos recibidos en un diccionario.

Link al repo de GitHub: https://github.com/mcattani/script_clima

Espero les resulte de interés. Si es así los invito a dejar un comentario y si tienen ganas pueden invitarme un cafecito!:

Invitame un café en cafecito.app

Weather data by WeatherAPI.com

lunes, 3 de febrero de 2025

CineBase (Python + Sqlite)

En esta ocasión y continuando con el aprendizaje de Python les quería compartir una aplicación cuyo objetivo es aprender a interactuar con una base de datos sqlite.

Ya he utilizado este tipo de base de datos en otros proyectos:

CineBase como he llamado a este script es un sistema de gestión de base de datos de películas. Encontré una muy amplia (no sé que tan precisa es, no es el punto igualmente) en Kaggle (sin atribución).

menu_principal

Un poco la intención de este script es la de:

  • Familiarizarme con el uso y manejo de sqlite en python.
  • Modularización y organización del código.
  • Uso de 'gestores de contexto' para el manejo de la base de datos.
  • Uso de librerías para el manejo de input del usuario, validación de entradas y aspectos estéticos.

Mientras estoy escribiendo esto también estoy leyendo sobre docstrings y type annotations por lo que también habrá algo de eso en el código.

Según Google (respuesta de la IA):

"Los docstrings en Python son cadenas de texto que se utilizan para documentar funciones, clases, módulos o métodos. Se escriben entre comillas triples y se colocan al principio del bloque de código. Los docstrings son una herramienta que ayuda a los programadores a entender el código y a otros programadores que quieran usarlo..."

"Las anotaciones de tipo en Python son una notación opcional que indica el tipo de los parámetros y resultados de una función. También se les conoce como sugerencias de tipo o type signatures..."

Cómo se puede observar en la captura arriba, el menú principal consta de varias opciones:

  • Buscar películas por título, fecha de estreno, calificación y director.
  • Buscar sinopsis de la películas
  • Buscar directores
  • Agregar y borrar películas y directores.

busqueda_pelicula

La primera versión de este script resultaba "medio plana" (aburrida) por lo que decidí hacer uso de algunas librerías para hacer el menú más amigable, agregar un poco de "ascii art" y mostrar los resultados en un formato más o menos amigable.

muestra_sinopsis

Las tres librerías utilizadas:

La instalación de las mismas es muy sencilla:

pip install -r requirements.txt

Intentando (palabra clave) mantener el código lo más prolijo y legible verán que, además de la base de datos, el código está escrito en tres bloques:

  1. main.py: contiene la lógica principal del programa.
  2. interfaz_usuario.py: módulo que se encarga de solicitar los inputs al usuario y validar los mismos.
  3. interfaz_sql.py: módulo que maneja la lógica de búsqueda e ingreso de datos en la base.

Obviamente no pretendo que este programa sea un "ejemplo a seguir" en términos de calidad programística, quienes estén leyendo esto y estén versados en Python seguramente encontrarán un montón de cosas a corregir, criticar, etc. (tampoco creo que sea un horror, estoy bastante satisfecho).

La idea es ayudar a quienes como yo estamos aprendiendo y quieran experimentar con el uso de base de datos, utilizar librerías para mejorar la apariencia del código, etc.

Como siempre el código está bastante comentado.

Les dejo el link al repo en GitHub: https://github.com/mcattani/cinebase

Espero les resulte de interés. Si es así los invito a dejar un comentario y si tienen ganas pueden invitarme un cafecito!

Invitame un café en cafecito.app

Saludos!