Skip to content

implementación en Java con Spring Boot que consume la API de OMDB y Gemini para obtener información sobre series.

Notifications You must be signed in to change notification settings

jmikhaelz/OmdbApi-SpringBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OMDB API Spring Boot

Este proyecto es una aplicación en Java usando Spring Boot que te permite buscar información sobre series y películas utilizando la API de OMDB. Además, almacena los resultados en una base de datos PostgreSQL y te permite consultarlos desde una interfaz interactiva en la línea de comandos.

📜 Características

  • Interfaz interactiva en consola (MenuInteractivo.java)
  • Cliente para consumir la API de OMDB (OmdbApiClient.java)
  • Modelos de datos para series, temporadas y episodios
  • Traducción automática de sinopsis usando Gemini API
  • Persistencia de datos con PostgreSQL y Spring Data JPA
  • Configuración sencilla mediante archivos de propiedades
  • Uso de Docker para facilitar la configuración de la base de datos y la herramienta de administración pgAdmin

🚀 Requisitos

  • Java 17 o superior (por ejemplo, openjdk 17.0.15)
  • Maven (gestor de dependencias y construcción, ya incluido el wrapper en el proyecto)
  • Docker (opcional, pero recomendado para la base de datos)
  • Spring Boot (ya incluido en las dependencias)

⚙️ Instalación y Ejecución

1. Clona el repositorio

git clone https://github.com/TU-USUARIO/omdbapi-springboot.git
cd omdbapi-springboot

2. Configura las variables de entorno y propiedades

  • Copia los archivos de ejemplo y edítalos con tus datos:
    cp src/main/resources/application.properties.example src/main/resources/application.properties
    cp docker/.env.example docker/.env
  • En src/main/resources/application.properties, coloca tus claves de OMDB y Gemini.
  • En docker/.env, pon los datos de usuario, contraseña y base de datos para PostgreSQL y pgAdmin.

3. Levanta la base de datos y pgAdmin con Docker

Si nunca has usado Docker, solo necesitas instalarlo y luego ejecutar:

cd docker
docker-compose up -d
cd ..

Esto creará dos servicios:

  • db: Un contenedor de PostgreSQL donde se guardarán tus series y episodios.
  • pgadmin: Una herramienta web para administrar la base de datos, accesible en http://localhost:8080.

Puedes detener los servicios con:

docker-compose down

4. Ejecuta la aplicación

./mvnw spring-boot:run

Esto compilará y ejecutará la aplicación. Verás un menú interactivo en la consola para buscar series, consultar temporadas, ver rankings y más.

🐳 ¿Qué hace el archivo docker-compose.yml?

El archivo docker/docker-compose.yml automatiza la creación de dos servicios:

  • db:

    • Usa la imagen oficial de PostgreSQL.
    • Crea una base de datos con el usuario, contraseña y nombre que definas en el archivo .env.
    • Expone el puerto 5432 para que la aplicación pueda conectarse.
    • Guarda los datos en un volumen persistente llamado postgres_data.
  • pgadmin:

    • Usa la imagen oficial de pgAdmin4.
    • Permite administrar la base de datos desde el navegador.
    • Accesible en http://localhost:8080 usando el correo y contraseña definidos en .env.
    • Sus configuraciones se guardan en el volumen pgadmin_config.

Ambos servicios están conectados en una red interna llamada demo_network para que puedan comunicarse entre sí.

📂 Estructura del Proyecto

.
├── src
│   ├── main/java/mx/aluracursos/omdbapi_springboot
│   │   ├── cli/           # Interfaz interactiva
│   │   ├── client/        # Cliente OMDB y Gemini
│   │   ├── config/        # Configuración de APIs
│   │   ├── models/        # Modelos de datos
│   │   ├── service/       # Lógica de negocio
│   └── test/java/mx/aluracursos/omdbapi_springboot
│       └── OmdbapiSpringbootApplicationTests.java
├── docker/                # Archivos para Docker y base de datos
├── pom.xml                # Dependencias y configuración de Maven
└── README.md

🤖 Traducción automática con Gemini API

Además de buscar información en OMDB, este proyecto utiliza la API de Gemini (de Google) para traducir automáticamente la sinopsis de las series y películas al español. Cuando realizas una búsqueda, la aplicación consulta Gemini para obtener la traducción y la guarda junto con el resto de la información.

Para que esto funcione, necesitas una clave de Gemini API, que debes colocar en el archivo src/main/resources/application.properties.

🗂️ ¿Para qué sirve cada archivo principal?

  • src/main/java/mx/aluracursos/omdbapi_springboot/cli/MenuInteractivo.java
    Es la interfaz de texto que ves al ejecutar la aplicación. Aquí puedes buscar series, ver temporadas, rankings, etc.

  • src/main/java/mx/aluracursos/omdbapi_springboot/client/OmdbApiClient.java
    Se encarga de conectarse a la API de OMDB, buscar series y películas, y traer la información.

  • src/main/java/mx/aluracursos/omdbapi_springboot/client/GeminiApiClient.java
    (o similar, según tu estructura) Se conecta a la API de Gemini para traducir la sinopsis automáticamente.

  • src/main/java/mx/aluracursos/omdbapi_springboot/models/
    Contiene las clases que representan Series, Temporadas y Episodios, es decir, cómo se guarda la información en la base de datos.

  • src/main/java/mx/aluracursos/omdbapi_springboot/service/
    Aquí está la lógica principal de la aplicación: cómo se procesan las búsquedas, traducciones y almacenamiento.

  • src/main/resources/application.properties
    Archivo de configuración donde pones tus claves de OMDB y Gemini, y los datos de conexión a la base de datos.

  • docker/docker-compose.yml
    Automatiza la creación de la base de datos PostgreSQL y la herramienta pgAdmin para que no tengas que instalarlas manualmente.

  • docker/.env
    Aquí defines los usuarios y contraseñas para la base de datos y pgAdmin.

About

implementación en Java con Spring Boot que consume la API de OMDB y Gemini para obtener información sobre series.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages