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

me esforce pero entendi

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<DatosEpisodio> 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<DatosEpisodio> 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<Episodio> 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! ¿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!