From a26192e6d2cd6b95bc76ccea901b77906de83aff Mon Sep 17 00:00:00 2001 From: Mohammed Le Doze Date: Wed, 13 Oct 2010 09:49:31 +0000 Subject: [PATCH] added getCategories in TheMovieDb to retrieve the list of genres --- .../moviejukebox/themoviedb/TheMovieDb.java | 19 +++++++++++++ .../themoviedb/tools/DOMParser.java | 28 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java b/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java index e2141cbe8..6785076d2 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java @@ -58,6 +58,7 @@ public class TheMovieDb { private static final String PERSON_GET_VERSION = "Person.getVersion"; private static final String PERSON_GET_INFO = "Person.getInfo"; private static final String PERSON_SEARCH = "Person.search"; + private static final String GENRES_GET_LIST = "Genres.getList"; public TheMovieDb(String apiKey) { setLogger(Logger.getLogger("TheMovieDB")); @@ -400,6 +401,24 @@ public class TheMovieDb { return person; } + /** + * Retrieve a list of valid genres within TMDb. + * @param language the two digit language code. E.g. en=English + * @return + */ + public List getCategories(String language) { + List categories = new ArrayList(); + Document doc = null; + String url = this.buildSearchUrl(GENRES_GET_LIST, "", language); + try { + doc = DOMHelper.getEventDocFromUrl(url); + categories = DOMParser.parseCategories(doc); + } catch (Exception error) { + logger.severe("Get categories error: " + error.getMessage()); + } + + return categories; + } /** * Search a list of movies and return the one that matches the title & year diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java b/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java index e1555c877..2bb76da98 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java @@ -374,4 +374,32 @@ public class DOMParser { } return movie; } + + /** + * Retrieve a list of valid genres within TMDb. + * @param doc a DOM document + * @return + */ + public static List parseCategories(Document doc) { + List categories = new ArrayList(); + NodeList genres = doc.getElementsByTagName("genres"); + if( (genres == null) || genres.getLength() == 0) { + return categories; + } + + for (int i= 0; i < genres.getLength(); i++) { + Node node = genres.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element element = (Element) node; + Category category = new Category(); + category.setId(element.getAttribute("id")); + category.setName(DOMHelper.getValueFromElement(element, "name")); + category.setType(DOMHelper.getValueFromElement(element, "type")); + category.setUrl(DOMHelper.getValueFromElement(element, "url")); + categories.add(category); + } + } + + return categories; + } }