código completo y comentado, siguiendo los pasos que indicaste:
Java
i``` mport com.alura.screenmatch.excepcion.ErrorEnConversionDeDuracionException; import com.alura.screenmatch.modelos.Titulo; import com.alura.screenmatch.modelos.TituloOmdb; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.FieldNamingPolicy;
import java.io.FileWriter; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.ArrayList; import java.util.List; import java.util.Scanner;
public class PrincipalConBusqueda { public static void main(String[] args) throws IOException, InterruptedException { Scanner lectura = new Scanner(System.in); List titulos = new ArrayList<>(); // Lista para almacenar los títulos
// Configuración de Gson para formato legible (pretty printing)
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();
while (true) {
System.out.println("Escriba el nombre de una película: ");
var busqueda = lectura.nextLine();
if (busqueda.equalsIgnoreCase("salir")) {
break; // Salir del bucle si el usuario escribe "salir"
}
String direccion = "https://www.omdbapi.com/?t=" +
busqueda.replace(" ", "+") +
"&apikey=coloque_su_apikey"; // Reemplaza con tu API key
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(direccion))
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
System.out.println(json);
TituloOmdb miTituloOmdb = gson.fromJson(json, TituloOmdb.class);
System.out.println(miTituloOmdb);
Titulo miTitulo = new Titulo(miTituloOmdb);
System.out.println("Titulo ya convertido: " + miTitulo);
titulos.add(miTitulo); // Agregar el título a la lista
} catch (NumberFormatException e) {
System.out.println("Ocurrió un error al convertir un número: ");
System.out.println(e.getMessage());
} catch (IllegalArgumentException e) {
System.out.println("Error en la URI, verifique la dirección.");
} catch (ErrorEnConversionDeDuracionException e) {
System.out.println(e.getMessage());
}
} // Fin del bucle while
// Escribir la lista de títulos en un archivo JSON
FileWriter escritura = new FileWriter("titulos.json");
escritura.write(gson.toJson(titulos));
escritura.close();
System.out.println("Finalizó la ejecución del programa!");
}
}
Resumen de lo que hace el código:
Importa las clases necesarias: Importa las clases necesarias para el manejo de excepciones, modelos de datos, Gson, entrada/salida y comunicación HTTP.
Crea una lista de títulos y configura Gson: Crea una lista vacía para almacenar los títulos de las películas y configura Gson para usar mayúsculas en los nombres de campo y formato legible.
Inicia un bucle infinito: Inicia un bucle while(true) que se repetirá hasta que el usuario escriba "salir".
Pide al usuario el nombre de una película: Dentro del bucle, solicita al usuario que ingrese el nombre de una película.
.
¡Listo! Ahora tienes un programa que te permite buscar películas en la API de OMDb, almacenar los resultados en una lista y guardar esa lista en un archivo JSON