Updated methods to return lists rather than single movies
This commit is contained in:
@@ -14,11 +14,17 @@
|
||||
package com.moviejukebox.themoviedb;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.logging.ConsoleHandler;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import com.moviejukebox.themoviedb.model.MovieDB;
|
||||
import com.moviejukebox.themoviedb.model.Person;
|
||||
@@ -96,23 +102,39 @@ public class TheMovieDb {
|
||||
* @param language The two digit language code. E.g. en=English
|
||||
* @return A movie bean with the data extracted
|
||||
*/
|
||||
public MovieDB moviedbSearch(String movieTitle, String language) {
|
||||
public List<MovieDB> moviedbSearch(String movieTitle, String language) {
|
||||
MovieDB movie = null;
|
||||
List<MovieDB> movieList = new ArrayList<MovieDB>();
|
||||
|
||||
// If the title is null, then exit
|
||||
if (movieTitle == null || movieTitle.equals(""))
|
||||
return movie;
|
||||
if (!isValidString(movieTitle)) {
|
||||
return movieList;
|
||||
}
|
||||
|
||||
Document doc = null;
|
||||
|
||||
try {
|
||||
String searchUrl = buildSearchUrl("Movie.search", URLEncoder.encode(movieTitle, "UTF-8"), validateLanguage(language));
|
||||
doc = DOMHelper.getEventDocFromUrl(searchUrl);
|
||||
movie = DOMParser.parseMovieInfo(doc);
|
||||
|
||||
NodeList nlMovies = doc.getElementsByTagName("movie");
|
||||
if (nlMovies == null) {
|
||||
return movieList;
|
||||
}
|
||||
|
||||
for (int loop = 0; loop < nlMovies.getLength(); loop++) {
|
||||
Node nMovie = nlMovies.item(loop);
|
||||
if (nMovie.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eMovie = (Element) nMovie;
|
||||
movie = DOMParser.parseMovieInfo(eMovie);
|
||||
if (movie != null) {
|
||||
movieList.add(movie);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception error) {
|
||||
logger.severe("TheMovieDb Error: " + error.getMessage());
|
||||
}
|
||||
return movie;
|
||||
return movieList;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,11 +145,12 @@ public class TheMovieDb {
|
||||
* @return A movie bean with the data extracted
|
||||
*/
|
||||
public MovieDB moviedbImdbLookup(String imdbID, String language) {
|
||||
MovieDB movie = null;
|
||||
MovieDB movie = new MovieDB();
|
||||
|
||||
// If the imdbID is null, then exit
|
||||
if (imdbID == null || imdbID.equals(""))
|
||||
if (!isValidString(imdbID)) {
|
||||
return movie;
|
||||
}
|
||||
|
||||
Document doc = null;
|
||||
|
||||
@@ -135,8 +158,18 @@ public class TheMovieDb {
|
||||
String searchUrl = buildSearchUrl("Movie.imdbLookup", imdbID, validateLanguage(language));
|
||||
|
||||
doc = DOMHelper.getEventDocFromUrl(searchUrl);
|
||||
movie = DOMParser.parseMovieInfo(doc);
|
||||
|
||||
NodeList nlMovies = doc.getElementsByTagName("movie");
|
||||
if (nlMovies == null) {
|
||||
return movie;
|
||||
}
|
||||
|
||||
for (int loop = 0; loop < nlMovies.getLength(); loop++) {
|
||||
Node nMovie = nlMovies.item(loop);
|
||||
if (nMovie.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eMovie = (Element) nMovie;
|
||||
movie = DOMParser.parseMovieInfo(eMovie);
|
||||
}
|
||||
}
|
||||
} catch (Exception error) {
|
||||
logger.severe("TheMovieDb Error: " + error.getMessage());
|
||||
}
|
||||
@@ -169,7 +202,7 @@ public class TheMovieDb {
|
||||
*/
|
||||
public MovieDB moviedbGetInfo(String tmdbID, MovieDB movie, String language) {
|
||||
// If the tmdbID is null, then exit
|
||||
if (tmdbID == null || tmdbID.equals("") || tmdbID.equalsIgnoreCase("UNKNOWN"))
|
||||
if (!isValidString(tmdbID))
|
||||
return movie;
|
||||
|
||||
Document doc = null;
|
||||
@@ -178,8 +211,18 @@ public class TheMovieDb {
|
||||
String searchUrl = buildSearchUrl("Movie.getInfo", tmdbID, validateLanguage(language));
|
||||
|
||||
doc = DOMHelper.getEventDocFromUrl(searchUrl);
|
||||
movie = DOMParser.parseMovieInfo(doc);
|
||||
|
||||
NodeList nlMovies = doc.getElementsByTagName("movie");
|
||||
if (nlMovies == null) {
|
||||
return movie;
|
||||
}
|
||||
|
||||
for (int loop = 0; loop < nlMovies.getLength(); loop++) {
|
||||
Node nMovie = nlMovies.item(loop);
|
||||
if (nMovie.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eMovie = (Element) nMovie;
|
||||
movie = DOMParser.parseMovieInfo(eMovie);
|
||||
}
|
||||
}
|
||||
} catch (Exception error) {
|
||||
logger.severe("TheMovieDb Error: " + error.getMessage());
|
||||
}
|
||||
@@ -201,7 +244,7 @@ public class TheMovieDb {
|
||||
*/
|
||||
public MovieDB moviedbGetImages(String searchTerm, MovieDB movie, String language) {
|
||||
// If the searchTerm is null, then exit
|
||||
if (searchTerm == null || searchTerm.equals("") || searchTerm.equalsIgnoreCase("UNKNOWN"))
|
||||
if (isValidString(searchTerm))
|
||||
return movie;
|
||||
|
||||
Document doc = null;
|
||||
@@ -210,7 +253,18 @@ public class TheMovieDb {
|
||||
String searchUrl = buildSearchUrl("Movie.getImages", searchTerm, validateLanguage(language));
|
||||
|
||||
doc = DOMHelper.getEventDocFromUrl(searchUrl);
|
||||
movie = DOMParser.parseMovieInfo(doc);
|
||||
NodeList nlMovies = doc.getElementsByTagName("movie");
|
||||
if (nlMovies == null) {
|
||||
return movie;
|
||||
}
|
||||
|
||||
for (int loop = 0; loop < nlMovies.getLength(); loop++) {
|
||||
Node nMovie = nlMovies.item(loop);
|
||||
if (nMovie.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element eMovie = (Element) nMovie;
|
||||
movie = DOMParser.parseMovieInfo(eMovie);
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception error) {
|
||||
logger.severe("TheMovieDb Error: " + error.getMessage());
|
||||
@@ -229,7 +283,7 @@ public class TheMovieDb {
|
||||
*/
|
||||
public Person personSearch(String personName, String language) {
|
||||
Person person = new Person();
|
||||
if (personName == null || personName.equals("")) {
|
||||
if (!isValidString(personName)) {
|
||||
return person;
|
||||
}
|
||||
|
||||
@@ -256,7 +310,7 @@ public class TheMovieDb {
|
||||
*/
|
||||
public Person personGetInfo(String personID, String language) {
|
||||
Person person = new Person();
|
||||
if (personID == null || personID.equals("")) {
|
||||
if (!isValidString(personID)) {
|
||||
return person;
|
||||
}
|
||||
|
||||
@@ -284,7 +338,7 @@ public class TheMovieDb {
|
||||
*/
|
||||
public Person personGetVersion(String personID, String language) {
|
||||
Person person = new Person();
|
||||
if (personID == null || personID.equals("")) {
|
||||
if (!isValidString(personID)) {
|
||||
return person;
|
||||
}
|
||||
|
||||
@@ -308,7 +362,7 @@ public class TheMovieDb {
|
||||
* @return
|
||||
*/
|
||||
private String validateLanguage(String language) {
|
||||
if (language == null) {
|
||||
if (!isValidString(language)) {
|
||||
return defaultLanguage;
|
||||
} else {
|
||||
/*
|
||||
@@ -327,4 +381,81 @@ public class TheMovieDb {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the string passed to see if it contains a value.
|
||||
* @param testString The string to test
|
||||
* @return False if the string is empty, null or UNKNOWN, True otherwise
|
||||
*/
|
||||
public static boolean isValidString(String testString) {
|
||||
if (testString == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (testString.equalsIgnoreCase(MovieDB.UNKNOWN)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (testString.trim().equals("")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search a list of movies and return the one that matches the title & year
|
||||
* @param movieList The list of movies to search
|
||||
* @param title The title to search for
|
||||
* @param year The year of the title to search for
|
||||
* @return The matching movie
|
||||
*/
|
||||
public static MovieDB findMovie(Collection<MovieDB> movieList, String title, String year) {
|
||||
if (movieList == null || movieList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
System.out.println("Looking for: " + title + " - Year: " + year);
|
||||
|
||||
for (MovieDB moviedb : movieList) {
|
||||
if (compareMovies(moviedb, title, year)) {
|
||||
System.out.println("Matched: " + moviedb.getTitle());
|
||||
return moviedb;
|
||||
} else {
|
||||
System.out.println("Not Matched: " + moviedb.getTitle() + " - " + moviedb.getReleaseDate());
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare the MovieDB object with a title & year
|
||||
* @param moviedb The moviedb object to compare too
|
||||
* @param title The title of the movie to compare
|
||||
* @param year The year of the movie to compare
|
||||
* @return True if there is a match, False otherwise.
|
||||
*/
|
||||
public static boolean compareMovies(MovieDB moviedb, String title, String year) {
|
||||
if (!isValidString(title)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isValidString(year)) {
|
||||
if (isValidString(moviedb.getReleaseDate())) {
|
||||
// Compare with year
|
||||
String movieYear = moviedb.getReleaseDate().substring(0, 4);
|
||||
logger.fine("Comparing against: " + moviedb.getTitle() + " - " + moviedb.getReleaseDate() + " - " + movieYear);
|
||||
if (moviedb.getTitle().equalsIgnoreCase(title) && movieYear.equals(year)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Compare without year
|
||||
if (moviedb.getTitle().equalsIgnoreCase(title)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,229 +32,212 @@ import com.moviejukebox.themoviedb.model.Studio;
|
||||
public class DOMParser {
|
||||
static Logger logger = TheMovieDb.getLogger();
|
||||
|
||||
public static MovieDB parseMovieInfo(Document doc) {
|
||||
public static MovieDB parseMovieInfo(Element movieElement) {
|
||||
// Inspired by http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html
|
||||
MovieDB movie = null;
|
||||
NodeList movieNodeList, subNodeList;
|
||||
Node movieNode, subNode;
|
||||
Element movieElement, subElement;
|
||||
MovieDB movie = new MovieDB();
|
||||
NodeList subNodeList;
|
||||
Node subNode;
|
||||
Element subElement;
|
||||
|
||||
try {
|
||||
movie = new MovieDB();
|
||||
movieNodeList = doc.getElementsByTagName("movie");
|
||||
movie.setPopularity(DOMHelper.getValueFromElement(movieElement, "popularity"));
|
||||
movie.setTranslated(DOMHelper.getValueFromElement(movieElement, "translated"));
|
||||
movie.setAdult(DOMHelper.getValueFromElement(movieElement, "adult"));
|
||||
movie.setLanguage(DOMHelper.getValueFromElement(movieElement, "language"));
|
||||
movie.setOriginalName(DOMHelper.getValueFromElement(movieElement, "original_name"));
|
||||
movie.setTitle(DOMHelper.getValueFromElement(movieElement, "name"));
|
||||
movie.setAlternativeName(DOMHelper.getValueFromElement(movieElement, "alternative_name"));
|
||||
movie.setType(DOMHelper.getValueFromElement(movieElement, "type"));
|
||||
movie.setId(DOMHelper.getValueFromElement(movieElement, "id"));
|
||||
movie.setImdb(DOMHelper.getValueFromElement(movieElement, "imdb_id"));
|
||||
movie.setUrl(DOMHelper.getValueFromElement(movieElement, "url"));
|
||||
movie.setOverview(DOMHelper.getValueFromElement(movieElement, "overview"));
|
||||
movie.setRating(DOMHelper.getValueFromElement(movieElement, "rating"));
|
||||
movie.setTagline(DOMHelper.getValueFromElement(movieElement, "tagline"));
|
||||
movie.setCertification(DOMHelper.getValueFromElement(movieElement, "certification"));
|
||||
movie.setReleaseDate(DOMHelper.getValueFromElement(movieElement, "released"));
|
||||
movie.setRuntime(DOMHelper.getValueFromElement(movieElement, "runtime"));
|
||||
movie.setBudget(DOMHelper.getValueFromElement(movieElement, "budget"));
|
||||
movie.setRevenue(DOMHelper.getValueFromElement(movieElement, "revenue"));
|
||||
movie.setHomepage(DOMHelper.getValueFromElement(movieElement, "homepage"));
|
||||
movie.setTrailer(DOMHelper.getValueFromElement(movieElement, "trailer"));
|
||||
|
||||
// Only get the first movie from the list
|
||||
movieNode = movieNodeList.item(0);
|
||||
|
||||
if (movieNode == null) {
|
||||
logger.finest("Movie not found");
|
||||
return movie;
|
||||
// Process the "categories"
|
||||
subNodeList = movieElement.getElementsByTagName("categories");
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
NodeList castList = subNode.getChildNodes();
|
||||
for (int i = 0; i < castList.getLength(); i++) {
|
||||
Node personNode = castList.item(i);
|
||||
if (personNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) personNode;
|
||||
Category category = new Category();
|
||||
|
||||
category.setType(subElement.getAttribute("type"));
|
||||
category.setUrl(subElement.getAttribute("url"));
|
||||
category.setName(subElement.getAttribute("name"));
|
||||
category.setId(subElement.getAttribute("id"));
|
||||
|
||||
movie.addCategory(category);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process the "studios"
|
||||
subNodeList = movieElement.getElementsByTagName("studios");
|
||||
|
||||
if (movieNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
movieElement = (Element) movieNode;
|
||||
|
||||
// DOMHelper.getValueFromElement(movieElement, "")
|
||||
|
||||
movie.setPopularity(DOMHelper.getValueFromElement(movieElement, "popularity"));
|
||||
movie.setTranslated(DOMHelper.getValueFromElement(movieElement, "translated"));
|
||||
movie.setAdult(DOMHelper.getValueFromElement(movieElement, "adult"));
|
||||
movie.setLanguage(DOMHelper.getValueFromElement(movieElement, "language"));
|
||||
movie.setOriginalName(DOMHelper.getValueFromElement(movieElement, "original_name"));
|
||||
movie.setTitle(DOMHelper.getValueFromElement(movieElement, "name"));
|
||||
movie.setAlternativeName(DOMHelper.getValueFromElement(movieElement, "alternative_name"));
|
||||
movie.setType(DOMHelper.getValueFromElement(movieElement, "type"));
|
||||
movie.setId(DOMHelper.getValueFromElement(movieElement, "id"));
|
||||
movie.setImdb(DOMHelper.getValueFromElement(movieElement, "imdb_id"));
|
||||
movie.setUrl(DOMHelper.getValueFromElement(movieElement, "url"));
|
||||
movie.setOverview(DOMHelper.getValueFromElement(movieElement, "overview"));
|
||||
movie.setRating(DOMHelper.getValueFromElement(movieElement, "rating"));
|
||||
movie.setTagline(DOMHelper.getValueFromElement(movieElement, "tagline"));
|
||||
movie.setCertification(DOMHelper.getValueFromElement(movieElement, "certification"));
|
||||
movie.setReleaseDate(DOMHelper.getValueFromElement(movieElement, "released"));
|
||||
movie.setRuntime(DOMHelper.getValueFromElement(movieElement, "runtime"));
|
||||
movie.setBudget(DOMHelper.getValueFromElement(movieElement, "budget"));
|
||||
movie.setRevenue(DOMHelper.getValueFromElement(movieElement, "revenue"));
|
||||
movie.setHomepage(DOMHelper.getValueFromElement(movieElement, "homepage"));
|
||||
movie.setTrailer(DOMHelper.getValueFromElement(movieElement, "trailer"));
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
// Process the "categories"
|
||||
subNodeList = doc.getElementsByTagName("categories");
|
||||
NodeList studioList = subNode.getChildNodes();
|
||||
for (int i = 0; i < studioList.getLength(); i++) {
|
||||
Node studioNode = studioList.item(i);
|
||||
if (studioNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) studioNode;
|
||||
Studio studio = new Studio();
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
NodeList castList = subNode.getChildNodes();
|
||||
for (int i = 0; i < castList.getLength(); i++) {
|
||||
Node personNode = castList.item(i);
|
||||
if (personNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) personNode;
|
||||
Category category = new Category();
|
||||
|
||||
category.setType(subElement.getAttribute("type"));
|
||||
category.setUrl(subElement.getAttribute("url"));
|
||||
category.setName(subElement.getAttribute("name"));
|
||||
category.setId(subElement.getAttribute("id"));
|
||||
|
||||
movie.addCategory(category);
|
||||
}
|
||||
studio.setUrl(subElement.getAttribute("url"));
|
||||
studio.setName(subElement.getAttribute("name"));
|
||||
studio.setId(subElement.getAttribute("id"));
|
||||
|
||||
movie.addStudio(studio);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process the "studios"
|
||||
subNodeList = doc.getElementsByTagName("studios");
|
||||
}
|
||||
|
||||
// Process the "countries"
|
||||
subNodeList = movieElement.getElementsByTagName("countries");
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
NodeList studioList = subNode.getChildNodes();
|
||||
for (int i = 0; i < studioList.getLength(); i++) {
|
||||
Node studioNode = studioList.item(i);
|
||||
if (studioNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) studioNode;
|
||||
Studio studio = new Studio();
|
||||
NodeList countryList = subNode.getChildNodes();
|
||||
for (int i = 0; i < countryList.getLength(); i++) {
|
||||
Node countryNode = countryList.item(i);
|
||||
if (countryNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) countryNode;
|
||||
Country country = new Country();
|
||||
|
||||
studio.setUrl(subElement.getAttribute("url"));
|
||||
studio.setName(subElement.getAttribute("name"));
|
||||
studio.setId(subElement.getAttribute("id"));
|
||||
|
||||
movie.addStudio(studio);
|
||||
}
|
||||
country.setName(subElement.getAttribute("name"));
|
||||
country.setCode(subElement.getAttribute("code"));
|
||||
country.setUrl(subElement.getAttribute("url"));
|
||||
|
||||
movie.addProductionCountry(country);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process the "countries"
|
||||
subNodeList = doc.getElementsByTagName("countries");
|
||||
}
|
||||
|
||||
// Process the "cast"
|
||||
subNodeList = movieElement.getElementsByTagName("cast");
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
NodeList countryList = subNode.getChildNodes();
|
||||
for (int i = 0; i < countryList.getLength(); i++) {
|
||||
Node countryNode = countryList.item(i);
|
||||
if (countryNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) countryNode;
|
||||
Country country = new Country();
|
||||
NodeList castList = subNode.getChildNodes();
|
||||
for (int i = 0; i < castList.getLength(); i++) {
|
||||
Node personNode = castList.item(i);
|
||||
if (personNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) personNode;
|
||||
Person person = new Person();
|
||||
|
||||
country.setName(subElement.getAttribute("name"));
|
||||
country.setCode(subElement.getAttribute("code"));
|
||||
country.setUrl(subElement.getAttribute("url"));
|
||||
|
||||
movie.addProductionCountry(country);
|
||||
}
|
||||
person.setName(subElement.getAttribute("name"));
|
||||
person.setCharacter(subElement.getAttribute("character"));
|
||||
person.setJob(subElement.getAttribute("job"));
|
||||
person.setId(subElement.getAttribute("id"));
|
||||
person.addArtwork(Artwork.ARTWORK_TYPE_PERSON,
|
||||
Artwork.ARTWORK_SIZE_THUMB,
|
||||
subElement.getAttribute("thumb"), "-1");
|
||||
person.setDepartment(subElement.getAttribute("department"));
|
||||
person.setUrl(subElement.getAttribute("url"));
|
||||
person.setOrder(subElement.getAttribute("order"));
|
||||
person.setCastId(subElement.getAttribute("cast_id"));
|
||||
|
||||
movie.addPerson(person);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process the "cast"
|
||||
subNodeList = doc.getElementsByTagName("cast");
|
||||
}
|
||||
|
||||
/*
|
||||
* This processes the image elements. There are two formats to deal with:
|
||||
* Movie.imdbLookup, Movie.getInfo & Movie.search:
|
||||
* <images>
|
||||
* <image type="poster" size="original" url="http://images.themoviedb.org/posters/60366/Fight_Club.jpg" id="60366"/>
|
||||
* <image type="backdrop" size="original" url="http://images.themoviedb.org/backdrops/56444/bscap00144.jpg" id="56444"/>
|
||||
* </images>
|
||||
*
|
||||
* Movie.getImages:
|
||||
* <images>
|
||||
* <poster id="17066">
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club.jpg" size="original"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_thumb.jpg" size="thumb"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_cover.jpg" size="cover"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_mid.jpg" size="mid"/>
|
||||
* </poster>
|
||||
* <backdrop id="18593">
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1.jpg" size="original"/>
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1_poster.jpg" size="poster"/>
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1_thumb.jpg" size="thumb"/>
|
||||
* </backdrop>
|
||||
* </images>
|
||||
*/
|
||||
subNodeList = movieElement.getElementsByTagName("images");
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) subNode;
|
||||
|
||||
NodeList castList = subNode.getChildNodes();
|
||||
for (int i = 0; i < castList.getLength(); i++) {
|
||||
Node personNode = castList.item(i);
|
||||
if (personNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) personNode;
|
||||
Person person = new Person();
|
||||
|
||||
person.setName(subElement.getAttribute("name"));
|
||||
person.setCharacter(subElement.getAttribute("character"));
|
||||
person.setJob(subElement.getAttribute("job"));
|
||||
person.setId(subElement.getAttribute("id"));
|
||||
person.addArtwork(Artwork.ARTWORK_TYPE_PERSON,
|
||||
Artwork.ARTWORK_SIZE_THUMB,
|
||||
subElement.getAttribute("thumb"), "-1");
|
||||
person.setDepartment(subElement.getAttribute("department"));
|
||||
person.setUrl(subElement.getAttribute("url"));
|
||||
person.setOrder(subElement.getAttribute("order"));
|
||||
person.setCastId(subElement.getAttribute("cast_id"));
|
||||
|
||||
movie.addPerson(person);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
|
||||
/*
|
||||
* This processes the image elements. There are two formats to deal with:
|
||||
* Movie.imdbLookup, Movie.getInfo & Movie.search:
|
||||
* <images>
|
||||
* <image type="poster" size="original" url="http://images.themoviedb.org/posters/60366/Fight_Club.jpg" id="60366"/>
|
||||
* <image type="backdrop" size="original" url="http://images.themoviedb.org/backdrops/56444/bscap00144.jpg" id="56444"/>
|
||||
* </images>
|
||||
*
|
||||
* Movie.getImages:
|
||||
* <images>
|
||||
* <poster id="17066">
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club.jpg" size="original"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_thumb.jpg" size="thumb"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_cover.jpg" size="cover"/>
|
||||
* <image url="http://images.themoviedb.org/posters/17066/Fight_Club_mid.jpg" size="mid"/>
|
||||
* </poster>
|
||||
* <backdrop id="18593">
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1.jpg" size="original"/>
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1_poster.jpg" size="poster"/>
|
||||
* <image url="http://images.themoviedb.org/backdrops/18593/Fight_Club_on_the_street1_thumb.jpg" size="thumb"/>
|
||||
* </backdrop>
|
||||
* </images>
|
||||
*/
|
||||
subNodeList = doc.getElementsByTagName("images");
|
||||
|
||||
for (int nodeLoop = 0; nodeLoop < subNodeList.getLength(); nodeLoop++) {
|
||||
subNode = subNodeList.item(nodeLoop);
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
|
||||
if (subNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
|
||||
NodeList artworkNodeList = subNode.getChildNodes();
|
||||
for (int artworkLoop = 0; artworkLoop < artworkNodeList.getLength(); artworkLoop++) {
|
||||
Node artworkNode = artworkNodeList.item(artworkLoop);
|
||||
if (artworkNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) artworkNode;
|
||||
NodeList artworkNodeList = subNode.getChildNodes();
|
||||
for (int artworkLoop = 0; artworkLoop < artworkNodeList.getLength(); artworkLoop++) {
|
||||
Node artworkNode = artworkNodeList.item(artworkLoop);
|
||||
if (artworkNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
subElement = (Element) artworkNode;
|
||||
|
||||
if (subElement.getNodeName().equalsIgnoreCase("image")) {
|
||||
// This is the format used in Movie.imdbLookup, Movie.getInfo & Movie.search
|
||||
Artwork artwork = new Artwork();
|
||||
artwork.setType(subElement.getAttribute("type"));
|
||||
artwork.setSize(subElement.getAttribute("size"));
|
||||
artwork.setUrl(subElement.getAttribute("url"));
|
||||
artwork.setId(subElement.getAttribute("id"));
|
||||
movie.addArtwork(artwork);
|
||||
} else if (subElement.getNodeName().equalsIgnoreCase("backdrop") ||
|
||||
subElement.getNodeName().equalsIgnoreCase("poster")) {
|
||||
// This is the format used in Movie.getImages
|
||||
String artworkId = subElement.getAttribute("id");
|
||||
String artworkType = subElement.getNodeName();
|
||||
|
||||
// We need to decode and loop round the child nodes to get the data
|
||||
NodeList imageNodeList = subElement.getChildNodes();
|
||||
for (int imageLoop = 0; imageLoop < imageNodeList.getLength(); imageLoop++) {
|
||||
Node imageNode = imageNodeList.item(imageLoop);
|
||||
if (imageNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element imageElement = (Element) imageNode;
|
||||
Artwork artwork = new Artwork();
|
||||
artwork.setId(artworkId);
|
||||
artwork.setType(artworkType);
|
||||
artwork.setUrl(imageElement.getAttribute("url"));
|
||||
artwork.setSize(imageElement.getAttribute("size"));
|
||||
movie.addArtwork(artwork);
|
||||
}
|
||||
if (subElement.getNodeName().equalsIgnoreCase("image")) {
|
||||
// This is the format used in Movie.imdbLookup, Movie.getInfo & Movie.search
|
||||
Artwork artwork = new Artwork();
|
||||
artwork.setType(subElement.getAttribute("type"));
|
||||
artwork.setSize(subElement.getAttribute("size"));
|
||||
artwork.setUrl(subElement.getAttribute("url"));
|
||||
artwork.setId(subElement.getAttribute("id"));
|
||||
movie.addArtwork(artwork);
|
||||
} else if (subElement.getNodeName().equalsIgnoreCase("backdrop") ||
|
||||
subElement.getNodeName().equalsIgnoreCase("poster")) {
|
||||
// This is the format used in Movie.getImages
|
||||
String artworkId = subElement.getAttribute("id");
|
||||
String artworkType = subElement.getNodeName();
|
||||
|
||||
// We need to decode and loop round the child nodes to get the data
|
||||
NodeList imageNodeList = subElement.getChildNodes();
|
||||
for (int imageLoop = 0; imageLoop < imageNodeList.getLength(); imageLoop++) {
|
||||
Node imageNode = imageNodeList.item(imageLoop);
|
||||
if (imageNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||
Element imageElement = (Element) imageNode;
|
||||
Artwork artwork = new Artwork();
|
||||
artwork.setId(artworkId);
|
||||
artwork.setType(artworkType);
|
||||
artwork.setUrl(imageElement.getAttribute("url"));
|
||||
artwork.setSize(imageElement.getAttribute("size"));
|
||||
movie.addArtwork(artwork);
|
||||
}
|
||||
} else {
|
||||
// This is a classic, it should never happen error
|
||||
logger.severe("UNKNOWN Image type: " + subElement.getNodeName());
|
||||
}
|
||||
} else {
|
||||
// This is a classic, it should never happen error
|
||||
logger.severe("UNKNOWN Image type: " + subElement.getNodeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user