Me encontré con un error muy específico que paso a explicar: Quise probar el programa con la nueva serie protagonizada por Nicole Kidman titulada "The perfect couple". Para ello introduje las palabras "perfect couple" y el programa se cortó con un error. Probé con otras series y todo estaba bien. Así que investigué la API usando Postman y descubrí que para ver la info de la serie de Nicole Kidman debía colocar "the perfect couple" porque existe una serie china llamada "perfect couple" que no contiene información sobre la cantidad de temporadas. Dice "N/A". Por éso el error, ya que, nosotros mapeamos ese dato como número entero. Pensé varias soluciones y la más sencilla que se me ocurrió fue mapear el dato como String y luego corregir el método "buscarEpisodioPorSerie" de modo tal que parsee el valor de total de temporadas de String a Integer, pero agregando un try-catch de NumberFormatException. El código del método quedaría así:
private void buscarEpisodioPorSerie() {
DatosSerie datosSerie = getDatosSerie();
List<DatosTemporadas> temporadas = new ArrayList<>();
// Inicializa un totalTemporadas en 0:
int totalTemporadas = 0;
// Parsea el total de temporadas que vienen como String:
try {
totalTemporadas = Integer.parseInt(datosSerie.totalTemporadas());
} catch (NumberFormatException e) {
// Si el valor es "N/A", se mantendrá totalTemporadas como 0
// y se informará que no hay información sobre temporadas y episodios de
// esa serie en particular:
System.out.println("No hay información de temporadas y episodios de la serie: "
+ datosSerie.titulo());
return; // Sale del método.
}
// Si hay informacion del número de temporadas, entonces muestros los episodios:
for (int i = 1; i <= totalTemporadas; i++) {
var json = consumoApi.obtenerDatos(URL_BASE + datosSerie.titulo().replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporadas datosTemporada = conversor.obtenerDatos(json, DatosTemporadas.class);
temporadas.add(datosTemporada);
}
// Muestra las temporadas y episodios encontrados:
temporadas.forEach(System.out::println);
}