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

Proyecto final

Principal

package com.valentina.desafio.principal;

import com.valentina.desafio.model.Datos;
import com.valentina.desafio.model.DatosAnime;
import com.valentina.desafio.service.ConsumoAPI;
import com.valentina.desafio.service.ConvierteDatos;

import java.util.Comparator;
import java.util.DoubleSummaryStatistics;
import java.util.Optional;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Principal {

    private static final String URL_BASE_AÑO = "https://api.jikan.moe/v4/anime?start_date=2023-01-01&end_date=2023-12-31";
    //"https://api.jikan.moe/v4/anime?q=" + animeName.replace(" ", "%20");
    private static final String URL_BASE = "https://api.jikan.moe/v4/anime?q=";
    private ConsumoAPI consumoAPI = new ConsumoAPI();
    private ConvierteDatos conversor = new ConvierteDatos();
    private Scanner teclado = new Scanner(System.in);

    public void muestraElMenu(){
        System.out.println("");
        System.out.println("-------------");
        var json = consumoAPI.obtenerDatos(URL_BASE_AÑO);
        //System.out.println(json);
        var datos = conversor.obtenerDatos(json, Datos.class);
        System.out.println(datos);

        //TOP 5 MAS POPULARES
        System.out.println("");
        System.out.println("--- TOP 5 MAS POPULARES 2023 ---");
        datos.resultados().stream()
                .sorted(Comparator.comparing(DatosAnime::popularidad).reversed())
                .limit(5)
                .map(l ->  l.titulo().toUpperCase())
                .forEach(System.out::println);

        //ESTADISTICAS
        System.out.println("");
        System.out.println("---ESTADISTICAS ANIMES 2023---");
        DoubleSummaryStatistics est = datos.resultados().stream()
                .filter(d -> d.popularidad() > 0)
                .collect(Collectors.summarizingDouble(DatosAnime::popularidad));
        System.out.println("Promedio de popularidad: " + est.getAverage());
        System.out.println("Maxima popularidad: " + est.getMax());
        System.out.println("Minina popularidad: " + est.getMin());
        System.out.println("Cantidad de registros evaluados para calcular las estadisticas: " + est.getCount());

        //BUSQUEDA POR NOMBRE
        System.out.println("");
        System.out.println("--- BUSQUEDA ---");
        System.out.println("Escriba el nombre del anime");
        var tituloAnime = teclado.nextLine();
        json = consumoAPI.obtenerDatos(URL_BASE + tituloAnime.replace(" ","%20"));
        var datosBusqueda = conversor.obtenerDatos(json, Datos.class);
        Optional<DatosAnime> animeBuscado = datosBusqueda.resultados().stream()
                .filter(l -> l.titulo().toUpperCase().contains(tituloAnime.toUpperCase()))
                .findFirst();
        if(animeBuscado.isPresent()){
            System.out.println("Anime encontrado");
            System.out.println(animeBuscado.get());
        }else {
            System.out.println("Anime no encontrado");
        }

    }
}

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

1 respuesta

Hola Valentina! ¿Cómo estás?

Gracias por compartir tu proyecto final con nosotros. 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.

¡Gracias nuevamente! Saludos,

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