package br.com.projeto.screematch;
import br.com.projeto.screematch.model.DadosEpisodio;
import br.com.projeto.screematch.model.DadosSerie;
import br.com.projeto.screematch.model.DadosTemporada;
import br.com.projeto.screematch.service.ConsumoAPI;
import br.com.projeto.screematch.service.ConverteDados;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
@SpringBootApplication
public class ScreematchApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(ScreematchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Scanner scan = new Scanner(System.in);
// Pesquisa série
var consumoAPI = new ConsumoAPI();
var json = consumoAPI.obterDados("https://www.omdbapi.com/?t=supernatural&apikey=44e7b972");
// Busca série pelo scanner
// System.out.print("Escolha uma serie: ");
// String busca = scan.nextLine();
// var json = consumoAPI.buscaDados(busca);
// Converter um json em um objeto da classe DadosSerie para Jackson
ConverteDados conversor = new ConverteDados();
DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
System.out.println(dados);
// Imprimir dados do EP
json = consumoAPI.obterDados("https://www.omdbapi.com/?t=supernatural&Season=1&episode=1&apikey=44e7b972");
DadosEpisodio dadosEpisodio = conversor.obterDados(json, DadosEpisodio.class);
System.out.println(dadosEpisodio);
List<DadosTemporada> temporadas = new ArrayList<>();
for (int i = 1; i <= dados.totalTemporadas(); i++) {
json = consumoAPI.obterDados("https://www.omdbapi.com/?t=supernatural&Season=" + i + "&apikey=44e7b972");
DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
temporadas.add(dadosTemporada);
}
temporadas.forEach(System.out::println);
}
}
package br.com.projeto.screematch.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosTemporada(@JsonAlias ("Season") Integer numero,
@JsonAlias ("Episodes") List<DadosEpisodio> episodios
) {
}
package br.com.projeto.screematch.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties (ignoreUnknown = true)
public record DadosEpisodio(@JsonAlias ("Title") String tituloEpisodio,
@JsonAlias ("Episode") String episodio,
@JsonAlias ("Plot") String descricao,
@JsonAlias ("Season") String temporada,
@JsonAlias ("Runtime") String duracao,
@JsonAlias ("Released") String dataLancamento,
@JsonAlias ("Year") Integer ano,
@JsonAlias ("imdbRating") String avaliacao
) {
}
Quando eu peço para imprimir os dados do episódio ele consegue puxar os dados corretamente, porém com o loop de episódios e temporadas alguns valores vem nulos:
DadosEpisodio[tituloEpisodio=Pilot, episodio=1, descricao=Sam and Dean Winchester were trained by their father to hunt the creatures of the supernatural. Now, their father has mysteriously disappeared while hunting the demon that killed their mother, 22 years ago., temporada=1, duracao=44 min, dataLancamento=13 Sep 2005, ano=2005, avaliacao=8.5] DadosTemporada[numero=1, episodios=[DadosEpisodio[tituloEpisodio=Pilot, episodio=1, descricao=null, temporada=null, duracao=null, dataLancamento=2005-09-13, ano=null, avaliacao=8.5]