1
resposta

Filmes em JSON

package br.com.alura.screenmatch.principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.FileWriter;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class PrincipalComBusca {
    public static void main(String[] args {
            Scanner leitura = new Scanner(System.in);
            List<Titulo> filmes = new ArrayList <>();
            String busca = " ";
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            
            System.out.println("Digite os nomes dos filmes (digite 'sair' para encerrar):");
            
     // Cadastro manual de filmes (opcional)
     
     while  (true) {
      System.out.print("Nome do filme: ");
            String filme = leitura.nextLine();
            
            if (filme.equalsIgnoreCase("sair")) {
                break;
            }
            
               // Adiciona um novo Titulo à lista (sem dados da API)
               
              Titulo novoTitulo = new Titulo();
              novoTitulo.setTitle(filme);
              filme.add(novoTitulo) ;
        }
        
        // Modo de busca (API OMDB)
        System.out.println("\n--- Modo busca (API) ---");
        System.out.println("Digite um filme para buscar na API (ou 'sair' para encerrar):");
        while (true) {
        System.out.print("Busca: ");
        busca = leitura.nextLine();
        
        if (busca.equalsIgnoreCase("sair")) {
            break;
        }
        
        String urlBase = "https://www.omdbapi.com/?t=";
        String apiKey = "apikey=sua-chave-aqui"; // Substitua pela sua chave!
        String endereco = urlBase + busca.replace(" ", "+") + apiKey;
        
        try {
        
        // Requisição HTTP
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                          .uri(URI.creat(endereco))
                          .build();
                          
                          HttpResponse<String> response = client.send(
                                   request, Http Response.body();
                                   
                                   // Converte JSON para objeto Titulo
                                   Titulo tituloAPI = gson.fromJson(json, Titulo.class);
                                   
                 // Adiciona à lista de filmes
                filmes.add(tituloAPI);
                System.out.println("Filme adicionado: " + tituloAPI.getTitle());
                
                } catch (Exception e) {
                     System.out.println("Erro: " + e.getMessage());
            }
        }
        // Escreve a lista no arquivo JSON (com formatação)
        try(FileWriter escrita = new FileWhiter("filmes.json")) {
             gson.toJson(filmes, escrita);
             "\nArquivo 'filmes.json' gerado com sucesso!");
        } catch (Exception e) {
            System.out.println("Erro ao escrever o arquivo: " + e.getMessage());
        }
        
        System.out.println("Programa encerrado.");
        leitura.close();
    }
}
1 resposta

Oi, Daiane! Como vai?

Achei muito interessante como você estruturou a interação entre o cadastro manual e a busca na API. Isso ajuda bastante a compreender como manipular listas e persistir dados em JSON.

Uma dica interessante para o futuro é usar o método isEmpty() para validar se uma string está vazia antes de enviar uma requisição, evitando erros desnecessários. Veja este exemplo:


if(!busca.isEmpty()){
    System.out.println("Buscando: " + busca);
}

Esse código verifica se a string busca não está vazia antes de executar a ação.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!