Quando vou buscar uma série como "stranger things", meu código apresenta esta exceção. Já tentei tratar a exceção, mas não tive sucesso. Segue abaixo o código completo:
package br.com.alura.screenmatch.principal;
import br.com.alura.screenmatch.model.DadosEpisodio; import br.com.alura.screenmatch.model.DadosSerie; import br.com.alura.screenmatch.model.DadosTemporada; import br.com.alura.screenmatch.model.Episodio; import br.com.alura.screenmatch.service.ConsumoApi; import br.com.alura.screenmatch.service.ConverteDados;
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 sc = new Scanner(System.in);
private ConsumoApi consumo = new ConsumoApi();
private ConverteDados conversor = new ConverteDados();
private final String ENDERECO = "https://www.omdbapi.com/?t=" ;
private final String API_KEY = "&apikey=8c33ead6";
public void exibeMenu(){
System.out.println("Digite o nome da série p/ busca: ");
var nomeSerie = sc.nextLine();
var json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + API_KEY);
DadosSerie dados = conversor.obterDados(json, DadosSerie.class);
System.out.println(dados);
List<DadosTemporada> temporadas = new ArrayList<>();
for(int i = 1; i <= dados.totalTemporadas(); i++){
json = consumo.obterDados(ENDERECO + nomeSerie.replace(" ", "+") + "&season=" + i + API_KEY);
DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
temporadas.add(dadosTemporada);
}
temporadas.forEach(t -> t.episodios().forEach(e -> System.out.println(e.titulo())));
temporadas.forEach(System.out::println);
List<DadosEpisodio> dadosEpisodios = temporadas.stream()
.flatMap(t -> t.episodios().stream())
.collect(Collectors.toList());
System.out.println("\nTOp 5 Episódios: ");
dadosEpisodios.stream()
.filter(e -> !e.avaliacao().equalsIgnoreCase("N/A"))
.sorted(Comparator.comparing(DadosEpisodio::avaliacao).reversed())
.limit(5)
.forEach(System.out::println);
List<Episodio> episodios = temporadas.stream()
.flatMap(t -> t.episodios().stream()
.map(d -> new Episodio(t.numero(), d))
).collect(Collectors.toList());
System.out.println("A partir de que ano você deseja ver os episódios? ");
var ano = sc.nextInt();
LocalDate dataBusca = LocalDate.of(ano, 1, 1);
DateTimeFormatter formatador = DateTimeFormatter.ofPattern("dd/MM/yyyy");
episodios.stream()
.filter(e -> e.getDataLancamento() != null && e.getDataLancamento().isAfter(dataBusca))
.forEach(e -> System.out.println(
"Temporada: " + e.getTemporada() +
"Episódio: " + e.getTitulo() +
"Data de Lançamento: " + e.getDataLancamento().format(formatador)
));
}
}