package br.com.alura.screenmatch.model;
import br.com.alura.screenmatch.service.ConsultaMyMemory;
import java.util.OptionalDouble;
public class Serie {
private String titulo;
private Integer totalTemporadas;
private double avaliacao;
private Categoria genero;
private String atores;
private String poster;
private String sinopse;
public Serie(DadosSerie dadosSerie){
this.titulo = dadosSerie.titulo();
this.totalTemporadas = dadosSerie.totalTemporadas();
this.avaliacao = OptionalDouble.of(Double.valueOf(dadosSerie.avaliacao())).orElse(0.0);
this.genero = Categoria.fromString(dadosSerie.genero().split(",")[0].trim());
this.atores = dadosSerie.atores();
this.poster = dadosSerie.poster();
this.sinopse = ConsultaMyMemory.obterTraducao(dadosSerie.sinopse());
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getSinopse() {
return sinopse;
}
public void setSinopse(String sinopse) {
this.sinopse = sinopse;
}
public Integer getTotalTemporadas() {
return totalTemporadas;
}
public void setTotalTemporadas(Integer totalTemporadas) {
this.totalTemporadas = totalTemporadas;
}
public double getAvaliacao() {
return avaliacao;
}
public void setAvaliacao(double avaliacao) {
this.avaliacao = avaliacao;
}
public Categoria getGenero() {
return genero;
}
public void setGenero(Categoria genero) {
this.genero = genero;
}
public String getAtores() {
return atores;
}
public void setAtores(String atores) {
this.atores = atores;
}
public String getPoster() {
return poster;
}
public void setPoster(String poster) {
this.poster = poster;
}
@Override
public String toString() {
return "Titulo: " + titulo +
"| totalTemporadas: " + totalTemporadas +
"| avaliacao: " + avaliacao +
"| genero: " + genero +
"| atores: " + atores +
"| poster: " + poster +
"| sinopse: " + sinopse;
}
}
package br.com.alura.screenmatch.model.traducao;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosResposta(@JsonAlias(value = "translatedText") String textoTraduzido) {
}
package br.com.alura.screenmatch.model.traducao;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosTraducao(@JsonAlias(value = "responseData") DadosResposta dadosResposta){
}
package br.com.alura.screenmatch.service;
import br.com.alura.screenmatch.model.traducao.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.dadosResposta().textoTraduzido();
}
}
package br.com.alura.screenmatch.model;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public record DadosSerie(@JsonAlias("Title") String titulo,
@JsonAlias("totalSeasons") Integer totalTemporadas,
@JsonAlias("imdbRating") String avaliacao,
@JsonAlias("Genre") String genero,
@JsonAlias("Actors") String atores,
@JsonAlias("Poster") String poster,
@JsonAlias("Plot") String sinopse) {
}