package org.lodder.subtools.sublibrary.data.IMDB;
import java.net.URL;
import org.lodder.subtools.sublibrary.Manager;
import org.lodder.subtools.sublibrary.data.XmlHTTP;
import org.lodder.subtools.sublibrary.data.IMDB.model.IMDBDetails;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class IMDBAPI extends XmlHTTP {
public IMDBAPI(Manager manager) {
super(manager);
}
public IMDBDetails getIMDBMovieDetails(String imdbid) throws IMDBException {
final String xml = "http://www.imdbapi.com/?i=" + imdbid + "&r=xml";
Document doc;
try {
doc = getXMLDisk(xml);
NodeList nodeList = doc.getElementsByTagName("movie");
if (nodeList.getLength() > 0) {
return parseIMDBDetails((Element) nodeList.item(0));
}
} catch (Exception e) {
throw new IMDBException("Error IMDBAPI", xml, e);
}
return null;
}
private IMDBDetails parseIMDBDetails(Element e) {
IMDBDetails details = new IMDBDetails();
details.setTitle(e.getAttribute("title"));
details.setYear(Integer.parseInt(e.getAttribute("year")));
details.setActors(e.getAttribute("actors"));
details.setDirector(e.getAttribute("director"));
details.setGenre(e.getAttribute("genre"));
details.setId(e.getAttribute("id"));
details.setPlot(e.getAttribute("plot"));
details.setRated(e.getAttribute("rated"));
details.setWriter(e.getAttribute("writer"));
details.setReleased(e.getAttribute("released"));
details.setRuntime(e.getAttribute("runtime"));
details.setRating(e.getAttribute("rating"));
details.setVotes(e.getAttribute("votes"));
try {
details.setPoster(new URL(e.getAttribute("poster")));
} catch (Exception ex) {
// do nothing
}
return details;
}
}