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

haciendo lo de la clase

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.model.Episodio; import com.aluracurso.screenmatch.service.ConsumoApi; import com.aluracurso.screenmatch.service.ConvierteDatos;

import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors;

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 episodiosTemporada = temporadas.get(i).episodios(); // for (int j = 0; j < episodiosTemporada.size() ; j++) { // System.out.println(episodiosTemporada.get(j).titulo()); // } // } // mejoria usando funcion lambda //temporadas.forEach(t -> t.episodios().forEach(e -> System.out.println(e.titulo()))); // converti todas las informaciones a una lista de tipo Datos Episodio List datosEpisodios = temporadas.stream() .flatMap(t -> t.episodios().stream()) //.toList() .collect(Collectors.toList()); // top 5 episodios System.out.println("Top 5 de episodios ="); datosEpisodios.stream() .filter(e -> !e.evaluacion().equalsIgnoreCase("N/A")) .sorted(Comparator.comparing(DatosEpisodio::evaluacion).reversed()) .limit(5) .forEach(System.out::println); // convirtiendo los datos a una lista de Tipo episodio List episodios = temporadas.stream() .flatMap(t -> t.episodios().stream() .map(d -> new Episodio(t.numero(),d))) .collect(Collectors.toList());

    episodios.forEach(System.out::println);

    // busqueda de episofios  filtrado por años
    System.out.println(" por favor indica el año a partir que deseas ver episodios");
    var fecha = teclado.nextInt();
    teclado.nextLine();

    LocalDate fechaBusqueda = LocalDate.of(fecha,1,1);

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
    episodios.stream()
            .filter(e-> e.getFechaDeLanzamiento() != null &&  e.getFechaDeLanzamiento().isAfter(fechaBusqueda))
            .forEach(e -> System.out.println(
                    " Temporada "+ e.getTemporada() +
                            "Episodio " +e.getTitulo() +
                            "Fecha de lanzamiento " + e.getFechaDeLanzamiento().format(dtf)
            ) );

}

}

1 respuesta

¡Hola Edwin! ¿Cómo estás?

Gracias por tu aporte en el foro. Su contribución es esencial para el crecimiento de nuestra comunidad en Alura.

Sigue así y no dudes en volver al foro si tienes alguna pregunta o dificultad.

Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!