Eu peguei a solução proposta para tradução em [Projeto] Alternativa de tradução à API do ChatGPT de uso da API MyMemory para quem está tendo problemas com a API do ChatGPT e do Libre Translate, e otimizei o código para uma melhor leitura e entendimento, fazendo uso da classe ConsumoApi e tendo que criar apenas duas classes.
package br.com.alura.screenmatch.service;
import br.com.alura.screenmatch.model.DadosTraducao;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.net.URLEncoder;
public class ConsultaMyMemory {
public static String obterTraducao(String text) {
ObjectMapper mapper = new ObjectMapper();
ConsumoApi consumo = new ConsumoApi();
String texto = URLEncoder.encode(text);
String langpair = URLEncoder.encode("en|pt-br");
String url = "https://api.mymemory.translated.net/get?q=" + texto + "&langpair=" + langpair;
String json = consumo.obterDados(url);
DadosTraducao traducao;
try {
traducao = mapper.readValue(json, DadosTraducao.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return traducao.responseData().translatedText;
}
}
package br.com.alura.screenmatch.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosTraducao(DadosResposta responseData) {
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DadosResposta {
public String translatedText;
}
}
Depois de criar essas duas classe basta fazer essa alteração da sinopse na classe Serie
package br.com.alura.screenmatch.model;
...código omitido
public class Serie {
...código omitido
public Serie(DadosSerie dadosSerie) {
...código omitido
this.sinopse = ConsultaMyMemory.obterTraducao(dadosSerie.sinopse()).trim();
}
...código omitido
}
Espero que ajude.