package com.aluracursos.screenmatch;
import com.aluracursos.screenmatch.principal.Principal;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ScreenmatchApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(ScreenmatchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Principal menu = new Principal();
menu.muestraMenu();
}
}
package com.aluracursos.screenmatch.principal;
import com.aluracursos.screenmatch.ConsumoAPI;
import com.aluracursos.screenmatch.model.DatosSeries;
import com.aluracursos.screenmatch.model.DatosTempo;
import com.aluracursos.screenmatch.service.ConvierteDatos;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Principal {
private Scanner teclado = new Scanner(System.in);
private ConsumoAPI buscApi = new ConsumoAPI();
private final String urlFija = "https://www.omdbapi.com/?t=";
private final String apiKey = "&apikey=4fc7c187";
private ConvierteDatos convierte = new ConvierteDatos();
public void muestraMenu(){
System.out.println("Ingresa el nombre de la serie que estas buscando: ");
var nombeSerie = teclado.nextLine();
var json = buscApi.obtenerDatps(urlFija + nombeSerie.replace(" ", "+") + apiKey);
System.out.println(json);
var datos = convierte.obtenerDatos(json, DatosSeries.class);
System.out.println(datos);
List<DatosTempo> tempo = new ArrayList<>();
for (int i = 1; i <= datos.totalTemps(); i++){
json = buscApi.obtenerDatps(urlFija + nombeSerie.replace(" ", "+") + "&Season="+ i + apiKey);
var datosTemporadas = convierte.obtenerDatos(json, DatosTempo.class);
tempo.add(datosTemporadas);
}
//tempo.forEach(System.out::println);
//estp trae solo el titulo de los episodios de la temporada
// for (int i = 0; i < datos.totalTemps(); i++) {
// List<DatosEpisodio> episodiosTempo = tempo.get(i).episodios();
// for (int j = 0; j < episodiosTempo.size(); j++) {
// System.out.println(episodiosTempo.get(j).titulo());
// }
// }
tempo.forEach(t -> t.episodios().forEach(e -> System.out.println(e.titulo())));
}
}
package com.aluracursos.screenmatch.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.List;
@JsonIgnoreProperties (ignoreUnknown = true)
public record DatosTempo(
@JsonAlias("Season") Integer numero,
@JsonAlias("Episodes") List <DatosEpisodio> episodios
) {
}
package com.aluracursos.screenmatch;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsumoAPI {
public String obtenerDatps (String url){
HttpClient cliente = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
HttpResponse<String> response = null;
try{
response = cliente.send(request, HttpResponse.BodyHandlers.ofString());
} catch (IOException e){
throw new RuntimeException(e);
}catch (InterruptedException e){
throw new RuntimeException(e);
}
String json = response.body();
return json;
}
}