Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Aca mi codigo

package com.aluracurso.screenmatch.principal;

import com.aluracurso.screenmatch.model.DatosEpisodio;
import com.aluracurso.screenmatch.model.DatosSerie;
import com.aluracurso.screenmatch.model.DatosTemporadas;
import com.aluracurso.screenmatch.service.ConsumoApi;
import com.aluracurso.screenmatch.service.ConvierteDatos;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Principal {
    private Scanner teclado = new Scanner(System.in);
    private ConsumoApi consumoApi = new ConsumoApi();
    private static final String URL_BASE="https://www.omdbapi.com/?t=";
    private static final String API_KEY = "&apikey=a76956f8";
    private final ConvierteDatos conversor = new ConvierteDatos();
    public void muestraElMenu(){

        System.out.println("Por favor escribir el nombre dela serie que quieres buscar: ");
        //Busca los datos generales de las series
        var nombreSerie = teclado.nextLine();
        var  json = consumoApi.obtenerDatos(URL_BASE+nombreSerie.replace(" ","+")+API_KEY);
        var datos = conversor.obtenerDatos(json, DatosSerie.class);
        //System.out.println(datos);

        //busca los datos de todas las temporadas
        List<DatosTemporadas> temporadas = new ArrayList<>();
        for (int i = 1; i <= datos.totalDeTemporadas(); i++) {
            json= consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+") + "&Season="+i+API_KEY);
            var datosTemporadas =conversor.obtenerDatos(json, DatosTemporadas.class);
            temporadas.add(datosTemporadas);
        }
        //temporadas.forEach(System.out::println);
        //Mostrar el titulo de los episodios para las temporadas
//        for (int i = 0; i < datos.totalDeTemporadas() ; i++) {
//            List<DatosEpisodio> episodiosTemporada = temporadas.get(i).episodios();
//            for (int j = 0; j < episodiosTemporada.size() ; j++) {
//                System.out.println(episodiosTemporada.get(j).titulo());
//            }
//        }
        temporadas.forEach(t -> t.episodios().forEach(e -> System.out.println(e.titulo())));
    }
}

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Edwin, espero que estés bien

Tu código parece estar bien estructurado para buscar y mostrar los títulos de los episodios de una serie a través de una API. Aquí hay algunas sugerencias y puntos a considerar:

  1. Manejo de Errores: Asegúrate de manejar posibles excepciones, como problemas de red o respuestas inesperadas de la API. Puedes usar try-catch para capturar y manejar estas excepciones de manera adecuada.

  2. Validación de Datos: Antes de procesar la respuesta de la API, verifica si los datos son válidos. Por ejemplo, asegúrate de que datos no sea null antes de intentar acceder a totalDeTemporadas().

  3. Optimización de Código: El uso de forEach para imprimir los títulos de los episodios es una buena práctica. Sin embargo, asegúrate de que las clases DatosTemporadas y DatosEpisodio están correctamente implementadas para evitar NullPointerException.

  4. API Key: Considera cómo manejar la clave de la API de forma segura, evitando incluirla directamente en el código fuente.

  5. Pruebas: Realiza pruebas con diferentes nombres de series para asegurarte de que el programa maneja correctamente tanto las búsquedas exitosas como las fallidas.

Si encuentras algún error específico al ejecutar el programa, revisa los mensajes de error en la consola para obtener pistas sobre lo que podría estar saliendo mal.

Espero haber ayudado y buenos estudios!