4 - Buscar series por título
5 - Top 5 series
6 - Buscar series por categoría
7 - Filtrar series
0 - Salir
""";
case 4:
buscarSeriePorTitulo();
break;
case 5:
buscarTop5Series();
break;
case 6:
buscarSeriesPorCategoria();
break;
case 7:
filtrarSeriesPorTemporadaYEvaluacion();
break;
case 0:
System.out.println("Cerrando la aplicación...");
break;
default:
System.out.println("Opción inválida");
}
}
}
private void buscarSeriePorTitulo() {
System.out.println("Escriba el nombre de la serie que desea buscar");
var nombreSerie = teclado.nextLine();
Optional<Serie> serieBuscada = repository.findByTituloContainingIgnoreCase(nombreSerie);
if (serieBuscada.isPresent()){
System.out.println("Datos de la serie: " + serieBuscada.get());
} else {
System.out.println("Datos no encontrados");
}
}
private void buscarSerieWeb() {
DatosSerie datos = getDatosSerie();
Serie serie = new Serie(datos);
repository.save(serie);
//datosSeries.add(datos);
System.out.println(datos);
}
private DatosSerie getDatosSerie() {
System.out.println("Escribe el nombre de la serie que deseas buscar");
var nombreSerie = teclado.nextLine();
var json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+" )+ API_KEY);
DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class);
System.out.println(datos.sinopsis());
return datos;
}
private void buscarEpisodioPorSerie(){
listarSeriesBuscadas();
System.out.println("Escriba el nombre de la serie que desea ver");
var nombreSerie = teclado.nextLine();
Optional<Serie> serie = repository.findByTituloContainingIgnoreCase(nombreSerie);
if (serie.isPresent()){
var serieBuscada = serie.get();
List<DatosTemporada> temporadas = new ArrayList<>();
for (int i = 1; i <= serieBuscada.getTotalTemporadas(); i++) {
var json = consumoApi.obtenerDatos(URL_BASE + serieBuscada.getTitulo().replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporada datosTemporada = conversor.obtenerDatos(json, DatosTemporada.class);
temporadas.add(datosTemporada);
}
temporadas.forEach(System.out::println);
}
}
private void listarSeriesBuscadas() {
series = repository.findAll();
series.stream()
.sorted(Comparator.comparing(Serie::getGenero))
.forEach(System.out::println);
}
public void buscarTop5Series(){
List<Serie> topSeries = repository.findTop5ByOrderByEvaluacionDesc();
topSeries.forEach(s -> System.out.println("Serie: " + s.getTitulo() + "Evaluación: " + s.getEvaluacion()));
}
private void buscarSeriesPorCategoria() {
System.out.println("Deseja buscar séries de que categoria/gênero? ");
var nombreGenero = teclado.nextLine();
Categoria categoria = Categoria.fromEspanol(nombreGenero);
List<Serie> seriesPorCategoria = repository.findByGenero(categoria);
System.out.println("Séries da categoria " + nombreGenero);
seriesPorCategoria.forEach(System.out::println);
}
public void filtrarSeriesPorTemporadaYEvaluacion(){
System.out.println("¿Filtrar séries con cuántas temporadas? ");
var totalTemporadas = teclado.nextInt();
teclado.nextLine();
System.out.println("¿Com evaluación apartir de cuál valor? ");
var evaluacion = teclado.nextDouble();
teclado.nextLine();
List<Serie> filtroSeries = repository.findByTotalTemporadasLessThanEqualAndEvaluacionGreaterThanEqual(totalTemporadas, evaluacion);
System.out.println("*** Series filtradas ***");
filtroSeries.forEach(s ->
System.out.println(s.getTitulo() + " - evaluacion: " + s.getEvaluacion()));
}
}