commit
f7d441468a
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi;
|
||||
|
||||
import com.omertron.themoviedbapi.model.movie.MovieDb;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Compare various objects to see if the are logically the same.
|
||||
*
|
||||
* Allows for some variance of the details
|
||||
*
|
||||
* @author Stuart.Boston
|
||||
*/
|
||||
public class Compare {
|
||||
|
||||
// Constants
|
||||
private static final int YEAR_LENGTH = 4;
|
||||
|
||||
private Compare() {
|
||||
throw new UnsupportedOperationException("Utility class");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 exact match
|
||||
* @return True if there is a match, False otherwise.
|
||||
*/
|
||||
public static boolean movies(final MovieDb moviedb, final String title, final String year) {
|
||||
return movies(moviedb, title, year, 0, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param maxDistance The Levenshtein Distance between the two titles. 0 =
|
||||
* exact match
|
||||
* @param caseSensitive true if the comparison is to be case sensitive
|
||||
* @return True if there is a match, False otherwise.
|
||||
*/
|
||||
public static boolean movies(final MovieDb moviedb, final String title, final String year, int maxDistance, boolean caseSensitive) {
|
||||
if ((moviedb == null) || (StringUtils.isBlank(title))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String primaryTitle, firstCompareTitle, secondCompareTitle;
|
||||
if (caseSensitive) {
|
||||
primaryTitle = title;
|
||||
firstCompareTitle = moviedb.getOriginalTitle();
|
||||
secondCompareTitle = moviedb.getTitle();
|
||||
} else {
|
||||
primaryTitle = title.toLowerCase();
|
||||
firstCompareTitle = moviedb.getTitle().toLowerCase();
|
||||
secondCompareTitle = moviedb.getOriginalTitle().toLowerCase();
|
||||
}
|
||||
|
||||
if (isValidYear(year) && isValidYear(moviedb.getReleaseDate())) {
|
||||
// Compare with year
|
||||
String movieYear = moviedb.getReleaseDate().substring(0, YEAR_LENGTH);
|
||||
return movieYear.equals(year) && compareTitles(primaryTitle, firstCompareTitle, secondCompareTitle, maxDistance);
|
||||
}
|
||||
|
||||
// Compare without year
|
||||
return compareTitles(primaryTitle, firstCompareTitle, secondCompareTitle, maxDistance);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare a title with two other titles.
|
||||
*
|
||||
* @param primaryTitle Primary title
|
||||
* @param firstCompareTitle First title to compare with
|
||||
* @param secondCompareTitle Second title to compare with
|
||||
* @param maxDistance Maximum difference between the titles
|
||||
* @return
|
||||
*/
|
||||
private static boolean compareTitles(String primaryTitle, String firstCompareTitle, String secondCompareTitle, int maxDistance) {
|
||||
// Compare with the first title
|
||||
if (compareDistance(primaryTitle, firstCompareTitle, maxDistance)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Compare with the other title
|
||||
return compareDistance(primaryTitle, secondCompareTitle, maxDistance);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare the MovieDB object with a title & year, case sensitive
|
||||
*
|
||||
* @param moviedb
|
||||
* @param title
|
||||
* @param year
|
||||
* @param maxDistance
|
||||
* @return
|
||||
*/
|
||||
public static boolean movies(final MovieDb moviedb, final String title, final String year, int maxDistance) {
|
||||
return Compare.movies(moviedb, title, year, maxDistance, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare the Levenshtein Distance between the two strings
|
||||
*
|
||||
* @param title1
|
||||
* @param title2
|
||||
* @param distance
|
||||
*/
|
||||
private static boolean compareDistance(final String title1, final String title2, int distance) {
|
||||
return StringUtils.getLevenshteinDistance(title1, title2) <= distance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the year is not blank or UNKNOWN
|
||||
*
|
||||
* @param year
|
||||
*/
|
||||
private static boolean isValidYear(final String year) {
|
||||
return StringUtils.isNotBlank(year) && !"UNKNOWN".equals(year);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.enumeration;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* ArtworkType enum List of the artwork types that are available
|
||||
*/
|
||||
public enum ArtworkType {
|
||||
|
||||
/**
|
||||
* Poster artwork
|
||||
*/
|
||||
POSTER,
|
||||
/**
|
||||
* Fanart/backdrop
|
||||
*/
|
||||
BACKDROP,
|
||||
/**
|
||||
* Person image
|
||||
*/
|
||||
PROFILE,
|
||||
/**
|
||||
* Still (Video image)
|
||||
*/
|
||||
STILL;
|
||||
|
||||
/**
|
||||
* Convert a string into an Enum type
|
||||
*
|
||||
* @param artworkType
|
||||
* @return
|
||||
* @throws IllegalArgumentException If type is not recognised
|
||||
*
|
||||
*/
|
||||
public static ArtworkType fromString(String artworkType) {
|
||||
if (StringUtils.isNotBlank(artworkType)) {
|
||||
try {
|
||||
return ArtworkType.valueOf(artworkType.trim().toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new IllegalArgumentException("ArtworkType " + artworkType + " does not exist.", ex);
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("ArtworkType must not be null");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.enumeration;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public enum ExternalSource {
|
||||
|
||||
FREEBASE_ID,
|
||||
FREEBASE_MID,
|
||||
IMDB_ID,
|
||||
TVDB_ID,
|
||||
TVRAGE_ID;
|
||||
|
||||
public String getPropertyString() {
|
||||
return this.name().toLowerCase();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.enumeration;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Media type options
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public enum MediaType {
|
||||
|
||||
/**
|
||||
* Movie media type
|
||||
*/
|
||||
MOVIE,
|
||||
/**
|
||||
* TV Show media type
|
||||
*/
|
||||
TV,
|
||||
/**
|
||||
* TV Episode media type
|
||||
*/
|
||||
EPISODE;
|
||||
|
||||
/**
|
||||
* Convert a string into an Enum type
|
||||
*
|
||||
* @param mediaType
|
||||
* @return
|
||||
* @throws IllegalArgumentException If type is not recognised
|
||||
*
|
||||
*/
|
||||
public static MediaType fromString(String mediaType) {
|
||||
if (StringUtils.isNotBlank(mediaType)) {
|
||||
try {
|
||||
return MediaType.valueOf(mediaType.trim().toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
throw new IllegalArgumentException("MediaType " + mediaType + " does not exist.", ex);
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("MediaType must not be null");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.enumeration;
|
||||
|
||||
public enum SortBy {
|
||||
|
||||
CREATED_AT_ASC,
|
||||
CREATED_AT_DESC,
|
||||
POPULARITY_ASC,
|
||||
POPULARITY_DESC,
|
||||
RELEASE_DATE_ASC,
|
||||
RELEASE_DATE_DESC,
|
||||
REVENUE_ASC,
|
||||
REVENUE_DESC,
|
||||
PRIMARY_RELEASE_DATE_ASC,
|
||||
PRIMARY_RELEASE_DATE_DESC,
|
||||
ORIGINAL_TITLE_ASC,
|
||||
ORIGINAL_TITLE_DESC,
|
||||
VOTE_AVERAGE_ASC,
|
||||
VOTE_AVERAGE_DESC,
|
||||
VOTE_COUNT_ASC,
|
||||
VOTE_COUNT_DESC;
|
||||
|
||||
public String getPropertyString() {
|
||||
return this.name().toLowerCase().replace("_asc", ".asc").replaceAll("_desc", ".desc");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,159 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.artwork.ArtworkMedia;
|
||||
import com.omertron.themoviedbapi.model.change.ChangeListItem;
|
||||
import com.omertron.themoviedbapi.model.collection.Collection;
|
||||
import com.omertron.themoviedbapi.model.company.Company;
|
||||
import com.omertron.themoviedbapi.model.keyword.Keyword;
|
||||
import com.omertron.themoviedbapi.model.list.UserList;
|
||||
import com.omertron.themoviedbapi.model.media.AlternativeTitle;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieDb;
|
||||
import com.omertron.themoviedbapi.model.person.ContentRating;
|
||||
import com.omertron.themoviedbapi.model.person.Person;
|
||||
import com.omertron.themoviedbapi.model.person.PersonFind;
|
||||
import com.omertron.themoviedbapi.model.review.Review;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVInfo;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenericList;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Abstract methods
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public class AbstractMethod {
|
||||
|
||||
// The API key to be used
|
||||
protected final String apiKey;
|
||||
// The HttpTools to use
|
||||
protected final HttpTools httpTools;
|
||||
// Jackson JSON configuration
|
||||
protected static final ObjectMapper MAPPER = new ObjectMapper();
|
||||
private static final Map<Class, TypeReference> TYPE_REFS = new HashMap<Class, TypeReference>();
|
||||
|
||||
static {
|
||||
TYPE_REFS.put(MovieBasic.class, new TypeReference<WrapperGenericList<MovieBasic>>() {
|
||||
});
|
||||
TYPE_REFS.put(TVBasic.class, new TypeReference<WrapperGenericList<TVBasic>>() {
|
||||
});
|
||||
TYPE_REFS.put(UserList.class, new TypeReference<WrapperGenericList<UserList>>() {
|
||||
});
|
||||
TYPE_REFS.put(Company.class, new TypeReference<WrapperGenericList<Company>>() {
|
||||
});
|
||||
TYPE_REFS.put(Collection.class, new TypeReference<WrapperGenericList<Collection>>() {
|
||||
});
|
||||
TYPE_REFS.put(Keyword.class, new TypeReference<WrapperGenericList<Keyword>>() {
|
||||
});
|
||||
TYPE_REFS.put(MovieDb.class, new TypeReference<WrapperGenericList<MovieDb>>() {
|
||||
});
|
||||
TYPE_REFS.put(Person.class, new TypeReference<WrapperGenericList<Person>>() {
|
||||
});
|
||||
TYPE_REFS.put(PersonFind.class, new TypeReference<WrapperGenericList<PersonFind>>() {
|
||||
});
|
||||
TYPE_REFS.put(Review.class, new TypeReference<WrapperGenericList<Review>>() {
|
||||
});
|
||||
TYPE_REFS.put(ChangeListItem.class, new TypeReference<WrapperGenericList<ChangeListItem>>() {
|
||||
});
|
||||
TYPE_REFS.put(ArtworkMedia.class, new TypeReference<WrapperGenericList<ArtworkMedia>>() {
|
||||
});
|
||||
TYPE_REFS.put(ContentRating.class, new TypeReference<WrapperGenericList<ContentRating>>() {
|
||||
});
|
||||
TYPE_REFS.put(TVInfo.class, new TypeReference<WrapperGenericList<TVInfo>>() {
|
||||
});
|
||||
TYPE_REFS.put(AlternativeTitle.class, new TypeReference<WrapperGenericList<AlternativeTitle>>() {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor for the methods
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public AbstractMethod(String apiKey, HttpTools httpTools) {
|
||||
this.apiKey = apiKey;
|
||||
this.httpTools = httpTools;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to get a pre-generated TypeReference for a class
|
||||
*
|
||||
* @param aClass
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
protected static TypeReference getTypeReference(Class aClass) throws MovieDbException {
|
||||
if (TYPE_REFS.containsKey(aClass)) {
|
||||
return TYPE_REFS.get(aClass);
|
||||
} else {
|
||||
throw new MovieDbException(ApiExceptionType.UNKNOWN_CAUSE, "Class type reference for '" + aClass.getSimpleName() + "' not found!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the wrapper list and return the results
|
||||
*
|
||||
* @param <T> Type of list to process
|
||||
* @param typeRef
|
||||
* @param url URL of the page (Error output only)
|
||||
* @param errorMessageSuffix Error message to output (Error output only)
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
protected <T> List<T> processWrapperList(TypeReference typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
|
||||
WrapperGenericList<T> val = processWrapper(typeRef, url, errorMessageSuffix);
|
||||
return val.getResults();
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the wrapper list and return the whole wrapper
|
||||
*
|
||||
* @param <T> Type of list to process
|
||||
* @param typeRef
|
||||
* @param url URL of the page (Error output only)
|
||||
* @param errorMessageSuffix Error message to output (Error output only)
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
protected <T> WrapperGenericList<T> processWrapper(TypeReference typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
|
||||
String webpage = httpTools.getRequest(url);
|
||||
try {
|
||||
// Due to type erasure, this doesn't work
|
||||
// TypeReference<WrapperGenericList<T>> typeRef = new TypeReference<WrapperGenericList<T>>() {};
|
||||
return MAPPER.readValue(webpage, typeRef);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get " + errorMessageSuffix, url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,318 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.enumeration.MediaType;
|
||||
import com.omertron.themoviedbapi.enumeration.SortBy;
|
||||
import com.omertron.themoviedbapi.model.StatusCode;
|
||||
import com.omertron.themoviedbapi.model.account.Account;
|
||||
import com.omertron.themoviedbapi.model.list.UserList;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.PostBody;
|
||||
import com.omertron.themoviedbapi.tools.PostTools;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Account Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbAccount extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbAccount(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the basic information for an account. You will need to have a valid
|
||||
* session id.
|
||||
*
|
||||
* @param sessionId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Account getAccount(String sessionId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Account.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get Account", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all lists of a given user
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @return The lists
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<UserList> getUserLists(String sessionId, int accountId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.LISTS).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(UserList.class), url, "user list");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of favorite movies for an account.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getFavoriteMovies(String sessionId, int accountId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.FAVORITE_MOVIES).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, "favorite movies");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of favorite TV series for an account.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<TVBasic> getFavoriteTv(String sessionId, int accountId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.FAVORITE_TV).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(TVBasic.class), url, "favorite TV shows");
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or remove a movie to an accounts favorite list.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param mediaType
|
||||
* @param mediaId
|
||||
* @param setFavorite
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode modifyFavoriteStatus(String sessionId, int accountId, MediaType mediaType, int mediaId, boolean setFavorite) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.MEDIA_TYPE, mediaType.toString().toLowerCase())
|
||||
.add(PostBody.MEDIA_ID, mediaId)
|
||||
.add(PostBody.FAVORITE, setFavorite)
|
||||
.build();
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.FAVORITE).buildUrl(parameters);
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to set favorite status", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of rated movies (and associated rating) for an account.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param page
|
||||
* @param sortBy
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getRatedMovies(String sessionId, int accountId, Integer page, String sortBy, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.SORT_BY, sortBy);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.RATED_MOVIES).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, "rated movies");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of rated TV shows (and associated rating) for an account.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param page
|
||||
* @param sortBy
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<TVBasic> getRatedTV(String sessionId, int accountId, Integer page, String sortBy, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.SORT_BY, sortBy);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.RATED_TV).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(TVBasic.class), url, "rated TV shows");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of movies on an accounts watch list.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param page
|
||||
* @param sortBy
|
||||
* @param language
|
||||
* @return The watch list of the user
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getWatchListMovie(String sessionId, int accountId, Integer page, String sortBy, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.SORT_BY, sortBy);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.WATCHLIST_MOVIES).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, "movie watch list");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of movies on an accounts watch list.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param page
|
||||
* @param sortBy
|
||||
* @param language
|
||||
* @return The watch list of the user
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<TVBasic> getWatchListTV(String sessionId, int accountId, Integer page, String sortBy, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.SORT_BY, sortBy);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.WATCHLIST_TV).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(TVBasic.class), url, "TV watch list");
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or remove a movie to an accounts watch list.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param accountId
|
||||
* @param movieId
|
||||
* @param mediaType
|
||||
* @param addToWatchlist
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode modifyWatchList(String sessionId, int accountId, MediaType mediaType, Integer movieId, boolean addToWatchlist) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, accountId);
|
||||
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.MEDIA_TYPE, mediaType.toString().toLowerCase())
|
||||
.add(PostBody.MEDIA_ID, movieId)
|
||||
.add(PostBody.WATCHLIST, addToWatchlist)
|
||||
.build();
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.ACCOUNT).subMethod(MethodSub.WATCHLIST).buildUrl(parameters);
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to modify watch list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of rated movies for a specific guest session id.
|
||||
*
|
||||
* @param guestSessionId
|
||||
* @param language
|
||||
* @param page
|
||||
* @param sortBy only CREATED_AT_ASC or CREATED_AT_DESC is supported
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getGuestRatedMovies(String guestSessionId, String language, Integer page, SortBy sortBy) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, guestSessionId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.PAGE, page);
|
||||
if (sortBy != null) {
|
||||
// Only created_at is supported
|
||||
parameters.add(Param.SORT_BY, "created_at");
|
||||
|
||||
if (sortBy.getPropertyString().endsWith("asc")) {
|
||||
parameters.add(Param.SORT_ORDER, "asc");
|
||||
} else {
|
||||
parameters.add(Param.SORT_ORDER, "desc");
|
||||
}
|
||||
}
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.GUEST_SESSION).subMethod(MethodSub.RATED_MOVIES_GUEST).buildUrl(parameters);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, "Guest Session Movies");
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,160 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.authentication.TokenAuthorisation;
|
||||
import com.omertron.themoviedbapi.model.authentication.TokenSession;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Authentication Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbAuthentication extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbAuthentication(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to generate a valid request token for user based authentication.
|
||||
*
|
||||
* A request token is required in order to request a session id.
|
||||
*
|
||||
* You can generate any number of request tokens but they will expire after 60 minutes.
|
||||
*
|
||||
* As soon as a valid session id has been created the token will be destroyed.
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TokenAuthorisation getAuthorisationToken() throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
URL url = new ApiUrl(apiKey, MethodBase.AUTH).subMethod(MethodSub.TOKEN_NEW).buildUrl(parameters);
|
||||
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TokenAuthorisation.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.AUTH_FAILURE, "Failed to get Authorisation Token", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to generate a session id for user based authentication.
|
||||
*
|
||||
* A session id is required in order to use any of the write methods.
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TokenSession getSessionToken(TokenAuthorisation token) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
|
||||
if (!token.getSuccess()) {
|
||||
throw new MovieDbException(ApiExceptionType.AUTH_FAILURE, "Authorisation token was not successful!");
|
||||
}
|
||||
|
||||
parameters.add(Param.TOKEN, token.getRequestToken());
|
||||
URL url = new ApiUrl(apiKey, MethodBase.AUTH).subMethod(MethodSub.SESSION_NEW).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TokenSession.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get Session Token", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to generate a session id for user based authentication. User must provide their username and password
|
||||
*
|
||||
* A session id is required in order to use any of the write methods.
|
||||
*
|
||||
* @param token Session token
|
||||
* @param username User's username
|
||||
* @param password User's password
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TokenAuthorisation getSessionTokenLogin(TokenAuthorisation token, String username, String password) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
|
||||
if (!token.getSuccess()) {
|
||||
throw new MovieDbException(ApiExceptionType.AUTH_FAILURE, "Authorisation token was not successful!");
|
||||
}
|
||||
|
||||
parameters.add(Param.TOKEN, token.getRequestToken());
|
||||
parameters.add(Param.USERNAME, username);
|
||||
parameters.add(Param.PASSWORD, password);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.AUTH).subMethod(MethodSub.TOKEN_VALIDATE).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TokenAuthorisation.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get Session Token", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to generate a guest session id.
|
||||
*
|
||||
* A guest session can be used to rate movies without having a registered TMDb user account.
|
||||
*
|
||||
* You should only generate a single guest session per user (or device) as you will be able to attach the ratings to a TMDb user
|
||||
* account in the future.
|
||||
*
|
||||
* There are also IP limits in place so you should always make sure it's the end user doing the guest session actions.
|
||||
*
|
||||
* If a guest session is not used for the first time within 24 hours, it will be automatically discarded.
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TokenSession getGuestSessionToken() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.AUTH).subMethod(MethodSub.GUEST_SESSION).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TokenSession.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get Guest Session Token", url, ex);
|
||||
}
|
||||
}}
|
||||
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsMap;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.omertron.themoviedbapi.model.Certification;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Map;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Certification Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbCertifications extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbCertifications(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of movies certification.
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsMap<String, List<Certification>> getMoviesCertification() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.CERTIFICATION).subMethod(MethodSub.MOVIE_LIST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
JsonNode node = MAPPER.readTree(webpage);
|
||||
Map<String, List<Certification>> results = MAPPER.readValue(node.elements().next().traverse(), new TypeReference<Map<String, List<Certification>>>() {
|
||||
});
|
||||
return new TmdbResultsMap<String, List<Certification>>(results);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get movie certifications", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of tv certification.
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsMap<String, List<Certification>> getTvCertification() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.CERTIFICATION).subMethod(MethodSub.TV_LIST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
JsonNode node = MAPPER.readTree(webpage);
|
||||
Map<String, List<Certification>> results = MAPPER.readValue(node.elements().next().traverse(), new TypeReference<Map<String, List<Certification>>>() {
|
||||
});
|
||||
return new TmdbResultsMap<String, List<Certification>>(results);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get TV certifications", url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.change.ChangeListItem;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Class to hold the Change Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbChanges extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbChanges(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of Media IDs that have been edited.
|
||||
*
|
||||
* You can then use the movie/TV/person changes API to get the actual data
|
||||
* that has been changed.
|
||||
*
|
||||
* @param method The method base to get
|
||||
* @param page
|
||||
* @param startDate the start date of the changes, optional
|
||||
* @param endDate the end date of the changes, optional
|
||||
* @return List of changed movie
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<ChangeListItem> getChangeList(MethodBase method, Integer page, String startDate, String endDate) throws MovieDbException {
|
||||
TmdbParameters params = new TmdbParameters();
|
||||
params.add(Param.PAGE, page);
|
||||
params.add(Param.START_DATE, startDate);
|
||||
params.add(Param.END_DATE, endDate);
|
||||
|
||||
URL url = new ApiUrl(apiKey, method).subMethod(MethodSub.CHANGES).buildUrl(params);
|
||||
return processWrapperList(getTypeReference(ChangeListItem.class), url, "changes");
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.artwork.Artwork;
|
||||
import com.omertron.themoviedbapi.enumeration.ArtworkType;
|
||||
import com.omertron.themoviedbapi.model.collection.CollectionInfo;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperImages;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Collections Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbCollections extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbCollections(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to retrieve all of the basic information about a
|
||||
* movie collection.
|
||||
*
|
||||
* You can get the ID needed for this method by making a getMovieInfo
|
||||
* request for the belongs_to_collection.
|
||||
*
|
||||
* @param collectionId
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public CollectionInfo getCollectionInfo(int collectionId, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, collectionId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.COLLECTION).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, CollectionInfo.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get collection information", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all of the images for a particular collection by collection id.
|
||||
*
|
||||
* @param collectionId
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Artwork> getCollectionImages(int collectionId, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, collectionId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.COLLECTION).subMethod(MethodSub.IMAGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperImages wrapper = MAPPER.readValue(webpage, WrapperImages.class);
|
||||
TmdbResultsList<Artwork> results = new TmdbResultsList<Artwork>(wrapper.getAll(ArtworkType.POSTER, ArtworkType.BACKDROP));
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get collection images", url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.company.Company;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Company Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbCompanies extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbCompanies(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to retrieve the basic information about a production company on TMDb.
|
||||
*
|
||||
* @param companyId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Company getCompanyInfo(int companyId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, companyId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.COMPANY).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Company.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get company information", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to retrieve the movies associated with a company.
|
||||
*
|
||||
* These movies are returned in order of most recently released to oldest. The default response will return 20 movies per page.
|
||||
*
|
||||
* @param companyId
|
||||
* @param language
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getCompanyMovies(int companyId, String language, Integer page) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, companyId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.PAGE, page);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.COMPANY).subMethod(MethodSub.MOVIES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, webpage);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,135 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.config.Configuration;
|
||||
import com.omertron.themoviedbapi.model.config.JobDepartment;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperConfig;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperJobList;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Configuration Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbConfiguration extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Cache the configuration in memory<br/>
|
||||
* It rarely changes, so this should be safe.
|
||||
*/
|
||||
private static Configuration config = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbConfiguration(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the configuration<br/>
|
||||
* If the configuration has been previously retrieved, use that instead
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Configuration getConfig() throws MovieDbException {
|
||||
if (config == null) {
|
||||
URL configUrl = new ApiUrl(apiKey, MethodBase.CONFIGURATION).buildUrl();
|
||||
String webpage = httpTools.getRequest(configUrl);
|
||||
|
||||
try {
|
||||
WrapperConfig wc = MAPPER.readValue(webpage, WrapperConfig.class);
|
||||
config = wc.getTmdbConfiguration();
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to read configuration", configUrl, ex);
|
||||
}
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of valid jobs
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<JobDepartment> getJobs() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.JOB).subMethod(MethodSub.LIST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperJobList wrapper = MAPPER.readValue(webpage, WrapperJobList.class);
|
||||
TmdbResultsList<JobDepartment> results = new TmdbResultsList<JobDepartment>(wrapper.getJobs());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get job list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of supported timezones for the API methods that support them
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Map<String, List<String>> getTimezones() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TIMEZONES).subMethod(MethodSub.LIST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
List<Map<String, List<String>>> tzList;
|
||||
try {
|
||||
tzList = MAPPER.readValue(webpage, new TypeReference<List<Map<String, List<String>>>>() {
|
||||
});
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get timezone list", url, ex);
|
||||
}
|
||||
|
||||
Map<String, List<String>> timezones = new HashMap<String, List<String>>();
|
||||
|
||||
for (Map<String, List<String>> tzMap : tzList) {
|
||||
for (Map.Entry<String, List<String>> x : tzMap.entrySet()) {
|
||||
timezones.put(x.getKey(), x.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
return timezones;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.person.CreditInfo;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Credit Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbCredits extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbCredits(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the detailed information about a particular credit record.
|
||||
* <p>
|
||||
* This is currently only supported with the new credit model found in TV.
|
||||
* <br/>
|
||||
* These IDs can be found from any TV credit response as well as the
|
||||
* TV_credits and combined_credits methods for people. <br/>
|
||||
* The episodes object returns a list of episodes and are generally going to
|
||||
* be guest stars. <br/>
|
||||
* The season array will return a list of season numbers. <br/>
|
||||
* Season credits are credits that were marked with the "add to every
|
||||
* season" option in the editing interface and are assumed to be "season
|
||||
* regulars".
|
||||
*
|
||||
* @param creditId
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public CreditInfo getCreditInfo(String creditId, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, creditId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.CREDIT).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, CreditInfo.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get credit info", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.discover.Discover;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Class to hold the Discover Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbDiscover extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbDiscover(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Discover movies by different types of data like average rating, number of votes, genres and certifications.
|
||||
*
|
||||
* @param discover A discover object containing the search criteria required
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getDiscoverMovies(Discover discover) throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.DISCOVER).subMethod(MethodSub.MOVIE).buildUrl(discover.getParams());
|
||||
String webpage = httpTools.getRequest(url);
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, webpage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Discover movies by different types of data like average rating, number of votes, genres and certifications.
|
||||
*
|
||||
* @param discover A discover object containing the search criteria required
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<TVBasic> getDiscoverTV(Discover discover) throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.DISCOVER).subMethod(MethodSub.TV).buildUrl(discover.getParams());
|
||||
String webpage = httpTools.getRequest(url);
|
||||
return processWrapperList(getTypeReference(TVBasic.class), url, webpage);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.enumeration.ExternalSource;
|
||||
import com.omertron.themoviedbapi.model.FindResults;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Find Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbFind extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbFind(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* You con use this method to find movies, tv series or persons using external ids.
|
||||
*
|
||||
* Supported query ids are
|
||||
* <ul>
|
||||
* <li>Movies: imdb_id</li>
|
||||
* <li>People: imdb_id, freebase_mid, freebase_id, tvrage_id</li>
|
||||
* <li>TV Series: imdb_id, freebase_mid, freebase_id, tvdb_id, tvrage_id</li>
|
||||
* <li>TV Seasons: freebase_mid, freebase_id, tvdb_id, tvrage_id</li>
|
||||
* <li>TV Episodes: imdb_id, freebase_mid, freebase_id, tvdb_id, tvrage_idimdb_id, freebase_mid, freebase_id, tvrage_id,
|
||||
* tvdb_id.
|
||||
* </ul>
|
||||
*
|
||||
* For details see http://docs.themoviedb.apiary.io/#find
|
||||
*
|
||||
* @param id the external id
|
||||
* @param externalSource one of {@link ExternalSource}.
|
||||
* @param language the language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public FindResults find(String id, ExternalSource externalSource, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, id);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.EXTERNAL_SOURCE, externalSource.getPropertyString());
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.FIND).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, FindResults.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get find results", url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,127 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.Genre;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenres;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Genre Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbGenres extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbGenres(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of movie genres.
|
||||
*
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Genre> getGenreMovieList(String language) throws MovieDbException {
|
||||
return getGenreList(language, MethodSub.MOVIE_LIST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of TV genres.
|
||||
*
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Genre> getGenreTVList(String language) throws MovieDbException {
|
||||
return getGenreList(language, MethodSub.TV_LIST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of genres for movies or TV
|
||||
* @param language
|
||||
* @param sub
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
private TmdbResultsList<Genre> getGenreList(String language, MethodSub sub) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.GENRE).subMethod(sub).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperGenres wrapper = MAPPER.readValue(webpage, WrapperGenres.class);
|
||||
TmdbResultsList<Genre> results = new TmdbResultsList<Genre>(wrapper.getGenres());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get genre " + sub.toString(), url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of movies for a particular genre by id.
|
||||
*
|
||||
* By default, only movies with 10 or more votes are included.
|
||||
*
|
||||
* @param genreId
|
||||
* @param language
|
||||
* @param page
|
||||
* @param includeAllMovies
|
||||
* @param includeAdult
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public List<MovieBasic> getGenreMovies(int genreId, String language, Integer page, Boolean includeAllMovies, Boolean includeAdult) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, genreId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.INCLUDE_ALL_MOVIES, includeAllMovies);
|
||||
parameters.add(Param.INCLUDE_ADULT, includeAdult);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.GENRE).subMethod(MethodSub.MOVIES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
return processWrapperList(getTypeReference(MovieBasic.class), url, webpage);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.keyword.Keyword;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenericList;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Keyword Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbKeywords extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbKeywords(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the basic information for a specific keyword id.
|
||||
*
|
||||
* @param keywordId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Keyword getKeyword(String keywordId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, keywordId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.KEYWORD).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Keyword.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get keyword " + keywordId, url, ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of movies for a particular keyword by id.
|
||||
*
|
||||
* @param keywordId
|
||||
* @param language
|
||||
* @param page
|
||||
* @return List of movies with the keyword
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<MovieBasic> getKeywordMovies(String keywordId, String language, Integer page) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, keywordId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.PAGE, page);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.KEYWORD).subMethod(MethodSub.MOVIES).buildUrl(parameters);
|
||||
WrapperGenericList<MovieBasic> wrapper = processWrapper(getTypeReference(MovieBasic.class), url, "keyword movies");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,246 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.list.ListStatusCode;
|
||||
import com.omertron.themoviedbapi.model.StatusCode;
|
||||
import com.omertron.themoviedbapi.model.list.ListItem;
|
||||
import com.omertron.themoviedbapi.model.list.ListItemStatus;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieDb;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.PostBody;
|
||||
import com.omertron.themoviedbapi.tools.PostTools;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the List Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbLists extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbLists(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list by its ID
|
||||
*
|
||||
* @param listId
|
||||
* @return The list and its items
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public ListItem<MovieDb> getList(String listId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, listId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, new TypeReference<ListItem<MovieDb>>() {
|
||||
});
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if an ID is already on a list.
|
||||
*
|
||||
* @param listId
|
||||
* @param mediaId
|
||||
* @return true if the movie is on the list
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public boolean checkItemStatus(String listId, int mediaId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, listId);
|
||||
parameters.add(Param.MOVIE_ID, mediaId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).subMethod(MethodSub.ITEM_STATUS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ListItemStatus.class).isItemPresent();
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get item status", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users create a new list. A valid session id is required.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param name
|
||||
* @param description
|
||||
* @return The list id
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public String createList(String sessionId, String name, String description) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.NAME, StringUtils.trimToEmpty(name))
|
||||
.add(PostBody.DESCRIPTION, StringUtils.trimToEmpty(description))
|
||||
.build();
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).buildUrl(parameters);
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ListStatusCode.class).getListId();
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to create list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users delete a list that they created. A valid session id is required.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param listId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode deleteList(String sessionId, String listId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, listId);
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).buildUrl(parameters);
|
||||
String webpage = httpTools.deleteRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to delete list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify a list
|
||||
*
|
||||
* This can be used to add or remove an item from the list
|
||||
*
|
||||
* @param sessionId
|
||||
* @param listId
|
||||
* @param movieId
|
||||
* @param operation
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
private StatusCode modifyMovieList(String sessionId, String listId, int movieId, MethodSub operation) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, listId);
|
||||
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.MEDIA_ID, movieId)
|
||||
.build();
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).subMethod(operation).buildUrl(parameters);
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to remove item from list", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users add new items to a list that they created.
|
||||
*
|
||||
* A valid session id is required.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param listId
|
||||
* @param mediaId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode addItem(String sessionId, String listId, int mediaId) throws MovieDbException {
|
||||
return modifyMovieList(sessionId, listId, mediaId, MethodSub.ADD_ITEM);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users delete items from a list that they created.
|
||||
*
|
||||
* A valid session id is required.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param listId
|
||||
* @param mediaId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode removeItem(String sessionId, String listId, int mediaId) throws MovieDbException {
|
||||
return modifyMovieList(sessionId, listId, mediaId, MethodSub.REMOVE_ITEM);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all of the items within a list.
|
||||
*
|
||||
* This is a irreversible action and should be treated with caution.
|
||||
*
|
||||
* A valid session id is required. A call without confirm=true will return status code 29.
|
||||
*
|
||||
* @param sessionId
|
||||
* @param listId
|
||||
* @param confirm
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode clear(String sessionId, String listId, boolean confirm) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.SESSION_ID, sessionId);
|
||||
parameters.add(Param.ID, listId);
|
||||
parameters.add(Param.CONFIRM, confirm);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.LIST).subMethod(MethodSub.CLEAR).buildUrl(parameters);
|
||||
String webpage = httpTools.postRequest(url, "");
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to clear list", url, ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.model.network.Network;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Network Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbNetworks extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbNetworks(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is used to retrieve the basic information about a TV network.
|
||||
* <p>
|
||||
* You can use this ID to search for TV shows with the discover method.
|
||||
*
|
||||
* @param networkId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Network getNetworkInfo(int networkId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, networkId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.NETWORK).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Network.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get network information", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,321 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.enumeration.ArtworkType;
|
||||
import com.omertron.themoviedbapi.model.artwork.Artwork;
|
||||
import com.omertron.themoviedbapi.model.artwork.ArtworkMedia;
|
||||
import com.omertron.themoviedbapi.model.person.CreditBasic;
|
||||
import com.omertron.themoviedbapi.model.person.CreditMovieBasic;
|
||||
import com.omertron.themoviedbapi.model.person.CreditTVBasic;
|
||||
import com.omertron.themoviedbapi.model.person.ExternalID;
|
||||
import com.omertron.themoviedbapi.model.person.Person;
|
||||
import com.omertron.themoviedbapi.model.person.PersonCredits;
|
||||
import com.omertron.themoviedbapi.model.person.PersonCreditsMixIn;
|
||||
import com.omertron.themoviedbapi.model.person.PersonFind;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperChanges;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenericList;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperImages;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the People Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbPeople extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbPeople(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the general person information for a specific id.
|
||||
*
|
||||
* @param personId
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Person getPersonInfo(int personId, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Person.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person info", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the movie credits for a specific person id.
|
||||
*
|
||||
* @param personId
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public PersonCredits<CreditMovieBasic> getPersonMovieCredits(int personId, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.MOVIE_CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
TypeReference tr = new TypeReference<PersonCredits<CreditMovieBasic>>() {
|
||||
};
|
||||
return MAPPER.readValue(webpage, tr);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person movie credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the TV credits for a specific person id.
|
||||
*
|
||||
* To get the expanded details for each record, call the /credit method with
|
||||
* the provided credit_id.
|
||||
*
|
||||
* This will provide details about which episode and/or season the credit is
|
||||
* for.
|
||||
*
|
||||
* @param personId
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public PersonCredits<CreditTVBasic> getPersonTVCredits(int personId, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.TV_CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
TypeReference tr = new TypeReference<PersonCredits<CreditTVBasic>>() {
|
||||
};
|
||||
return MAPPER.readValue(webpage, tr);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person TV credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the combined (movie and TV) credits for a specific person id.
|
||||
*
|
||||
* To get the expanded details for each TV record, call the /credit method
|
||||
* with the provided credit_id.
|
||||
*
|
||||
* This will provide details about which episode and/or season the credit is
|
||||
* for.
|
||||
*
|
||||
* @param personId
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public PersonCredits<CreditBasic> getPersonCombinedCredits(int personId, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.COMBINED_CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.addMixIn(PersonCredits.class, PersonCreditsMixIn.class);
|
||||
TypeReference tr = new TypeReference<PersonCredits<CreditBasic>>() {
|
||||
};
|
||||
return mapper.readValue(webpage, tr);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person combined credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the external ids for a specific person id.
|
||||
*
|
||||
* @param personId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public ExternalID getPersonExternalIds(int personId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.EXTERNAL_IDS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ExternalID.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person external IDs", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the images for a specific person id.
|
||||
*
|
||||
* @param personId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Artwork> getPersonImages(int personId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.IMAGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperImages wrapper = MAPPER.readValue(webpage, WrapperImages.class);
|
||||
TmdbResultsList<Artwork> results = new TmdbResultsList<Artwork>(wrapper.getAll(ArtworkType.PROFILE));
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person images", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the images that have been tagged with a specific person id.
|
||||
*
|
||||
* We return all of the image results with a media object mapped for each
|
||||
* image.
|
||||
*
|
||||
* @param personId
|
||||
* @param page
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<ArtworkMedia> getPersonTaggedImages(int personId, Integer page, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.TAGGED_IMAGES).buildUrl(parameters);
|
||||
WrapperGenericList<ArtworkMedia> wrapper = processWrapper(getTypeReference(ArtworkMedia.class), url, "tagged images");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the changes for a specific person id.
|
||||
*
|
||||
* Changes are grouped by key, and ordered by date in descending order.
|
||||
*
|
||||
* By default, only the last 24 hours of changes are returned.
|
||||
*
|
||||
* The maximum number of days that can be returned in a single request is
|
||||
* 14.
|
||||
*
|
||||
* The language is present on fields that are translatable.
|
||||
*
|
||||
* @param personId
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public WrapperChanges getPersonChanges(int personId, String startDate, String endDate) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, personId);
|
||||
parameters.add(Param.START_DATE, startDate);
|
||||
parameters.add(Param.END_DATE, endDate);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.CHANGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, WrapperChanges.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get person changes", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of popular people on The Movie Database.
|
||||
*
|
||||
* This list refreshes every day.
|
||||
*
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<PersonFind> getPersonPopular(Integer page) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.PAGE, page);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.POPULAR).buildUrl(parameters);
|
||||
WrapperGenericList<PersonFind> wrapper = processWrapper(getTypeReference(PersonFind.class), url, "person popular");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the latest person id.
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Person getPersonLatest() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.PERSON).subMethod(MethodSub.LATEST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Person.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get latest person", url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.review.Review;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Review Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbReviews extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbReviews(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the full details of a review by ID.
|
||||
*
|
||||
* @param reviewId
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public Review getReview(String reviewId) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, reviewId);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.REVIEW).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, Review.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get review", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,264 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.enumeration.SearchType;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.collection.Collection;
|
||||
import com.omertron.themoviedbapi.model.company.Company;
|
||||
import com.omertron.themoviedbapi.model.keyword.Keyword;
|
||||
import com.omertron.themoviedbapi.model.list.UserList;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieDb;
|
||||
import com.omertron.themoviedbapi.model.person.PersonFind;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenericList;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperMultiSearch;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the Search Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbSearch extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbSearch(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Companies.
|
||||
*
|
||||
* You can use this method to search for production companies that are part of TMDb. The company IDs will map to those returned
|
||||
* on movie calls.
|
||||
*
|
||||
* http://help.themoviedb.org/kb/api/search-companies
|
||||
*
|
||||
* @param query
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Company> searchCompanies(String query, Integer page) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.COMPANY).buildUrl(parameters);
|
||||
WrapperGenericList<Company> wrapper = processWrapper(getTypeReference(Company.class), url, "company");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for collections by name.
|
||||
*
|
||||
* @param query
|
||||
* @param language
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Collection> searchCollection(String query, Integer page, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.COLLECTION).buildUrl(parameters);
|
||||
WrapperGenericList<Collection> wrapper = processWrapper(getTypeReference(Collection.class), url, "collection");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for keywords by name
|
||||
*
|
||||
* @param query
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Keyword> searchKeyword(String query, Integer page) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.KEYWORD).buildUrl(parameters);
|
||||
WrapperGenericList<Keyword> wrapper = processWrapper(getTypeReference(Keyword.class), url, "keyword");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for lists by name and description.
|
||||
*
|
||||
* @param query
|
||||
* @param includeAdult
|
||||
* @param page
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<UserList> searchList(String query, Integer page, Boolean includeAdult) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.INCLUDE_ADULT, includeAdult);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.LIST).buildUrl(parameters);
|
||||
WrapperGenericList<UserList> wrapper = processWrapper(getTypeReference(UserList.class), url, "list");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Movies This is a good starting point to start finding movies on TMDb.
|
||||
*
|
||||
* @param query
|
||||
* @param searchYear Limit the search to the provided year. Zero (0) will get all years
|
||||
* @param language The language to include. Can be blank/null.
|
||||
* @param includeAdult true or false to include adult titles in the search
|
||||
* @param page The page of results to return. 0 to get the default (first page)
|
||||
* @param primaryReleaseYear
|
||||
* @param searchType
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<MovieDb> searchMovie(String query,
|
||||
Integer page,
|
||||
String language,
|
||||
Boolean includeAdult,
|
||||
Integer searchYear,
|
||||
Integer primaryReleaseYear,
|
||||
SearchType searchType) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.ADULT, includeAdult);
|
||||
parameters.add(Param.YEAR, searchYear);
|
||||
parameters.add(Param.PRIMARY_RELEASE_YEAR, primaryReleaseYear);
|
||||
if (searchType != null) {
|
||||
parameters.add(Param.SEARCH_TYPE, searchType.getPropertyString());
|
||||
}
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.MOVIE).buildUrl(parameters);
|
||||
|
||||
WrapperGenericList<MovieDb> wrapper = processWrapper(getTypeReference(MovieDb.class), url, "movie");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search the movie, tv show and person collections with a single query.
|
||||
*
|
||||
* Each item returned in the result array has a media_type field that maps to either movie, tv or person.
|
||||
*
|
||||
* Each mapped result is the same response you would get from each independent search
|
||||
*
|
||||
* @param query
|
||||
* @param page
|
||||
* @param language
|
||||
* @param includeAdult
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<MediaBasic> searchMulti(String query, Integer page, String language, Boolean includeAdult) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.ADULT, includeAdult);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.MULTI).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperMultiSearch wrapper = MAPPER.readValue(webpage, WrapperMultiSearch.class);
|
||||
TmdbResultsList<MediaBasic> results = new TmdbResultsList<MediaBasic>(null);
|
||||
results.getResults().addAll(wrapper.getResults());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get multi search", url, ex);
|
||||
} }
|
||||
|
||||
/**
|
||||
* This is a good starting point to start finding people on TMDb.
|
||||
*
|
||||
* The idea is to be a quick and light method so you can iterate through people quickly.
|
||||
*
|
||||
* @param query
|
||||
* @param includeAdult
|
||||
* @param page
|
||||
* @param searchType
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<PersonFind> searchPeople(String query, Integer page, Boolean includeAdult, SearchType searchType) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.ADULT, includeAdult);
|
||||
parameters.add(Param.PAGE, page);
|
||||
if (searchType != null) {
|
||||
parameters.add(Param.SEARCH_TYPE, searchType.getPropertyString());
|
||||
}
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.PERSON).buildUrl(parameters);
|
||||
WrapperGenericList<PersonFind> wrapper = processWrapper(getTypeReference(PersonFind.class), url, "person");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for TV shows by title.
|
||||
*
|
||||
* @param query
|
||||
* @param page
|
||||
* @param language
|
||||
* @param firstAirDateYear
|
||||
* @param searchType
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVBasic> searchTV(String query, Integer page, String language, Integer firstAirDateYear, SearchType searchType) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.QUERY, query);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.FIRST_AIR_DATE_YEAR, firstAirDateYear);
|
||||
if (searchType != null) {
|
||||
parameters.add(Param.SEARCH_TYPE, searchType.getPropertyString());
|
||||
}
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.MOVIE).buildUrl(parameters);
|
||||
WrapperGenericList<TVBasic> wrapper = processWrapper(getTypeReference(TVBasic.class), url, "TV Show");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,483 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.StatusCode;
|
||||
import com.omertron.themoviedbapi.model.artwork.Artwork;
|
||||
import com.omertron.themoviedbapi.model.keyword.Keyword;
|
||||
import com.omertron.themoviedbapi.model.media.MediaCreditList;
|
||||
import com.omertron.themoviedbapi.model.media.MediaState;
|
||||
import com.omertron.themoviedbapi.model.media.AlternativeTitle;
|
||||
import com.omertron.themoviedbapi.model.media.Translation;
|
||||
import com.omertron.themoviedbapi.model.media.Video;
|
||||
import com.omertron.themoviedbapi.model.person.ContentRating;
|
||||
import com.omertron.themoviedbapi.model.person.ExternalID;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVInfo;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.PostBody;
|
||||
import com.omertron.themoviedbapi.tools.PostTools;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperChanges;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperGenericList;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperImages;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperTranslations;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperVideos;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the TV Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbTV extends AbstractMethod {
|
||||
|
||||
private static final int RATING_MAX = 10;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbTV(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary information about a TV series by id.
|
||||
*
|
||||
* @param tvID
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TVInfo getTVInfo(int tvID, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TVInfo.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get TV Info", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users get the status of whether or not the TV show has
|
||||
* been rated or added to their favourite or watch lists.
|
||||
*
|
||||
* A valid session id is required.
|
||||
*
|
||||
* @param tvID
|
||||
* @param sessionID
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public MediaState getTVAccountState(int tvID, String sessionID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SESSION_ID, sessionID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.ACCOUNT_STATES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaState.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get account state", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the alternative titles for a specific show ID.
|
||||
*
|
||||
* @param tvID
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<AlternativeTitle> getTVAlternativeTitles(int tvID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.ALT_TITLES).buildUrl(parameters);
|
||||
WrapperGenericList<AlternativeTitle> wrapper = processWrapper(getTypeReference(AlternativeTitle.class), url, "alternative titles");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the changes for a specific TV show id.
|
||||
*
|
||||
* @param tvID
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public WrapperChanges getTVChanges(int tvID, String startDate, String endDate) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.START_DATE, startDate);
|
||||
parameters.add(Param.END_DATE, endDate);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.CHANGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, WrapperChanges.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get changes", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content ratings for a specific TV show id.
|
||||
*
|
||||
* @param tvID
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<ContentRating> getTVContentRatings(int tvID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.CONTENT_RATINGS).buildUrl(parameters);
|
||||
WrapperGenericList<ContentRating> wrapper = processWrapper(getTypeReference(ContentRating.class), url, "content rating");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cast & crew information about a TV series.
|
||||
*
|
||||
* @param tvID
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public MediaCreditList getTVCredits(int tvID, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaCreditList.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the external ids that we have stored for a TV series.
|
||||
*
|
||||
* @param tvID
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public ExternalID getTVExternalIDs(int tvID, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.EXTERNAL_IDS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ExternalID.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get external IDs", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the images (posters and backdrops) for a TV series.
|
||||
*
|
||||
* @param tvID
|
||||
* @param language
|
||||
* @param includeImageLanguage
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Artwork> getTVImages(int tvID, String language, String... includeImageLanguage) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.INCLUDE_IMAGE_LANGUAGE, includeImageLanguage);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.IMAGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperImages wrapper = MAPPER.readValue(webpage, WrapperImages.class);
|
||||
TmdbResultsList<Artwork> results = new TmdbResultsList<Artwork>(wrapper.getAll());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get images", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the plot keywords for a specific TV show id.
|
||||
*
|
||||
* @param tvID
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Keyword> getTVKeywords(int tvID, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.KEYWORDS).buildUrl(parameters);
|
||||
WrapperGenericList<Keyword> wrapper = processWrapper(getTypeReference(Keyword.class), url, "keywords");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users rate a TV show.
|
||||
*
|
||||
* A valid session id or guest session id is required.
|
||||
*
|
||||
* @param tvID
|
||||
* @param rating
|
||||
* @param sessionID
|
||||
* @param guestSessionID
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public StatusCode postTVRating(int tvID, int rating, String sessionID, String guestSessionID) throws MovieDbException {
|
||||
if (rating < 0 || rating > RATING_MAX) {
|
||||
throw new MovieDbException(ApiExceptionType.UNKNOWN_CAUSE, "Rating out of range");
|
||||
}
|
||||
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SESSION_ID, sessionID);
|
||||
parameters.add(Param.GUEST_SESSION_ID, guestSessionID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.RATING).buildUrl(parameters);
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.VALUE, rating)
|
||||
.build();
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to post rating", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the similar TV shows for a specific tv id.
|
||||
*
|
||||
* @param tvID
|
||||
* @param page
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVInfo> getTVSimilar(int tvID, Integer page, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.SIMILAR).buildUrl(parameters);
|
||||
WrapperGenericList<TVInfo> wrapper = processWrapper(getTypeReference(TVInfo.class), url, "similar TV shows");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of translations that exist for a TV series. These
|
||||
* translations cascade down to the episode level.
|
||||
*
|
||||
* @param tvID
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Translation> getTVTranslations(int tvID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.TRANSLATIONS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperTranslations wrapper = MAPPER.readValue(webpage, WrapperTranslations.class);
|
||||
TmdbResultsList<Translation> results = new TmdbResultsList<Translation>(wrapper.getTranslations());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get translations", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the videos that have been added to a TV series (trailers, opening
|
||||
* credits, etc...)
|
||||
*
|
||||
* @param tvID
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Video> getTVVideos(int tvID, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.VIDEOS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperVideos wrapper = MAPPER.readValue(webpage, WrapperVideos.class);
|
||||
TmdbResultsList<Video> results = new TmdbResultsList<Video>(wrapper.getVideos());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get videos", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the latest TV show id.
|
||||
*
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TVInfo getLatestTV() throws MovieDbException {
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.LATEST).buildUrl();
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TVInfo.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get latest TV show", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of TV shows that are currently on the air.
|
||||
*
|
||||
* This query looks for any TV show that has an episode with an air date in
|
||||
* the next 7 days.
|
||||
*
|
||||
* @param page
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVBasic> getTVOnTheAir(Integer page, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.ON_THE_AIR).buildUrl(parameters);
|
||||
WrapperGenericList<TVBasic> wrapper = processWrapper(getTypeReference(TVBasic.class), url, "on the air");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of TV shows that air today.
|
||||
*
|
||||
* Without a specified timezone, this query defaults to EST
|
||||
*
|
||||
* @param page
|
||||
* @param language
|
||||
* @param timezone
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVBasic> getTVAiringToday(Integer page, String language, String timezone) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.TIMEZONE, timezone);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.AIRING_TODAY).buildUrl(parameters);
|
||||
WrapperGenericList<TVBasic> wrapper = processWrapper(getTypeReference(TVBasic.class), url, "airing today");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of top rated TV shows.
|
||||
*
|
||||
* By default, this list will only include TV shows that have 2 or more
|
||||
* votes.
|
||||
*
|
||||
* This list refreshes every day.
|
||||
*
|
||||
* @param page
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVBasic> getTVTopRated(Integer page, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.TOP_RATED).buildUrl(parameters);
|
||||
WrapperGenericList<TVBasic> wrapper = processWrapper(getTypeReference(TVBasic.class), url, "top rated TV shows");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of popular TV shows. This list refreshes every day.
|
||||
*
|
||||
* @param page
|
||||
* @param language
|
||||
* @return
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<TVBasic> getTVPopular(Integer page, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.PAGE, page);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.TV).subMethod(MethodSub.POPULAR).buildUrl(parameters);
|
||||
WrapperGenericList<TVBasic> wrapper = processWrapper(getTypeReference(TVBasic.class), url, "popular TV shows");
|
||||
return wrapper.getTmdbResultsList();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,303 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.StatusCode;
|
||||
import com.omertron.themoviedbapi.model.artwork.Artwork;
|
||||
import com.omertron.themoviedbapi.model.media.MediaCreditList;
|
||||
import com.omertron.themoviedbapi.model.media.MediaState;
|
||||
import com.omertron.themoviedbapi.model.media.Video;
|
||||
import com.omertron.themoviedbapi.model.person.ExternalID;
|
||||
import com.omertron.themoviedbapi.model.tv.TVEpisodeInfo;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.PostBody;
|
||||
import com.omertron.themoviedbapi.tools.PostTools;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperChanges;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperImages;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperVideos;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the TV Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbTVEpisodes extends AbstractMethod {
|
||||
|
||||
private static final int RATING_MAX = 10;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbTVEpisodes(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary information about a TV episode by combination of a season
|
||||
* and episode number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TVEpisodeInfo getEpisodeInfo(int tvID, int seasonNumber, int episodeNumber, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TVEpisodeInfo.class);
|
||||
} catch (IOException ex) {
|
||||
LoggerFactory.getLogger("test").warn("{}", ex);
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get TV Episode Info", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up a TV episode's changes by episode ID
|
||||
*
|
||||
* @param episodeID
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public WrapperChanges getEpisodeChanges(int episodeID, String startDate, String endDate) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, episodeID);
|
||||
parameters.add(Param.START_DATE, startDate);
|
||||
parameters.add(Param.END_DATE, endDate);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.CHANGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, WrapperChanges.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get changes", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users get the status of whether or not the TV episode
|
||||
* has been rated.
|
||||
*
|
||||
* A valid session id is required.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @param sessionID
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public MediaState getEpisodeAccountState(int tvID, int seasonNumber, int episodeNumber, String sessionID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SESSION_ID, sessionID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.ACCOUNT_STATES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaState.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get account state", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the TV episode credits by combination of season and episode number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public MediaCreditList getEpisodeCredits(int tvID, int seasonNumber, int episodeNumber) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaCreditList.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the external ids for a TV episode by comabination of a season and
|
||||
* episode number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public ExternalID getEpisodeExternalID(int tvID, int seasonNumber, int episodeNumber, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.EXTERNAL_IDS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ExternalID.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get external IDs", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the images (episode stills) for a TV episode by combination of a
|
||||
* season and episode number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Artwork> getEpisodeImages(int tvID, int seasonNumber, int episodeNumber) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.IMAGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperImages wrapper = MAPPER.readValue(webpage, WrapperImages.class);
|
||||
TmdbResultsList<Artwork> results = new TmdbResultsList<Artwork>(wrapper.getAll());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get images", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users rate a TV episode. A valid session id or guest
|
||||
* session id is required.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @param rating
|
||||
* @param sessionID
|
||||
* @param guestSessionID
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public StatusCode postEpisodeRating(int tvID, int seasonNumber, int episodeNumber, int rating, String sessionID, String guestSessionID) throws MovieDbException {
|
||||
if (rating < 0 || rating > RATING_MAX) {
|
||||
throw new MovieDbException(ApiExceptionType.UNKNOWN_CAUSE, "Rating out of range");
|
||||
}
|
||||
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
parameters.add(Param.SESSION_ID, sessionID);
|
||||
parameters.add(Param.GUEST_SESSION_ID, guestSessionID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.RATING).buildUrl(parameters);
|
||||
String jsonBody = new PostTools()
|
||||
.add(PostBody.VALUE, rating)
|
||||
.build();
|
||||
String webpage = httpTools.postRequest(url, jsonBody);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, StatusCode.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to post rating", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the videos that have been added to a TV episode (teasers, clips,
|
||||
* etc...)
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param episodeNumber
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Video> getEpisodeVideos(int tvID, int seasonNumber, int episodeNumber, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.EPISODE_NUMBER, episodeNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.EPISODE).subMethod(MethodSub.VIDEOS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperVideos wrapper = MAPPER.readValue(webpage, WrapperVideos.class);
|
||||
TmdbResultsList<Video> results = new TmdbResultsList<Video>(wrapper.getVideos());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get videos", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,245 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
|
||||
import com.omertron.themoviedbapi.model.artwork.Artwork;
|
||||
import com.omertron.themoviedbapi.model.media.MediaCreditList;
|
||||
import com.omertron.themoviedbapi.model.media.MediaState;
|
||||
import com.omertron.themoviedbapi.model.media.Video;
|
||||
import com.omertron.themoviedbapi.model.person.ExternalID;
|
||||
import com.omertron.themoviedbapi.model.tv.TVSeasonInfo;
|
||||
import com.omertron.themoviedbapi.results.TmdbResultsList;
|
||||
import com.omertron.themoviedbapi.tools.ApiUrl;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import com.omertron.themoviedbapi.tools.MethodBase;
|
||||
import com.omertron.themoviedbapi.tools.MethodSub;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperChanges;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperImages;
|
||||
import com.omertron.themoviedbapi.wrapper.WrapperVideos;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import org.yamj.api.common.exception.ApiExceptionType;
|
||||
|
||||
/**
|
||||
* Class to hold the TV Methods
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TmdbTVSeasons extends AbstractMethod {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param apiKey
|
||||
* @param httpTools
|
||||
*/
|
||||
public TmdbTVSeasons(String apiKey, HttpTools httpTools) {
|
||||
super(apiKey, httpTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the primary information about a TV season by its season number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param language
|
||||
* @param appendToResponse
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TVSeasonInfo getSeasonInfo(int tvID, int seasonNumber, String language, String... appendToResponse) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, appendToResponse);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, TVSeasonInfo.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get TV Season Info", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up a TV season's changes by season ID.
|
||||
*
|
||||
* @param tvID
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public WrapperChanges getSeasonChanges(int tvID, String startDate, String endDate) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.START_DATE, startDate);
|
||||
parameters.add(Param.END_DATE, endDate);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.CHANGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, WrapperChanges.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get changes", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method lets users get the status of whether or not the TV episodes
|
||||
* of a season have been rated.
|
||||
*
|
||||
* A valid session id is required.
|
||||
*
|
||||
* @param tvID
|
||||
* @param sessionID
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public MediaState getSeasonAccountState(int tvID, String sessionID) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SESSION_ID, sessionID);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.ACCOUNT_STATES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaState.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get account state", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the cast & crew credits for a TV season by season number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public MediaCreditList getSeasonCredits(int tvID, int seasonNumber) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.CREDITS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
try {
|
||||
return MAPPER.readValue(webpage, MediaCreditList.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get credits", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the external ids that we have stored for a TV season by season
|
||||
* number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public ExternalID getSeasonExternalID(int tvID, int seasonNumber, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.EXTERNAL_IDS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
return MAPPER.readValue(webpage, ExternalID.class);
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get external IDs", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the images that we have stored for a TV season by season number.
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param language
|
||||
* @param includeImageLanguage
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Artwork> getSeasonImages(int tvID, int seasonNumber, String language, String... includeImageLanguage) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
parameters.add(Param.APPEND, includeImageLanguage);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.IMAGES).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperImages wrapper = MAPPER.readValue(webpage, WrapperImages.class);
|
||||
TmdbResultsList<Artwork> results = new TmdbResultsList<Artwork>(wrapper.getAll());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get images", url, ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the videos that have been added to a TV season (trailers, teasers,
|
||||
* etc...)
|
||||
*
|
||||
* @param tvID
|
||||
* @param seasonNumber
|
||||
* @param language
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public TmdbResultsList<Video> getSeasonVideos(int tvID, int seasonNumber, String language) throws MovieDbException {
|
||||
TmdbParameters parameters = new TmdbParameters();
|
||||
parameters.add(Param.ID, tvID);
|
||||
parameters.add(Param.SEASON_NUMBER, seasonNumber);
|
||||
parameters.add(Param.LANGUAGE, language);
|
||||
|
||||
URL url = new ApiUrl(apiKey, MethodBase.SEASON).subMethod(MethodSub.VIDEOS).buildUrl(parameters);
|
||||
String webpage = httpTools.getRequest(url);
|
||||
|
||||
try {
|
||||
WrapperVideos wrapper = MAPPER.readValue(webpage, WrapperVideos.class);
|
||||
TmdbResultsList<Video> results = new TmdbResultsList<Video>(wrapper.getVideos());
|
||||
results.copyWrapper(wrapper);
|
||||
return results;
|
||||
} catch (IOException ex) {
|
||||
throw new MovieDbException(ApiExceptionType.MAPPING_FAILED, "Failed to get videos", url, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,157 @@
|
||||
Account (Done)
|
||||
/account Get the basic information for an account. You will need to have a valid session id.
|
||||
/account/{id}/lists Get the lists that you have created and marked as a favorite.
|
||||
/account/{id}/favorite/movies Get the list of favorite movies for an account.
|
||||
/account/{id}/favorite/tv Get the list of favorite TV series for an account
|
||||
/account/{id}/favorite Add or remove a movie to an accounts favorite list
|
||||
/account/{id}/rated/movies Get the list of rated movies (and associated rating) for an account
|
||||
/account/{id}/rated/tv Get the list of rated TV shows (and associated rating) for an account.
|
||||
/account/{id}/watchlist/movies Get the list of movies on an accounts watchlist
|
||||
/account/{id}/watchlist/tv Get the list of TV series on an accounts watchlist
|
||||
/account/{id}/watchlist Add or remove a movie to an accounts watch list
|
||||
|
||||
Authentication (Done)
|
||||
/authentication/token/new This method is used to generate a valid request token for user based authentication
|
||||
/authentication/token/validate_with_login Once you have a valid request token you can use this method to authenticate a user with a TMDb username and password.
|
||||
/authentication/session/new This method is used to generate a session id for user based authentication. A session id is required in order to use any of the write methods.
|
||||
/authentication/guest_session/new This method is used to generate a guest session id.A guest session can be used to rate movies without having a registered TMDb user account.
|
||||
|
||||
Certifications (Done)
|
||||
/certification/movie/list Get the list of supported certifications for movies.
|
||||
/certification/tv/list Get the list of supported certifications for tv shows
|
||||
|
||||
Changes (Done)
|
||||
/movie/changes Get a list of movie ids that have been edited.
|
||||
/person/changes Get a list of people ids that have been edited.
|
||||
/tv/changes Get a list of TV show ids that have been edited
|
||||
|
||||
Collections (Done)
|
||||
/collection/{id} Get the basic collection information for a specific collection id.
|
||||
/collection/{id}/images Get all of the images for a particular collection by collection id.
|
||||
|
||||
Companies (Done)
|
||||
/company/{id} This method is used to retrieve all of the basic information about a company
|
||||
/company/{id}/movies Get the list of movies associated with a particular company.
|
||||
|
||||
Credits (Done)
|
||||
/credit/{credit_id} Get the detailed information about a particular credit record.
|
||||
|
||||
Discover (Done)
|
||||
/discover/movie Discover movies by different types of data like average rating, number of votes, genres and certifications.
|
||||
/discover/tv Discover TV shows by different types of data like average rating, number of votes, genres, the network they aired on and air dates.
|
||||
|
||||
Find (Done)
|
||||
/find/{id} The find method makes it easy to search for objects in our database by an external id.
|
||||
|
||||
Genres (Done)
|
||||
/genre/movie/list Get the list of movie genres.
|
||||
/genre/tv/list Get the list of TV genres.
|
||||
/genre/{id}/movies Get the list of movies for a particular genre by id.
|
||||
|
||||
Guest Sessions (Partial - in Account)
|
||||
/guest_session/{guest_session_id}/rated_movies Get a list of rated movies for a specific guest session id.
|
||||
|
||||
Jobs (Done - part of configuration)
|
||||
/job/list Get a list of valid jobs.
|
||||
|
||||
Keyword (Done)
|
||||
/keyword/{id} Get the basic information for a specific keyword id
|
||||
/keyword/{id}/movies Get the list of movies for a particular keyword by id
|
||||
|
||||
Lists (Done)
|
||||
/list/{id} Get a list by id.
|
||||
/list/{id}/item_status Check to see if a movie ID is already added to a list.
|
||||
/list This method lets users create a new list. A valid session id is required.
|
||||
/list/{id}/add_item This method lets users add new movies to a list that they created. A valid session id is required.
|
||||
/list/{id}/remove_item This method lets users delete movies from a list that they created. A valid session id is required.
|
||||
/list/{id}/clear Clear all of the items within a list. This is a irreversible action and should be treated with caution. A valid session id is required.
|
||||
|
||||
Movies (Done)
|
||||
/movie/{id} Get the basic movie information for a specific movie id.
|
||||
/movie/{id}/account_states This method lets a TMDb user account get the status of whether or not the movie has been rated or added to their favourite or movie watch list
|
||||
/movie/{id}/alternative_titles Get the alternative titles for a specific movie id.
|
||||
/movie/{id}/credits Get the cast and crew information for a specific movie id.
|
||||
/movie/{id}/images Get the images (posters and backdrops) for a specific movie id.
|
||||
/movie/{id}/keywords Get the plot keywords for a specific movie id.
|
||||
/movie/{id}/releases Get the release date and certification information by country for a specific movie id.
|
||||
/movie/{id}/videos Get the videos (trailers, teasers, clips, etc...) for a specific movie id.
|
||||
/movie/{id}/translations Get the translations for a specific movie id.
|
||||
/movie/{id}/similar Get the similar movies for a specific movie id.
|
||||
/movie/{id}/reviews Get the reviews for a particular movie id.
|
||||
/movie/{id}/lists Get the lists that the movie belongs to.
|
||||
/movie/{id}/changes Get the changes for a specific movie id.
|
||||
/movie/{id}/rating This method lets users rate a movie. A valid session id or guest session id is required.
|
||||
/movie/latest Get the latest movie id.
|
||||
/movie/upcoming Get the list of upcoming movies by release date. This list refreshes every day.
|
||||
/movie/now_playing Get the list of movies playing that have been, or are being released this week. This list refreshes every day.
|
||||
/movie/popular Get the list of popular movies on The Movie Database. This list refreshes every day.
|
||||
/movie/top_rated Get the list of top rated movies. By default, this list will only include movies that have 10 or more votes. This list refreshes every day.
|
||||
|
||||
Networks (Done)
|
||||
/network/{id} This method is used to retrieve the basic information about a TV network.
|
||||
|
||||
People (Done)
|
||||
/person/{id} Get the general person information for a specific id
|
||||
/person/{id}/movie_credits Get the movie credits for a specific person id.
|
||||
/person/{id}/tv_credits Get the TV credits for a specific person id.
|
||||
/person/{id}/combined_credits Get the combined (movie and TV) credits for a specific person id.
|
||||
/person/{id}/external_ids Get the external ids for a specific person id.
|
||||
/person/{id}/images Get the images for a specific person id.
|
||||
/person/{id}/tagged_images Get the images that have been tagged with a specific person id
|
||||
/person/{id}/changes Get the changes for a specific person id.
|
||||
/person/popular Get the list of popular people on The Movie Database. This list refreshes every day.
|
||||
/person/latest Get the latest person id.
|
||||
|
||||
Reviews (Done)
|
||||
/review/{id} Get the full details of a review by ID.
|
||||
|
||||
Search (Done)
|
||||
/search/company Search for companies by name.
|
||||
/search/collection Search for collections by name.
|
||||
/search/keyword Search for keywords by name.
|
||||
/search/list Search for lists by name and description.
|
||||
/search/movie Search for movies by title.
|
||||
/search/multi Search the movie, tv show and person collections with a single query.
|
||||
/search/person Search for people by name.
|
||||
/search/tv Search for TV shows by title.
|
||||
|
||||
Timezones (Done - part of configuration)
|
||||
/timezones/list Get the list of supported timezones for the API methods that support them.
|
||||
|
||||
TV (Done)
|
||||
/tv/{id} Get the primary information about a TV series by id.
|
||||
/tv/{id}/account_states This method lets users get the status of whether or not the TV show has been rated or added to their favourite or watch lists. A valid session id is required.
|
||||
/tv/{id}/alternative_titles Get the alternative titles for a specific show ID.
|
||||
/tv/{id}/changes Get the changes for a specific TV show id.
|
||||
/tv/{id}/content_ratings Get the content ratings for a specific TV show id.
|
||||
/tv/{id}/credits Get the cast & crew information about a TV series.
|
||||
/tv/{id}/external_ids Get the external ids that we have stored for a TV series.
|
||||
/tv/{id}/images Get the images (posters and backdrops) for a TV series.
|
||||
/tv/{id}/keywords Get the plot keywords for a specific TV show id.
|
||||
/tv/{id}/rating This method lets users rate a TV show. A valid session id or guest session id is required.
|
||||
/tv/{id}/similar Get the similar TV shows for a specific tv id.
|
||||
/tv/{id}/translations Get the list of translations that exist for a TV series. These translations cascade down to the episode level.
|
||||
/tv/{id}/videos Get the videos that have been added to a TV series (trailers, opening credits, etc...)
|
||||
/tv/latest Get the latest TV show id.
|
||||
/tv/on_the_air Get the list of TV shows that are currently on the air. This query looks for any TV show that has an episode with an air date in the next 7 days.
|
||||
/tv/airing_today Get the list of TV shows that air today. Without a specified timezone, this query defaults to EST
|
||||
/tv/top_rated Get the list of top rated TV shows. By default, this list will only include TV shows that have 2 or more votes. This list refreshes every day.
|
||||
/tv/popular Get the list of popular TV shows. This list refreshes every day.
|
||||
|
||||
TV Seasons
|
||||
/tv/{id}/season/{season_number} Get the primary information about a TV season by its season number.
|
||||
/tv/season/{id}/changes Look up a TV season's changes by season ID.
|
||||
/tv/{id}/season/{season_number}/credits Get the cast & crew credits for a TV season by season number.
|
||||
/tv/{id}/season/{season_number}/external_ids Get the external ids that we have stored for a TV season by season number.
|
||||
/tv/{id}/season/{season_number}/images Get the images (posters) that we have stored for a TV season by season number.
|
||||
/tv/{id}/season/{season_number}/videos Get the videos that have been added to a TV season (trailers, teasers, etc...)
|
||||
|
||||
TV Episodes
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number} Get the primary information about a TV episode by combination of a season and episode number.
|
||||
/tv/episode/{id}/changes Look up a TV episode's changes by episode ID
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/account_states This method lets users get the status of whether or not the TV episode has been rated. A valid session id is required.
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/credits Get the TV episode credits by combination of season and episode number.
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/external_ids Get the external ids for a TV episode by comabination of a season and episode number.
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/images Get the images (episode stills) for a TV episode by combination of a season and episode number.
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/rating This method lets users rate a TV episode. A valid session id or guest session id is required.
|
||||
/tv/{id}/season/{season_number}/episode/{episode_number}/videos Get the videos that have been added to a TV episode (teasers, clips, etc...)
|
||||
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation;private either version 3 of the License;private or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful;private
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not;private see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonRootName;
|
||||
|
||||
@JsonRootName("certification")
|
||||
public class Certification extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
// Properties
|
||||
@JsonProperty("certification")
|
||||
private String value;
|
||||
@JsonProperty("meaning")
|
||||
private String meaning;
|
||||
@JsonProperty("order")
|
||||
private int order;
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getMeaning() {
|
||||
return meaning;
|
||||
}
|
||||
|
||||
public void setMeaning(String meaning) {
|
||||
this.meaning = meaning;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
}
|
||||
@ -1,248 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation;private either version 3 of the License;private or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful;private
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not;private see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
|
||||
/**
|
||||
* Generate a discover object for use in the MovieDbApi
|
||||
* <p/>
|
||||
* This allows you to just add the search components you are concerned with
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class Discover {
|
||||
|
||||
private final TmdbParameters params = new TmdbParameters();
|
||||
|
||||
private static final int YEAR_MIN = 1900;
|
||||
private static final int YEAR_MAX = 2100;
|
||||
|
||||
/**
|
||||
* Get the parameters
|
||||
* <p/>
|
||||
* This will be used to construct the URL in the API
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TmdbParameters getParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Minimum value is 1 if included.
|
||||
*
|
||||
* @param page
|
||||
* @return
|
||||
*/
|
||||
public Discover page(int page) {
|
||||
params.add(Param.PAGE, page);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* ISO 639-1 code
|
||||
*
|
||||
* @param language
|
||||
* @return
|
||||
*/
|
||||
public Discover language(String language) {
|
||||
params.add(Param.LANGUAGE, language);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Available options are <br>
|
||||
* vote_average.desc<br>
|
||||
* vote_average.asc<br>
|
||||
* release_date.desc<br>
|
||||
* release_date.asc<br>
|
||||
* popularity.desc<br>
|
||||
* popularity.asc
|
||||
*
|
||||
* @param sortBy
|
||||
* @return
|
||||
*/
|
||||
public Discover sortBy(String sortBy) {
|
||||
params.add(Param.SORT_BY, sortBy);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the inclusion of adult titles
|
||||
*
|
||||
* @param includeAdult
|
||||
* @return
|
||||
*/
|
||||
public Discover includeAdult(boolean includeAdult) {
|
||||
params.add(Param.ADULT, includeAdult);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the results release dates to matches that include this value.
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
public Discover year(int year) {
|
||||
if (checkYear(year)) {
|
||||
params.add(Param.YEAR, year);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the results so that only the primary release date year has this
|
||||
* value
|
||||
*
|
||||
* @param primaryReleaseYear
|
||||
* @return
|
||||
*/
|
||||
public Discover primaryReleaseYear(int primaryReleaseYear) {
|
||||
if (checkYear(primaryReleaseYear)) {
|
||||
params.add(Param.PRIMARY_RELEASE_YEAR, primaryReleaseYear);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are equal to, or have a vote count higher than
|
||||
* this value
|
||||
*
|
||||
* @param voteCountGte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteCountGte(int voteCountGte) {
|
||||
params.add(Param.VOTE_COUNT_GTE, voteCountGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are equal to, or have a higher average rating
|
||||
* than this value
|
||||
*
|
||||
* @param voteAverageGte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteAverageGte(float voteAverageGte) {
|
||||
params.add(Param.VOTE_AVERAGE_GTE, voteAverageGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with the specified genres.
|
||||
* <p/>
|
||||
* Expected value is an integer (the id of a genre).
|
||||
* <p/>
|
||||
* Multiple values can be specified.
|
||||
* <p/>
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated
|
||||
* value indicates an 'OR'
|
||||
*
|
||||
* @param withGenres
|
||||
* @return
|
||||
*/
|
||||
public Discover withGenres(String withGenres) {
|
||||
params.add(Param.WITH_GENRES, withGenres);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The minimum release to include.
|
||||
* <p/>
|
||||
* Expected format is YYYY-MM-DD.
|
||||
*
|
||||
* @param releaseDateGte
|
||||
* @return
|
||||
*/
|
||||
public Discover releaseDateGte(String releaseDateGte) {
|
||||
params.add(Param.RELEASE_DATE_GTE, releaseDateGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The maximum release to include.
|
||||
* <p/>
|
||||
* Expected format is YYYY-MM-DD.
|
||||
*
|
||||
* @param releaseDateLte
|
||||
* @return
|
||||
*/
|
||||
public Discover releaseDateLte(String releaseDateLte) {
|
||||
params.add(Param.RELEASE_DATE_LTE, releaseDateLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with certifications for a specific country.
|
||||
* <p/>
|
||||
* When this value is specified, 'certificationLte' is required.
|
||||
* <p/>
|
||||
* A ISO 3166-1 is expected
|
||||
*
|
||||
* @param certificationCountry
|
||||
* @return
|
||||
*/
|
||||
public Discover certificationCountry(String certificationCountry) {
|
||||
params.add(Param.CERTIFICATION_COUNTRY, certificationCountry);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with this certification and lower.
|
||||
* <p/>
|
||||
* Expected value is a valid certification for the specified
|
||||
* 'certificationCountry'.
|
||||
*
|
||||
* @param certificationLte
|
||||
* @return
|
||||
*/
|
||||
public Discover certificationLte(String certificationLte) {
|
||||
params.add(Param.CERTIFICATION_LTE, certificationLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter movies to include a specific company.
|
||||
* <p/>
|
||||
* Expected value is an integer (the id of a company).
|
||||
* <p/>
|
||||
* They can be comma separated to indicate an 'AND' query
|
||||
*
|
||||
* @param withCompanies
|
||||
* @return
|
||||
*/
|
||||
public Discover withCompanies(String withCompanies) {
|
||||
params.add(Param.WITH_COMPANIES, withCompanies);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* check the year is between the min and max
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
private boolean checkYear(int year) {
|
||||
return year >= YEAR_MIN && year <= YEAR_MAX;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.person.PersonFind;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVEpisodeBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVSeasonBasic;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class FindResults extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("movie_results")
|
||||
private List<MovieBasic> movieResults;
|
||||
@JsonProperty("person_results")
|
||||
private List<PersonFind> personResults;
|
||||
@JsonProperty("tv_results")
|
||||
private List<TVBasic> tvResults;
|
||||
@JsonProperty("tv_season_results")
|
||||
private List<TVSeasonBasic> tvSeasonResults;
|
||||
@JsonProperty("tv_episode_results")
|
||||
private List<TVEpisodeBasic> tvEpisodeResults;
|
||||
|
||||
public List<MovieBasic> getMovieResults() {
|
||||
return movieResults;
|
||||
}
|
||||
|
||||
public void setMovieResults(List<MovieBasic> movieResults) {
|
||||
this.movieResults = movieResults;
|
||||
}
|
||||
|
||||
public List<PersonFind> getPersonResults() {
|
||||
return personResults;
|
||||
}
|
||||
|
||||
public void setPersonResults(List<PersonFind> personResults) {
|
||||
this.personResults = personResults;
|
||||
}
|
||||
|
||||
public List<TVBasic> getTvResults() {
|
||||
return tvResults;
|
||||
}
|
||||
|
||||
public void setTvResults(List<TVBasic> tvResults) {
|
||||
this.tvResults = tvResults;
|
||||
}
|
||||
|
||||
public List<TVSeasonBasic> getTvSeasonResults() {
|
||||
return tvSeasonResults;
|
||||
}
|
||||
|
||||
public void setTvSeasonResults(List<TVSeasonBasic> tvSeasonResults) {
|
||||
this.tvSeasonResults = tvSeasonResults;
|
||||
}
|
||||
|
||||
public List<TVEpisodeBasic> getTvEpisodeResults() {
|
||||
return tvEpisodeResults;
|
||||
}
|
||||
|
||||
public void setTvEpisodeResults(List<TVEpisodeBasic> tvEpisodeResults) {
|
||||
this.tvEpisodeResults = tvEpisodeResults;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,296 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class Person extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*
|
||||
* Static fields for default cast information
|
||||
*/
|
||||
private static final String CAST_DEPARTMENT = "acting";
|
||||
private static final String CAST_JOB = "actor";
|
||||
private static final String DEFAULT_STRING = "";
|
||||
/*
|
||||
* Properties
|
||||
*/
|
||||
@JsonProperty("id")
|
||||
private int id = -1;
|
||||
@JsonProperty("name")
|
||||
private String name = "";
|
||||
@JsonProperty("profile_path")
|
||||
private String profilePath = DEFAULT_STRING;
|
||||
private PersonType personType = PersonType.PERSON;
|
||||
// Crew
|
||||
private String department = DEFAULT_STRING;
|
||||
// Crew
|
||||
private String job = DEFAULT_STRING;
|
||||
// Cast
|
||||
private String character = DEFAULT_STRING;
|
||||
// Cast
|
||||
private int order = -1;
|
||||
@JsonProperty("adult")
|
||||
// Person info
|
||||
private boolean adult = false;
|
||||
@JsonProperty("also_known_as")
|
||||
private List<String> aka = new ArrayList<String>();
|
||||
@JsonProperty("biography")
|
||||
private String biography = DEFAULT_STRING;
|
||||
@JsonProperty("birthday")
|
||||
private String birthday = DEFAULT_STRING;
|
||||
@JsonProperty("deathday")
|
||||
private String deathday = DEFAULT_STRING;
|
||||
@JsonProperty("homepage")
|
||||
private String homepage = DEFAULT_STRING;
|
||||
@JsonProperty("place_of_birth")
|
||||
private String birthplace = DEFAULT_STRING;
|
||||
@JsonProperty("imdb_id")
|
||||
private String imdbId = DEFAULT_STRING;
|
||||
@JsonProperty("popularity")
|
||||
private float popularity = 0.0f;
|
||||
@JsonProperty("known_for")
|
||||
private List<PersonCredit> knownFor;
|
||||
|
||||
/**
|
||||
* Add a crew member
|
||||
*
|
||||
* @param id
|
||||
* @param name
|
||||
* @param profilePath
|
||||
* @param department
|
||||
* @param job
|
||||
*/
|
||||
public void addCrew(int id, String name, String profilePath, String department, String job) {
|
||||
setPersonType(PersonType.CREW);
|
||||
setId(id);
|
||||
setName(name);
|
||||
setProfilePath(profilePath);
|
||||
setDepartment(department);
|
||||
setJob(job);
|
||||
setCharacter("");
|
||||
setOrder(-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a cast member
|
||||
*
|
||||
* @param id
|
||||
* @param name
|
||||
* @param profilePath
|
||||
* @param character
|
||||
* @param order
|
||||
*/
|
||||
public void addCast(int id, String name, String profilePath, String character, int order) {
|
||||
setPersonType(PersonType.CAST);
|
||||
setId(id);
|
||||
setName(name);
|
||||
setProfilePath(profilePath);
|
||||
setCharacter(character);
|
||||
setOrder(order);
|
||||
setDepartment(CAST_DEPARTMENT);
|
||||
setJob(CAST_JOB);
|
||||
}
|
||||
|
||||
public String getCharacter() {
|
||||
return character;
|
||||
}
|
||||
|
||||
public String getDepartment() {
|
||||
return department;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getJob() {
|
||||
return job;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public PersonType getPersonType() {
|
||||
return personType;
|
||||
}
|
||||
|
||||
public String getProfilePath() {
|
||||
return profilePath;
|
||||
}
|
||||
|
||||
public boolean isAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public List<String> getAka() {
|
||||
return aka;
|
||||
}
|
||||
|
||||
public String getBiography() {
|
||||
return biography;
|
||||
}
|
||||
|
||||
public String getBirthday() {
|
||||
return birthday;
|
||||
}
|
||||
|
||||
public String getBirthplace() {
|
||||
return birthplace;
|
||||
}
|
||||
|
||||
public String getDeathday() {
|
||||
return deathday;
|
||||
}
|
||||
|
||||
public String getHomepage() {
|
||||
return homepage;
|
||||
}
|
||||
|
||||
public String getImdbId() {
|
||||
return imdbId;
|
||||
}
|
||||
|
||||
public float getPopularity() {
|
||||
return popularity;
|
||||
}
|
||||
|
||||
public void setCharacter(String character) {
|
||||
this.character = character;
|
||||
}
|
||||
|
||||
public void setDepartment(String department) {
|
||||
this.department = department;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setJob(String job) {
|
||||
this.job = StringUtils.trimToEmpty(job);
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = StringUtils.trimToEmpty(name);
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public void setPersonType(PersonType personType) {
|
||||
this.personType = personType;
|
||||
}
|
||||
|
||||
public void setProfilePath(String profilePath) {
|
||||
this.profilePath = StringUtils.trimToEmpty(profilePath);
|
||||
}
|
||||
|
||||
public void setAdult(boolean adult) {
|
||||
this.adult = adult;
|
||||
}
|
||||
|
||||
public void setAka(List<String> aka) {
|
||||
this.aka = aka;
|
||||
}
|
||||
|
||||
public void setBiography(String biography) {
|
||||
this.biography = StringUtils.trimToEmpty(biography);
|
||||
}
|
||||
|
||||
public void setBirthday(String birthday) {
|
||||
this.birthday = StringUtils.trimToEmpty(birthday);
|
||||
}
|
||||
|
||||
public void setBirthplace(String birthplace) {
|
||||
this.birthplace = StringUtils.trimToEmpty(birthplace);
|
||||
}
|
||||
|
||||
public void setDeathday(String deathday) {
|
||||
this.deathday = StringUtils.trimToEmpty(deathday);
|
||||
}
|
||||
|
||||
public void setHomepage(String homepage) {
|
||||
this.homepage = StringUtils.trimToEmpty(homepage);
|
||||
}
|
||||
|
||||
public void setImdbId(String imdbId) {
|
||||
this.imdbId = StringUtils.trimToEmpty(imdbId);
|
||||
}
|
||||
|
||||
public void setPopularity(float popularity) {
|
||||
this.popularity = popularity;
|
||||
}
|
||||
|
||||
public List<PersonCredit> getKnownFor() {
|
||||
return knownFor;
|
||||
}
|
||||
|
||||
public void setKnownFor(List<PersonCredit> knownFor) {
|
||||
this.knownFor = knownFor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof Person) {
|
||||
final Person other = (Person) obj;
|
||||
return new EqualsBuilder()
|
||||
.append(id, other.id)
|
||||
.append(name, other.name)
|
||||
.append(profilePath, other.profilePath)
|
||||
.append(personType, other.personType)
|
||||
.append(department, other.department)
|
||||
.append(job, other.job)
|
||||
.append(character, other.character)
|
||||
.isEquals();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new HashCodeBuilder()
|
||||
.append(id)
|
||||
.append(name)
|
||||
.append(profilePath)
|
||||
.append(personType)
|
||||
.append(department)
|
||||
.append(job)
|
||||
.append(character)
|
||||
.toHashCode();
|
||||
}
|
||||
}
|
||||
@ -1,134 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
/**
|
||||
* @author Stuart
|
||||
*/
|
||||
public class PersonCast extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*
|
||||
* Properties
|
||||
*/
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
@JsonProperty("character")
|
||||
private String character;
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@JsonProperty("order")
|
||||
private int order;
|
||||
@JsonProperty("profile_path")
|
||||
private String profilePath;
|
||||
@JsonProperty("cast_id")
|
||||
private int castId;
|
||||
@JsonProperty("credit_id")
|
||||
private String creditId;
|
||||
|
||||
public String getCharacter() {
|
||||
return character;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public String getProfilePath() {
|
||||
return profilePath;
|
||||
}
|
||||
|
||||
public int getCastId() {
|
||||
return castId;
|
||||
}
|
||||
|
||||
public void setCharacter(String character) {
|
||||
this.character = StringUtils.trimToEmpty(character);
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = StringUtils.trimToEmpty(name);
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public void setProfilePath(String profilePath) {
|
||||
this.profilePath = StringUtils.trimToEmpty(profilePath);
|
||||
}
|
||||
|
||||
public void setCastId(int castId) {
|
||||
this.castId = castId;
|
||||
}
|
||||
|
||||
public String getCreditId() {
|
||||
return creditId;
|
||||
}
|
||||
|
||||
public void setCreditId(String creditId) {
|
||||
this.creditId = creditId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof PersonCast) {
|
||||
final PersonCast other = (PersonCast) obj;
|
||||
return new EqualsBuilder()
|
||||
.append(id, other.id)
|
||||
.append(name, other.name)
|
||||
.append(character, other.character)
|
||||
.append(order, other.order)
|
||||
.append(profilePath, other.profilePath)
|
||||
.isEquals();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new HashCodeBuilder()
|
||||
.append(id)
|
||||
.append(character)
|
||||
.append(name)
|
||||
.append(order)
|
||||
.append(profilePath)
|
||||
.toHashCode();
|
||||
}
|
||||
}
|
||||
@ -1,246 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class PersonCredit extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DEFAULT_STRING = "";
|
||||
/*
|
||||
* Properties
|
||||
*/
|
||||
@JsonProperty("id")
|
||||
private int movieId = 0;
|
||||
@JsonProperty("character")
|
||||
private String character = DEFAULT_STRING;
|
||||
@JsonProperty("original_title")
|
||||
private String movieOriginalTitle = DEFAULT_STRING;
|
||||
@JsonProperty("poster_path")
|
||||
private String posterPath = DEFAULT_STRING;
|
||||
@JsonProperty("backdrop_path")
|
||||
private String backdropPath = DEFAULT_STRING;
|
||||
@JsonProperty("release_date")
|
||||
private String releaseDate = DEFAULT_STRING;
|
||||
@JsonProperty("title")
|
||||
private String movieTitle = DEFAULT_STRING;
|
||||
@JsonProperty("department")
|
||||
private String department = DEFAULT_STRING;
|
||||
@JsonProperty("job")
|
||||
private String job = DEFAULT_STRING;
|
||||
@JsonProperty("adult")
|
||||
private String adult = DEFAULT_STRING;
|
||||
@JsonProperty("credit_id")
|
||||
private String creditId = DEFAULT_STRING;
|
||||
private PersonType personType = PersonType.PERSON;
|
||||
@JsonProperty("popularity")
|
||||
private float popularity;
|
||||
@JsonProperty("vote_average")
|
||||
private float voteAverage;
|
||||
@JsonProperty("vote_count")
|
||||
private int voteCount;
|
||||
@JsonProperty("media_type")
|
||||
private String mediaType;
|
||||
@JsonProperty("video")
|
||||
private boolean video;
|
||||
@JsonProperty("original_name")
|
||||
private String tvOriginalName = DEFAULT_STRING;
|
||||
@JsonProperty("name")
|
||||
private String tvName = DEFAULT_STRING;
|
||||
@JsonProperty("first_air_date")
|
||||
private String firstAirDate = DEFAULT_STRING;
|
||||
@JsonProperty("origin_country")
|
||||
private List<String> originCountry = Collections.emptyList();
|
||||
|
||||
public String getCharacter() {
|
||||
return character;
|
||||
}
|
||||
|
||||
public String getDepartment() {
|
||||
return department;
|
||||
}
|
||||
|
||||
public String getJob() {
|
||||
return job;
|
||||
}
|
||||
|
||||
public int getMovieId() {
|
||||
return movieId;
|
||||
}
|
||||
|
||||
public String getMovieOriginalTitle() {
|
||||
return movieOriginalTitle;
|
||||
}
|
||||
|
||||
public String getMovieTitle() {
|
||||
return movieTitle;
|
||||
}
|
||||
|
||||
public PersonType getPersonType() {
|
||||
return personType;
|
||||
}
|
||||
|
||||
public String getPosterPath() {
|
||||
return posterPath;
|
||||
}
|
||||
|
||||
public String getReleaseDate() {
|
||||
return releaseDate;
|
||||
}
|
||||
|
||||
public String getAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public String getCreditId() {
|
||||
return creditId;
|
||||
}
|
||||
|
||||
public boolean getVideo() {
|
||||
return video;
|
||||
}
|
||||
|
||||
public String getTvOriginalName() {
|
||||
return tvOriginalName;
|
||||
}
|
||||
|
||||
public String getTvName() {
|
||||
return tvName;
|
||||
}
|
||||
|
||||
public String getFirstAirDate() {
|
||||
return firstAirDate;
|
||||
}
|
||||
|
||||
public List<String> getOriginCountry() {
|
||||
return originCountry;
|
||||
}
|
||||
|
||||
public void setCharacter(String character) {
|
||||
this.character = StringUtils.trimToEmpty(character);
|
||||
}
|
||||
|
||||
public void setDepartment(String department) {
|
||||
this.department = StringUtils.trimToEmpty(department);
|
||||
}
|
||||
|
||||
public void setJob(String job) {
|
||||
this.job = StringUtils.trimToEmpty(job);
|
||||
}
|
||||
|
||||
public void setMovieId(int movieId) {
|
||||
this.movieId = movieId;
|
||||
}
|
||||
|
||||
public void setMovieOriginalTitle(String movieOriginalTitle) {
|
||||
this.movieOriginalTitle = StringUtils.trimToEmpty(movieOriginalTitle);
|
||||
}
|
||||
|
||||
public void setMovieTitle(String movieTitle) {
|
||||
this.movieTitle = StringUtils.trimToEmpty(movieTitle);
|
||||
}
|
||||
|
||||
public void setPersonType(PersonType personType) {
|
||||
this.personType = personType;
|
||||
}
|
||||
|
||||
public void setPosterPath(String posterPath) {
|
||||
this.posterPath = StringUtils.trimToEmpty(posterPath);
|
||||
}
|
||||
|
||||
public void setReleaseDate(String releaseDate) {
|
||||
this.releaseDate = StringUtils.trimToEmpty(releaseDate);
|
||||
}
|
||||
|
||||
public void setAdult(String adult) {
|
||||
this.adult = StringUtils.trimToEmpty(adult);
|
||||
}
|
||||
|
||||
public void setCreditId(String creditId) {
|
||||
this.creditId = creditId;
|
||||
}
|
||||
|
||||
public String getBackdropPath() {
|
||||
return backdropPath;
|
||||
}
|
||||
|
||||
public void setBackdropPath(String backdropPath) {
|
||||
this.backdropPath = backdropPath;
|
||||
}
|
||||
|
||||
public float getPopularity() {
|
||||
return popularity;
|
||||
}
|
||||
|
||||
public void setPopularity(float popularity) {
|
||||
this.popularity = popularity;
|
||||
}
|
||||
|
||||
public float getVoteAverage() {
|
||||
return voteAverage;
|
||||
}
|
||||
|
||||
public void setVoteAverage(float voteAverage) {
|
||||
this.voteAverage = voteAverage;
|
||||
}
|
||||
|
||||
public int getVoteCount() {
|
||||
return voteCount;
|
||||
}
|
||||
|
||||
public void setVoteCount(int voteCount) {
|
||||
this.voteCount = voteCount;
|
||||
}
|
||||
|
||||
public String getMediaType() {
|
||||
return mediaType;
|
||||
}
|
||||
|
||||
public void setMediaType(String mediaType) {
|
||||
this.mediaType = mediaType;
|
||||
}
|
||||
|
||||
public void setVideo(boolean video) {
|
||||
this.video = video;
|
||||
}
|
||||
|
||||
public void setTvOriginalName(String tvOriginalName) {
|
||||
this.tvOriginalName = tvOriginalName;
|
||||
}
|
||||
|
||||
public void setTvName(String tvName) {
|
||||
this.tvName = tvName;
|
||||
}
|
||||
|
||||
public void setFirstAirDate(String firstAirDate) {
|
||||
this.firstAirDate = firstAirDate;
|
||||
}
|
||||
|
||||
public void setOriginCountry(List<String> originCountry) {
|
||||
this.originCountry = originCountry;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.artwork;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.omertron.themoviedbapi.enumeration.MediaType;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVEpisodeBasic;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public class ArtworkMedia extends Artwork {
|
||||
|
||||
private MediaType mediaType;
|
||||
@JsonTypeInfo(
|
||||
use = JsonTypeInfo.Id.NAME,
|
||||
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
|
||||
property = "media_type",
|
||||
defaultImpl = MediaBasic.class
|
||||
)
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = MovieBasic.class, name = "movie"),
|
||||
@JsonSubTypes.Type(value = TVBasic.class, name = "tv"),
|
||||
@JsonSubTypes.Type(value = TVEpisodeBasic.class, name = "episode")
|
||||
})
|
||||
@JsonProperty("media")
|
||||
private MediaBasic media;
|
||||
|
||||
public MediaType getMediaType() {
|
||||
return mediaType;
|
||||
}
|
||||
|
||||
public void setMediaType(MediaType mediaType) {
|
||||
this.mediaType = mediaType;
|
||||
}
|
||||
|
||||
@JsonSetter("media_type")
|
||||
public void setMediaType(String mediaType) {
|
||||
this.mediaType = MediaType.fromString(mediaType);
|
||||
}
|
||||
|
||||
public MediaBasic getMedia() {
|
||||
return media;
|
||||
}
|
||||
|
||||
public void setMedia(MediaBasic media) {
|
||||
this.media = media;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new HashCodeBuilder()
|
||||
.appendSuper(super.hashCode())
|
||||
.append(mediaType)
|
||||
.toHashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof ArtworkMedia) {
|
||||
final ArtworkMedia other = (ArtworkMedia) obj;
|
||||
return new EqualsBuilder()
|
||||
.appendSuper(super.equals(obj))
|
||||
.append(mediaType, other.mediaType)
|
||||
.isEquals();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,98 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation;private either version 3 of the License;private or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful;private
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not;private see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.comparator;
|
||||
|
||||
import com.omertron.themoviedbapi.model.PersonCredit;
|
||||
import java.io.Serializable;
|
||||
import java.util.Comparator;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Compare two PersonCredits by date
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class PersonCreditDateComparator implements Comparator<PersonCredit>, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final Pattern YEAR_PATTERN = Pattern.compile("(?:.*?)(\\d{4})(?:.*?)");
|
||||
private final boolean ascending;
|
||||
|
||||
public PersonCreditDateComparator() {
|
||||
this.ascending = Boolean.FALSE;
|
||||
}
|
||||
|
||||
public PersonCreditDateComparator(boolean ascending) {
|
||||
this.ascending = ascending;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(PersonCredit pc1, PersonCredit pc2) {
|
||||
return compare(pc1, pc2, ascending);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare two PersonCredits based on the respective years
|
||||
*
|
||||
* @param pc1
|
||||
* @param pc2
|
||||
* @param ascending
|
||||
* @return
|
||||
*/
|
||||
public int compare(PersonCredit pc1, PersonCredit pc2, boolean ascending) {
|
||||
boolean valid1 = StringUtils.isNotBlank(pc1.getReleaseDate());
|
||||
boolean valid2 = StringUtils.isNotBlank(pc2.getReleaseDate());
|
||||
|
||||
if (!valid1 && !valid2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!valid1) {
|
||||
return ascending ? -1 : 1;
|
||||
}
|
||||
|
||||
if (!valid2) {
|
||||
return ascending ? 1 : -1;
|
||||
}
|
||||
|
||||
int year1 = extractYear(pc1.getReleaseDate());
|
||||
int year2 = extractYear(pc2.getReleaseDate());
|
||||
return ascending ? year1 - year2 : year2 - year1;
|
||||
}
|
||||
|
||||
/**
|
||||
* locate a 4 digit year in a date string
|
||||
*
|
||||
* @param date
|
||||
* @return
|
||||
*/
|
||||
private static int extractYear(String date) {
|
||||
int year = 0;
|
||||
Matcher m = YEAR_PATTERN.matcher(date);
|
||||
if (m.find()) {
|
||||
year = Integer.parseInt(m.group(1));
|
||||
}
|
||||
|
||||
// Give up and return 0
|
||||
return year;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,506 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation;private either version 3 of the License;private or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful;private
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not;private see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.discover;
|
||||
|
||||
import com.omertron.themoviedbapi.enumeration.SortBy;
|
||||
import com.omertron.themoviedbapi.tools.Param;
|
||||
import com.omertron.themoviedbapi.tools.TmdbParameters;
|
||||
|
||||
/**
|
||||
* Generate a discover object for use in the MovieDbApi
|
||||
* <p/>
|
||||
* This allows you to just add the search components you are concerned with
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class Discover {
|
||||
|
||||
private final TmdbParameters params = new TmdbParameters();
|
||||
|
||||
private static final int YEAR_MIN = 1900;
|
||||
private static final int YEAR_MAX = 2100;
|
||||
|
||||
/**
|
||||
* Get the parameters
|
||||
* <p/>
|
||||
* This will be used to construct the URL in the API
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TmdbParameters getParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Minimum value is 1 if included.
|
||||
*
|
||||
* @param page
|
||||
* @return
|
||||
*/
|
||||
public Discover page(int page) {
|
||||
params.add(Param.PAGE, page);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* ISO 639-1 code
|
||||
*
|
||||
* @param language
|
||||
* @return
|
||||
*/
|
||||
public Discover language(String language) {
|
||||
params.add(Param.LANGUAGE, language);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Available options are <br>
|
||||
* vote_average.desc<br>
|
||||
* vote_average.asc<br>
|
||||
* release_date.desc<br>
|
||||
* release_date.asc<br>
|
||||
* popularity.desc<br>
|
||||
* popularity.asc
|
||||
*
|
||||
* @param sortBy
|
||||
* @return
|
||||
*/
|
||||
public Discover sortBy(SortBy sortBy) {
|
||||
params.add(Param.SORT_BY, sortBy.getPropertyString());
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the inclusion of adult titles
|
||||
*
|
||||
* @param includeAdult
|
||||
* @return
|
||||
*/
|
||||
public Discover includeAdult(boolean includeAdult) {
|
||||
params.add(Param.ADULT, includeAdult);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle the inclusion of items marked as a video.
|
||||
*
|
||||
* Expected value is a boolean, true or false. Default is true.
|
||||
*
|
||||
* @param includeVideo
|
||||
* @return
|
||||
*/
|
||||
public Discover includeVideo(boolean includeVideo) {
|
||||
params.add(Param.INCLUDE_VIDEO, includeVideo);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the results release dates to matches that include this value.
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
public Discover year(int year) {
|
||||
if (checkYear(year)) {
|
||||
params.add(Param.YEAR, year);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the results so that only the primary release date year has this value
|
||||
*
|
||||
* @param primaryReleaseYear
|
||||
* @return
|
||||
*/
|
||||
public Discover primaryReleaseYear(int primaryReleaseYear) {
|
||||
if (checkYear(primaryReleaseYear)) {
|
||||
params.add(Param.PRIMARY_RELEASE_YEAR, primaryReleaseYear);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are equal to, or have a vote count higher than this value
|
||||
*
|
||||
* @param voteCountGte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteCountGte(int voteCountGte) {
|
||||
params.add(Param.VOTE_COUNT_GTE, voteCountGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are equal to, or have a vote count higher than this value
|
||||
*
|
||||
* @param voteCountLte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteCountLte(int voteCountLte) {
|
||||
params.add(Param.VOTE_COUNT_LTE, voteCountLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are equal to, or have a higher average rating than this value
|
||||
*
|
||||
* @param voteAverageGte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteAverageGte(float voteAverageGte) {
|
||||
params.add(Param.VOTE_AVERAGE_GTE, voteAverageGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that are less than or equal to this value
|
||||
*
|
||||
* @param voteAverageLte
|
||||
* @return
|
||||
*/
|
||||
public Discover voteAverageLte(float voteAverageLte) {
|
||||
params.add(Param.VOTE_AVERAGE_LTE, voteAverageLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The minimum release to include.
|
||||
* <p/>
|
||||
* Expected format is YYYY-MM-DD.
|
||||
*
|
||||
* @param releaseDateGte
|
||||
* @return
|
||||
*/
|
||||
public Discover releaseDateGte(String releaseDateGte) {
|
||||
params.add(Param.RELEASE_DATE_GTE, releaseDateGte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The maximum release to include.
|
||||
* <p/>
|
||||
* Expected format is YYYY-MM-DD.
|
||||
*
|
||||
* @param releaseDateLte
|
||||
* @return
|
||||
*/
|
||||
public Discover releaseDateLte(String releaseDateLte) {
|
||||
params.add(Param.RELEASE_DATE_LTE, releaseDateLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with certifications for a specific country.
|
||||
* <p/>
|
||||
* When this value is specified, 'certificationLte' is required.
|
||||
* <p/>
|
||||
* A ISO 3166-1 is expected
|
||||
*
|
||||
* @param certificationCountry
|
||||
* @return
|
||||
*/
|
||||
public Discover certificationCountry(String certificationCountry) {
|
||||
params.add(Param.CERTIFICATION_COUNTRY, certificationCountry);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with this certification and lower.
|
||||
* <p/>
|
||||
* Expected value is a valid certification for the specified 'certificationCountry'.
|
||||
*
|
||||
* @param certificationLte
|
||||
* @return
|
||||
*/
|
||||
public Discover certificationLte(String certificationLte) {
|
||||
params.add(Param.CERTIFICATION_LTE, certificationLte);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with this certification.
|
||||
*
|
||||
* Expected value is a valid certification for the specified 'certificationCountry'.
|
||||
*
|
||||
* @param certification
|
||||
* @return
|
||||
*/
|
||||
public Discover certification(String certification) {
|
||||
params.add(Param.CERTIFICATION, certification);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that have this person id added as a cast member.
|
||||
*
|
||||
* Expected value is an integer (the id of a person).
|
||||
*
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'
|
||||
*
|
||||
* @param withCast
|
||||
* @return
|
||||
*/
|
||||
public Discover withCast(String withCast) {
|
||||
params.add(Param.WITH_CAST, withCast);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include media that have these person IDs added as cast members.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withCast
|
||||
* @return
|
||||
*/
|
||||
public Discover withCast(WithBuilder withCast) {
|
||||
return withCast(withCast.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that have this person id added as a crew member.
|
||||
*
|
||||
* Expected value is an integer (the id of a person).
|
||||
*
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'.
|
||||
*
|
||||
* @param withCrew
|
||||
* @return
|
||||
*/
|
||||
public Discover withCrew(String withCrew) {
|
||||
params.add(Param.WITH_CREW, withCrew);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include media that have these person IDs added as crew members.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withCrew
|
||||
* @return
|
||||
*/
|
||||
public Discover withCrew(WithBuilder withCrew) {
|
||||
return withCrew(withCrew.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter movies to include a specific company.
|
||||
*
|
||||
* Expected value is an integer (the id of a company).
|
||||
*
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'
|
||||
*
|
||||
* @param withCompanies
|
||||
* @return
|
||||
*/
|
||||
public Discover withCompanies(String withCompanies) {
|
||||
params.add(Param.WITH_COMPANIES, withCompanies);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter movies to include a specific company.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withCompanies
|
||||
* @return
|
||||
*/
|
||||
public Discover withCompanies(WithBuilder withCompanies) {
|
||||
return withCompanies(withCompanies.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with the specified genres.
|
||||
* <p/>
|
||||
* Expected value is an integer (the id of a genre).
|
||||
* <p/>
|
||||
* Multiple values can be specified.
|
||||
* <p/>
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'
|
||||
*
|
||||
* @param withGenres
|
||||
* @return
|
||||
*/
|
||||
public Discover withGenres(String withGenres) {
|
||||
params.add(Param.WITH_GENRES, withGenres);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with the specified genres.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withGenres
|
||||
* @return
|
||||
*/
|
||||
public Discover withGenres(WithBuilder withGenres) {
|
||||
return withGenres(withGenres.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with the specified genres.
|
||||
*
|
||||
* Expected value is an integer (the id of a genre).
|
||||
*
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'.
|
||||
*
|
||||
* @param withKeywords
|
||||
* @return
|
||||
*/
|
||||
public Discover withKeywords(String withKeywords) {
|
||||
params.add(Param.WITH_KEYWORDS, withKeywords);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies with the specified genres.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withKeywords
|
||||
* @return
|
||||
*/
|
||||
public Discover withKeywords(WithBuilder withKeywords) {
|
||||
return withKeywords(withKeywords.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that have these person id's added as a cast or crew member.
|
||||
*
|
||||
* Expected value is an integer (the id or ids of a person).
|
||||
*
|
||||
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'.
|
||||
*
|
||||
* @param withPeople
|
||||
* @return
|
||||
*/
|
||||
public Discover withPeople(String withPeople) {
|
||||
params.add(Param.WITH_PEOPLE, withPeople);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only include movies that have these person id's added as a cast or crew member.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withPeople
|
||||
* @return
|
||||
*/
|
||||
public Discover withPeople(WithBuilder withPeople) {
|
||||
return withPeople(withPeople.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the air dates that match this year
|
||||
*
|
||||
* Expected value is a year.
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
public Discover firstAirDateYear(int year) {
|
||||
if (checkYear(year)) {
|
||||
params.add(Param.FIRST_AIR_DATE_YEAR, year);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the air dates to years that are greater than or equal to this year
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
public Discover firstAirDateYearGte(int year) {
|
||||
if (checkYear(year)) {
|
||||
params.add(Param.FIRST_AIR_DATE_GTE, year);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the air dates to years that are less than or equal to this year
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
public Discover firstAirDateYearLte(int year) {
|
||||
if (checkYear(year)) {
|
||||
params.add(Param.FIRST_AIR_DATE_LTE, year);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter TV shows to include a specific network.
|
||||
*
|
||||
* Expected value is an integer (the id of a network).
|
||||
*
|
||||
* They can be comma separated to indicate an 'AND' query.
|
||||
*
|
||||
* @param withNetworks
|
||||
* @return
|
||||
*/
|
||||
public Discover withNetworks(String withNetworks) {
|
||||
params.add(Param.WITH_NETWORKS, withNetworks);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter TV shows to include a specific network.
|
||||
*
|
||||
* Use the WithBuilder to generate the list,e.g.
|
||||
*
|
||||
* new WithBuilder(1).and(2).and(3)
|
||||
*
|
||||
* @param withNetworks
|
||||
* @return
|
||||
*/
|
||||
public Discover withNetworks(WithBuilder withNetworks) {
|
||||
return withNetworks(withNetworks.build());
|
||||
}
|
||||
|
||||
/**
|
||||
* check the year is between the min and max
|
||||
*
|
||||
* @param year
|
||||
* @return
|
||||
*/
|
||||
private boolean checkYear(int year) {
|
||||
return year >= YEAR_MIN && year <= YEAR_MAX;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.discover;
|
||||
|
||||
/**
|
||||
* Class to create a String for the "with???" parameters of the Discover method
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public class WithBuilder {
|
||||
|
||||
StringBuilder value = new StringBuilder();
|
||||
|
||||
/**
|
||||
* Create the first ID in the string
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
public WithBuilder(int id) {
|
||||
value.append(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the first ID in the string
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
public WithBuilder(String id) {
|
||||
value.append(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the string to pass to the method
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public String build() {
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the string to pass to the method
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an "AND ID"
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public WithBuilder and(int id) {
|
||||
value.append(",").append(id);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an "AND ID"
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public WithBuilder and(String id) {
|
||||
value.append(",").append(id);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an "OR ID"
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public WithBuilder or(int id) {
|
||||
value.append("|").append(id);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an "OR ID"
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
public WithBuilder or(String id) {
|
||||
value.append("|").append(id);
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.media;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart.Boston
|
||||
*/
|
||||
public class MediaCredit extends AbstractJsonMapping {
|
||||
|
||||
@JsonProperty("credit_id")
|
||||
private String creditId;
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
@JsonProperty("profile_path")
|
||||
private String profilePath;
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
|
||||
public String getCreditId() {
|
||||
return creditId;
|
||||
}
|
||||
|
||||
public void setCreditId(String creditId) {
|
||||
this.creditId = creditId;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getProfilePath() {
|
||||
return profilePath;
|
||||
}
|
||||
|
||||
public void setProfilePath(String profilePath) {
|
||||
this.profilePath = profilePath;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.media;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart.Boston
|
||||
*/
|
||||
public class MediaCreditCast extends MediaCredit {
|
||||
|
||||
@JsonProperty("cast_id")
|
||||
private int castId = 0;
|
||||
@JsonProperty("character")
|
||||
private String character;
|
||||
@JsonProperty("order")
|
||||
private int order;
|
||||
|
||||
public int getCastId() {
|
||||
return castId;
|
||||
}
|
||||
|
||||
public void setCastId(int castId) {
|
||||
this.castId = castId;
|
||||
}
|
||||
|
||||
public String getCharacter() {
|
||||
return character;
|
||||
}
|
||||
|
||||
public void setCharacter(String character) {
|
||||
this.character = character;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public void setOrder(int order) {
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.media;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class MediaCreditList extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
@JsonProperty("cast")
|
||||
private List<MediaCreditCast> cast;
|
||||
@JsonProperty("guest_stars")
|
||||
private List<MediaCreditCast> guestStars;
|
||||
@JsonProperty("crew")
|
||||
private List<MediaCreditCrew> crew;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public List<MediaCreditCast> getCast() {
|
||||
return cast;
|
||||
}
|
||||
|
||||
public void setCast(List<MediaCreditCast> cast) {
|
||||
this.cast = cast;
|
||||
}
|
||||
|
||||
public List<MediaCreditCrew> getCrew() {
|
||||
return crew;
|
||||
}
|
||||
|
||||
public void setCrew(List<MediaCreditCrew> crew) {
|
||||
this.crew = crew;
|
||||
}
|
||||
|
||||
public List<MediaCreditCast> getGuestStars() {
|
||||
return guestStars;
|
||||
}
|
||||
|
||||
public void setGuestStars(List<MediaCreditCast> guestStars) {
|
||||
this.guestStars = guestStars;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.media;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart.Boston
|
||||
*/
|
||||
public class MediaState extends AbstractJsonMapping {
|
||||
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
@JsonProperty("favorite")
|
||||
private boolean favorite;
|
||||
@JsonProperty("watchlist")
|
||||
private boolean watchlist;
|
||||
private float rated;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public boolean isFavorite() {
|
||||
return favorite;
|
||||
}
|
||||
|
||||
public void setFavorite(boolean favorite) {
|
||||
this.favorite = favorite;
|
||||
}
|
||||
|
||||
public boolean isWatchlist() {
|
||||
return watchlist;
|
||||
}
|
||||
|
||||
public void setWatchlist(boolean watchlist) {
|
||||
this.watchlist = watchlist;
|
||||
}
|
||||
|
||||
public float getRated() {
|
||||
return rated;
|
||||
}
|
||||
|
||||
@JsonSetter("rated")
|
||||
public void setRated(RatedValue rated) {
|
||||
this.rated = rated.getValue();
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.movie;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
|
||||
/**
|
||||
* Basic Movie information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class MovieBasic extends MediaBasic {
|
||||
|
||||
@JsonProperty("adult")
|
||||
private boolean adult;
|
||||
@JsonProperty("original_title")
|
||||
private String originalTitle;
|
||||
@JsonProperty("release_date")
|
||||
private String releaseDate;
|
||||
@JsonProperty("title")
|
||||
private String title;
|
||||
@JsonProperty("video")
|
||||
private boolean video;
|
||||
@JsonProperty("rating")
|
||||
private float rating = -1f;
|
||||
|
||||
public boolean isAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public void setAdult(boolean adult) {
|
||||
this.adult = adult;
|
||||
}
|
||||
|
||||
public String getOriginalTitle() {
|
||||
return originalTitle;
|
||||
}
|
||||
|
||||
public void setOriginalTitle(String originalTitle) {
|
||||
this.originalTitle = originalTitle;
|
||||
}
|
||||
|
||||
public String getReleaseDate() {
|
||||
return releaseDate;
|
||||
}
|
||||
|
||||
public void setReleaseDate(String releaseDate) {
|
||||
this.releaseDate = releaseDate;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public boolean isVideo() {
|
||||
return video;
|
||||
}
|
||||
|
||||
public void setVideo(boolean video) {
|
||||
this.video = video;
|
||||
}
|
||||
|
||||
public float getRating() {
|
||||
return rating;
|
||||
}
|
||||
|
||||
public void setRating(float rating) {
|
||||
this.rating = rating;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.tv.TVCredit;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class CreditInfo extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("id")
|
||||
private String id;
|
||||
@JsonProperty("credit_type")
|
||||
private String creditType;
|
||||
@JsonProperty("department")
|
||||
private String department;
|
||||
@JsonProperty("job")
|
||||
private String job;
|
||||
@JsonProperty("media_type")
|
||||
private String mediaType;
|
||||
@JsonProperty("person")
|
||||
private PersonBasic person;
|
||||
@JsonProperty("media")
|
||||
private TVCredit media;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCreditType() {
|
||||
return creditType;
|
||||
}
|
||||
|
||||
public void setCreditType(String creditType) {
|
||||
this.creditType = creditType;
|
||||
}
|
||||
|
||||
public String getDepartment() {
|
||||
return department;
|
||||
}
|
||||
|
||||
public void setDepartment(String department) {
|
||||
this.department = department;
|
||||
}
|
||||
|
||||
public String getJob() {
|
||||
return job;
|
||||
}
|
||||
|
||||
public void setJob(String job) {
|
||||
this.job = job;
|
||||
}
|
||||
|
||||
public String getMediaType() {
|
||||
return mediaType;
|
||||
}
|
||||
|
||||
public void setMediaType(String mediaType) {
|
||||
this.mediaType = mediaType;
|
||||
}
|
||||
|
||||
public PersonBasic getPerson() {
|
||||
return person;
|
||||
}
|
||||
|
||||
public void setPerson(PersonBasic person) {
|
||||
this.person = person;
|
||||
}
|
||||
|
||||
public TVCredit getMedia() {
|
||||
return media;
|
||||
}
|
||||
|
||||
public void setMedia(TVCredit media) {
|
||||
this.media = media;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.enumeration.MediaType;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class CreditMovieBasic extends CreditBasic {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("adult")
|
||||
private boolean adult;
|
||||
@JsonProperty("original_title")
|
||||
private String originalTitle;
|
||||
@JsonProperty("release_date")
|
||||
private String releaseDate;
|
||||
@JsonProperty("title")
|
||||
private String title;
|
||||
|
||||
public CreditMovieBasic() {
|
||||
setMediaType(MediaType.MOVIE);
|
||||
}
|
||||
|
||||
public boolean isAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public void setAdult(boolean adult) {
|
||||
this.adult = adult;
|
||||
}
|
||||
|
||||
public String getOriginalTitle() {
|
||||
return originalTitle;
|
||||
}
|
||||
|
||||
public void setOriginalTitle(String originalTitle) {
|
||||
this.originalTitle = originalTitle;
|
||||
}
|
||||
|
||||
public String getReleaseDate() {
|
||||
return releaseDate;
|
||||
}
|
||||
|
||||
public void setReleaseDate(String releaseDate) {
|
||||
this.releaseDate = releaseDate;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.enumeration.MediaType;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class CreditTVBasic extends CreditBasic {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("episode_count")
|
||||
private int episodeCount;
|
||||
@JsonProperty("first_air_date")
|
||||
private String firstAirDate;
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@JsonProperty("original_name")
|
||||
private String originalName;
|
||||
|
||||
public CreditTVBasic() {
|
||||
setMediaType(MediaType.TV);
|
||||
}
|
||||
|
||||
public int getEpisodeCount() {
|
||||
return episodeCount;
|
||||
}
|
||||
|
||||
public void setEpisodeCount(int episodeCount) {
|
||||
this.episodeCount = episodeCount;
|
||||
}
|
||||
|
||||
public String getFirstAirDate() {
|
||||
return firstAirDate;
|
||||
}
|
||||
|
||||
public void setFirstAirDate(String firstAirDate) {
|
||||
this.firstAirDate = firstAirDate;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getOriginalName() {
|
||||
return originalName;
|
||||
}
|
||||
|
||||
public void setOriginalName(String originalName) {
|
||||
this.originalName = originalName;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public class ExternalID extends AbstractJsonMapping {
|
||||
|
||||
@JsonProperty("id")
|
||||
private String id;
|
||||
@JsonProperty("imdb_id")
|
||||
private String imdbId;
|
||||
@JsonProperty("freebase_mid")
|
||||
private String freebaseMid;
|
||||
@JsonProperty("freebase_id")
|
||||
private String freebaseId;
|
||||
@JsonProperty("tvdb_id")
|
||||
private String tvdbId;
|
||||
@JsonProperty("tvrage_id")
|
||||
private String tvrageId;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getImdbId() {
|
||||
return imdbId;
|
||||
}
|
||||
|
||||
public void setImdbId(String imdbId) {
|
||||
this.imdbId = imdbId;
|
||||
}
|
||||
|
||||
public String getFreebaseMid() {
|
||||
return freebaseMid;
|
||||
}
|
||||
|
||||
public void setFreebaseMid(String freebaseMid) {
|
||||
this.freebaseMid = freebaseMid;
|
||||
}
|
||||
|
||||
public String getFreebaseId() {
|
||||
return freebaseId;
|
||||
}
|
||||
|
||||
public void setFreebaseId(String freebaseId) {
|
||||
this.freebaseId = freebaseId;
|
||||
}
|
||||
|
||||
public String getTvrageId() {
|
||||
return tvrageId;
|
||||
}
|
||||
|
||||
public void setTvrageId(String tvrageId) {
|
||||
this.tvrageId = tvrageId;
|
||||
}
|
||||
|
||||
public String getTvdbId() {
|
||||
return tvdbId;
|
||||
}
|
||||
|
||||
public void setTvdbId(String tvdbId) {
|
||||
this.tvdbId = tvdbId;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class Person extends PersonBasic {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("adult")
|
||||
private boolean adult;
|
||||
@JsonProperty("also_known_as")
|
||||
private List<String> alsoKnownAs;
|
||||
@JsonProperty("biography")
|
||||
private String biography;
|
||||
@JsonProperty("birthday")
|
||||
private String birthday;
|
||||
@JsonProperty("deathday")
|
||||
private String deathday;
|
||||
@JsonProperty("homepage")
|
||||
private String homepage;
|
||||
@JsonProperty("imdb_id")
|
||||
private String imdbId;
|
||||
@JsonProperty("place_of_birth")
|
||||
private String placeOfBirth;
|
||||
@JsonProperty("popularity")
|
||||
private float popularity;
|
||||
|
||||
public boolean isAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public void setAdult(boolean adult) {
|
||||
this.adult = adult;
|
||||
}
|
||||
|
||||
public List<String> getAlsoKnownAs() {
|
||||
return alsoKnownAs;
|
||||
}
|
||||
|
||||
public void setAlsoKnownAs(List<String> alsoKnownAs) {
|
||||
this.alsoKnownAs = alsoKnownAs;
|
||||
}
|
||||
|
||||
public String getBiography() {
|
||||
return biography;
|
||||
}
|
||||
|
||||
public void setBiography(String biography) {
|
||||
this.biography = biography;
|
||||
}
|
||||
|
||||
public String getBirthday() {
|
||||
return birthday;
|
||||
}
|
||||
|
||||
public void setBirthday(String birthday) {
|
||||
this.birthday = birthday;
|
||||
}
|
||||
|
||||
public String getDeathday() {
|
||||
return deathday;
|
||||
}
|
||||
|
||||
public void setDeathday(String deathday) {
|
||||
this.deathday = deathday;
|
||||
}
|
||||
|
||||
public String getHomepage() {
|
||||
return homepage;
|
||||
}
|
||||
|
||||
public void setHomepage(String homepage) {
|
||||
this.homepage = homepage;
|
||||
}
|
||||
|
||||
public String getImdbId() {
|
||||
return imdbId;
|
||||
}
|
||||
|
||||
public void setImdbId(String imdbId) {
|
||||
this.imdbId = imdbId;
|
||||
}
|
||||
|
||||
public String getPlaceOfBirth() {
|
||||
return placeOfBirth;
|
||||
}
|
||||
|
||||
public void setPlaceOfBirth(String placeOfBirth) {
|
||||
this.placeOfBirth = placeOfBirth;
|
||||
}
|
||||
|
||||
public float getPopularity() {
|
||||
return popularity;
|
||||
}
|
||||
|
||||
public void setPopularity(float popularity) {
|
||||
this.popularity = popularity;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
* @param <T>
|
||||
*/
|
||||
public class PersonCredits<T extends CreditBasic> extends AbstractJsonMapping {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
private List<T> cast;
|
||||
private List<T> crew;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public List<T> getCast() {
|
||||
return cast;
|
||||
}
|
||||
|
||||
@JsonSetter("cast")
|
||||
public void setCast(List<T> cast) {
|
||||
this.cast = cast;
|
||||
}
|
||||
|
||||
public List<T> getCrew() {
|
||||
return crew;
|
||||
}
|
||||
|
||||
@JsonSetter("crew")
|
||||
public void setCrew(List<T> crew) {
|
||||
this.crew = crew;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Jackson mixin class to deserialize the combined credits
|
||||
*
|
||||
* @author Stuart.Boston
|
||||
*/
|
||||
public class PersonCreditsMixIn {
|
||||
|
||||
@JsonTypeInfo(
|
||||
use = JsonTypeInfo.Id.NAME,
|
||||
include = JsonTypeInfo.As.PROPERTY,
|
||||
property = "media_type",
|
||||
defaultImpl = CreditBasic.class
|
||||
)
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = CreditMovieBasic.class, name = "movie"),
|
||||
@JsonSubTypes.Type(value = CreditTVBasic.class, name = "tv")
|
||||
})
|
||||
@JsonSetter("cast")
|
||||
public void setCast(List<CreditBasic> cast) {
|
||||
// Mixin empty class
|
||||
}
|
||||
|
||||
@JsonTypeInfo(
|
||||
use = JsonTypeInfo.Id.NAME,
|
||||
include = JsonTypeInfo.As.PROPERTY,
|
||||
property = "media_type",
|
||||
defaultImpl = CreditBasic.class
|
||||
)
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = CreditMovieBasic.class, name = "movie"),
|
||||
@JsonSubTypes.Type(value = CreditTVBasic.class, name = "tv")
|
||||
})
|
||||
@JsonSetter("crew")
|
||||
public void setCrew(List<CreditBasic> crew) {
|
||||
// Mixin empty class
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.person;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
import com.omertron.themoviedbapi.model.movie.MovieBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVBasic;
|
||||
import com.omertron.themoviedbapi.model.tv.TVEpisodeBasic;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class PersonFind extends PersonBasic {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@JsonProperty("adult")
|
||||
private Boolean adult;
|
||||
@JsonProperty("popularity")
|
||||
private Float popularity;
|
||||
private List<? extends MediaBasic> knownFor;
|
||||
|
||||
public Boolean getAdult() {
|
||||
return adult;
|
||||
}
|
||||
|
||||
public void setAdult(Boolean adult) {
|
||||
this.adult = adult;
|
||||
}
|
||||
|
||||
public Float getPopularity() {
|
||||
return popularity;
|
||||
}
|
||||
|
||||
public void setPopularity(Float popularity) {
|
||||
this.popularity = popularity;
|
||||
}
|
||||
|
||||
public List<? extends MediaBasic> getKnownFor() {
|
||||
return knownFor;
|
||||
}
|
||||
|
||||
@JsonTypeInfo(
|
||||
use = JsonTypeInfo.Id.NAME,
|
||||
include = JsonTypeInfo.As.PROPERTY,
|
||||
property = "media_type",
|
||||
defaultImpl = MediaBasic.class
|
||||
)
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = MovieBasic.class, name = "movie"),
|
||||
@JsonSubTypes.Type(value = TVBasic.class, name = "tv"),
|
||||
@JsonSubTypes.Type(value = TVEpisodeBasic.class, name = "episode")
|
||||
})
|
||||
@JsonSetter("known_for")
|
||||
public void setKnownFor(List<? extends MediaBasic> knownFor) {
|
||||
this.knownFor = knownFor;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Basic TV information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVBasic extends MediaBasic {
|
||||
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@JsonProperty("original_name")
|
||||
private String originalName;
|
||||
@JsonProperty("first_air_date")
|
||||
private String firstAirDate;
|
||||
@JsonProperty("origin_country")
|
||||
private List<String> originCountry;
|
||||
@JsonProperty("rating")
|
||||
private float rating = -1f;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getOriginalName() {
|
||||
return originalName;
|
||||
}
|
||||
|
||||
public void setOriginalName(String originalName) {
|
||||
this.originalName = originalName;
|
||||
}
|
||||
|
||||
public String getFirstAirDate() {
|
||||
return firstAirDate;
|
||||
}
|
||||
|
||||
public void setFirstAirDate(String firstAirDate) {
|
||||
this.firstAirDate = firstAirDate;
|
||||
}
|
||||
|
||||
public List<String> getOriginCountry() {
|
||||
return originCountry;
|
||||
}
|
||||
|
||||
public void setOriginCountry(List<String> originCountry) {
|
||||
this.originCountry = originCountry;
|
||||
}
|
||||
|
||||
public float getRating() {
|
||||
return rating;
|
||||
}
|
||||
|
||||
public void setRating(float rating) {
|
||||
this.rating = rating;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.AbstractIdName;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TV Favorite information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVCredit extends AbstractIdName {
|
||||
|
||||
@JsonProperty("original_name")
|
||||
private String originalName;
|
||||
@JsonProperty("character")
|
||||
private String character;
|
||||
@JsonProperty("seasons")
|
||||
private List<TVSeasonBasic> seasons;
|
||||
@JsonProperty("episodes")
|
||||
private List<TVEpisodeBasic> episodes;
|
||||
|
||||
public String getOriginalName() {
|
||||
return originalName;
|
||||
}
|
||||
|
||||
public void setOriginalName(String originalName) {
|
||||
this.originalName = originalName;
|
||||
}
|
||||
|
||||
public String getCharacter() {
|
||||
return character;
|
||||
}
|
||||
|
||||
public void setCharacter(String character) {
|
||||
this.character = character;
|
||||
}
|
||||
|
||||
public List<TVSeasonBasic> getSeasons() {
|
||||
return seasons;
|
||||
}
|
||||
|
||||
public void setSeasons(List<TVSeasonBasic> seasons) {
|
||||
this.seasons = seasons;
|
||||
}
|
||||
|
||||
public List<TVEpisodeBasic> getEpisodes() {
|
||||
return episodes;
|
||||
}
|
||||
|
||||
public void setEpisodes(List<TVEpisodeBasic> episodes) {
|
||||
this.episodes = episodes;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.media.MediaBasic;
|
||||
|
||||
/**
|
||||
* TV Favorite information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVEpisodeBasic extends MediaBasic {
|
||||
|
||||
@JsonProperty("air_date")
|
||||
private String airDate;
|
||||
@JsonProperty("season_number")
|
||||
private int seasonNumber;
|
||||
@JsonProperty("episode_number")
|
||||
private int episodeNumber;
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@JsonProperty("overview")
|
||||
private String overview;
|
||||
@JsonProperty("still_path")
|
||||
private String stillPath;
|
||||
@JsonProperty("show_id")
|
||||
private String showId;
|
||||
|
||||
public String getAirDate() {
|
||||
return airDate;
|
||||
}
|
||||
|
||||
public void setAirDate(String airDate) {
|
||||
this.airDate = airDate;
|
||||
}
|
||||
|
||||
public int getSeasonNumber() {
|
||||
return seasonNumber;
|
||||
}
|
||||
|
||||
public void setSeasonNumber(int seasonNumber) {
|
||||
this.seasonNumber = seasonNumber;
|
||||
}
|
||||
|
||||
public int getEpisodeNumber() {
|
||||
return episodeNumber;
|
||||
}
|
||||
|
||||
public void setEpisodeNumber(int episodeNumber) {
|
||||
this.episodeNumber = episodeNumber;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getOverview() {
|
||||
return overview;
|
||||
}
|
||||
|
||||
public void setOverview(String overview) {
|
||||
this.overview = overview;
|
||||
}
|
||||
|
||||
public String getStillPath() {
|
||||
return stillPath;
|
||||
}
|
||||
|
||||
public void setStillPath(String stillPath) {
|
||||
this.stillPath = stillPath;
|
||||
}
|
||||
|
||||
public String getShowId() {
|
||||
return showId;
|
||||
}
|
||||
|
||||
public void setShowId(String showId) {
|
||||
this.showId = showId;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.media.MediaCreditCast;
|
||||
import com.omertron.themoviedbapi.model.media.MediaCreditCrew;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TV Episode information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVEpisodeInfo extends TVEpisodeBasic {
|
||||
|
||||
@JsonProperty("crew")
|
||||
private List<MediaCreditCrew> crew;
|
||||
@JsonProperty("guest_stars")
|
||||
private List<MediaCreditCast> guestStars;
|
||||
@JsonProperty("production_code")
|
||||
private String productionCode;
|
||||
|
||||
public List<MediaCreditCrew> getCrew() {
|
||||
return crew;
|
||||
}
|
||||
|
||||
public void setCrew(List<MediaCreditCrew> crew) {
|
||||
this.crew = crew;
|
||||
}
|
||||
|
||||
public List<MediaCreditCast> getGuestStars() {
|
||||
return guestStars;
|
||||
}
|
||||
|
||||
public void setGuestStars(List<MediaCreditCast> guestStars) {
|
||||
this.guestStars = guestStars;
|
||||
}
|
||||
|
||||
public String getProductionCode() {
|
||||
return productionCode;
|
||||
}
|
||||
|
||||
public void setProductionCode(String productionCode) {
|
||||
this.productionCode = productionCode;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,196 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.omertron.themoviedbapi.model.Genre;
|
||||
import com.omertron.themoviedbapi.model.movie.ProductionCompany;
|
||||
import com.omertron.themoviedbapi.model.network.Network;
|
||||
import com.omertron.themoviedbapi.model.person.PersonBasic;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Stuart
|
||||
*/
|
||||
public class TVInfo extends TVBasic {
|
||||
|
||||
@JsonProperty("created_by")
|
||||
private List<PersonBasic> createdBy;
|
||||
@JsonProperty("episode_run_time")
|
||||
private List<Integer> episodeRunTime;
|
||||
@JsonProperty("genres")
|
||||
private List<Genre> genres;
|
||||
@JsonProperty("homepage")
|
||||
private String homepage;
|
||||
@JsonProperty("in_production")
|
||||
private boolean inProduction;
|
||||
@JsonProperty("languages")
|
||||
private List<String> languages;
|
||||
@JsonProperty("last_air_date")
|
||||
private String lastAirDate;
|
||||
@JsonProperty("networks")
|
||||
private List<Network> networks;
|
||||
@JsonProperty("number_of_episodes")
|
||||
private int numberOfEpisodes;
|
||||
@JsonProperty("number_of_seasons")
|
||||
private int numberOfSeasons;
|
||||
@JsonProperty("original_language")
|
||||
private String originalLanguage;
|
||||
@JsonProperty("overview")
|
||||
private String overview;
|
||||
@JsonProperty("production_companies")
|
||||
private List<ProductionCompany> productionCompanies;
|
||||
@JsonProperty("seasons")
|
||||
private List<TVSeasonBasic> seasons;
|
||||
@JsonProperty("status")
|
||||
private String status;
|
||||
@JsonProperty("type")
|
||||
private String type;
|
||||
|
||||
public List<PersonBasic> getCreatedBy() {
|
||||
return createdBy;
|
||||
}
|
||||
|
||||
public void setCreatedBy(List<PersonBasic> createdBy) {
|
||||
this.createdBy = createdBy;
|
||||
}
|
||||
|
||||
public List<Integer> getEpisodeRunTime() {
|
||||
return episodeRunTime;
|
||||
}
|
||||
|
||||
public void setEpisodeRunTime(List<Integer> episodeRunTime) {
|
||||
this.episodeRunTime = episodeRunTime;
|
||||
}
|
||||
|
||||
public List<Genre> getGenres() {
|
||||
return genres;
|
||||
}
|
||||
|
||||
public void setGenres(List<Genre> genres) {
|
||||
this.genres = genres;
|
||||
}
|
||||
|
||||
public String getHomepage() {
|
||||
return homepage;
|
||||
}
|
||||
|
||||
public void setHomepage(String homepage) {
|
||||
this.homepage = homepage;
|
||||
}
|
||||
|
||||
public boolean isInProduction() {
|
||||
return inProduction;
|
||||
}
|
||||
|
||||
public void setInProduction(boolean inProduction) {
|
||||
this.inProduction = inProduction;
|
||||
}
|
||||
|
||||
public List<String> getLanguages() {
|
||||
return languages;
|
||||
}
|
||||
|
||||
public void setLanguages(List<String> languages) {
|
||||
this.languages = languages;
|
||||
}
|
||||
|
||||
public String getLastAirDate() {
|
||||
return lastAirDate;
|
||||
}
|
||||
|
||||
public void setLastAirDate(String lastAirDate) {
|
||||
this.lastAirDate = lastAirDate;
|
||||
}
|
||||
|
||||
public List<Network> getNetworks() {
|
||||
return networks;
|
||||
}
|
||||
|
||||
public void setNetworks(List<Network> networks) {
|
||||
this.networks = networks;
|
||||
}
|
||||
|
||||
public int getNumberOfEpisodes() {
|
||||
return numberOfEpisodes;
|
||||
}
|
||||
|
||||
public void setNumberOfEpisodes(int numberOfEpisodes) {
|
||||
this.numberOfEpisodes = numberOfEpisodes;
|
||||
}
|
||||
|
||||
public int getNumberOfSeasons() {
|
||||
return numberOfSeasons;
|
||||
}
|
||||
|
||||
public void setNumberOfSeasons(int numberOfSeasons) {
|
||||
this.numberOfSeasons = numberOfSeasons;
|
||||
}
|
||||
|
||||
public String getOriginalLanguage() {
|
||||
return originalLanguage;
|
||||
}
|
||||
|
||||
public void setOriginalLanguage(String originalLanguage) {
|
||||
this.originalLanguage = originalLanguage;
|
||||
}
|
||||
|
||||
public String getOverview() {
|
||||
return overview;
|
||||
}
|
||||
|
||||
public void setOverview(String overview) {
|
||||
this.overview = overview;
|
||||
}
|
||||
|
||||
public List<ProductionCompany> getProductionCompanies() {
|
||||
return productionCompanies;
|
||||
}
|
||||
|
||||
public void setProductionCompanies(List<ProductionCompany> productionCompanies) {
|
||||
this.productionCompanies = productionCompanies;
|
||||
}
|
||||
|
||||
public List<TVSeasonBasic> getSeasons() {
|
||||
return seasons;
|
||||
}
|
||||
|
||||
public void setSeasons(List<TVSeasonBasic> seasons) {
|
||||
this.seasons = seasons;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* TV Favorite information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVSeasonBasic extends AbstractJsonMapping {
|
||||
|
||||
@JsonProperty("id")
|
||||
private int id = -1;
|
||||
@JsonProperty("air_date")
|
||||
private String airDate;
|
||||
@JsonProperty("poster_path")
|
||||
private String posterPath;
|
||||
@JsonProperty("season_number")
|
||||
private int seasonNumber;
|
||||
@JsonProperty("episode_count")
|
||||
private int episodeCount = -1;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getAirDate() {
|
||||
return airDate;
|
||||
}
|
||||
|
||||
public void setAirDate(String airDate) {
|
||||
this.airDate = airDate;
|
||||
}
|
||||
|
||||
public String getPosterPath() {
|
||||
return posterPath;
|
||||
}
|
||||
|
||||
public void setPosterPath(String posterPath) {
|
||||
this.posterPath = posterPath;
|
||||
}
|
||||
|
||||
public int getSeasonNumber() {
|
||||
return seasonNumber;
|
||||
}
|
||||
|
||||
public void setSeasonNumber(int seasonNumber) {
|
||||
this.seasonNumber = seasonNumber;
|
||||
}
|
||||
|
||||
public int getEpisodeCount() {
|
||||
return episodeCount;
|
||||
}
|
||||
|
||||
public void setEpisodeCount(int episodeCount) {
|
||||
this.episodeCount = episodeCount;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2015 Stuart Boston
|
||||
*
|
||||
* This file is part of TheMovieDB API.
|
||||
*
|
||||
* TheMovieDB API is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* any later version.
|
||||
*
|
||||
* TheMovieDB API is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package com.omertron.themoviedbapi.model.tv;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TV Season information
|
||||
*
|
||||
* @author stuart.boston
|
||||
*/
|
||||
public class TVSeasonInfo extends TVSeasonBasic {
|
||||
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@JsonProperty("overview")
|
||||
private String overview;
|
||||
@JsonProperty("episodes")
|
||||
private List<TVEpisodeInfo> episodes;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getOverview() {
|
||||
return overview;
|
||||
}
|
||||
|
||||
public void setOverview(String overview) {
|
||||
this.overview = overview;
|
||||
}
|
||||
|
||||
public List<TVEpisodeInfo> getEpisodes() {
|
||||
return episodes;
|
||||
}
|
||||
|
||||
public void setEpisodes(List<TVEpisodeInfo> episodes) {
|
||||
this.episodes = episodes;
|
||||
}
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue