178 lines
5.6 KiB
Python
178 lines
5.6 KiB
Python
import os
|
|
|
|
from ..tmdb import TMDb
|
|
from ..exceptions import TMDbException
|
|
|
|
|
|
class Account(TMDb):
|
|
_urls = {
|
|
"details": "/account",
|
|
"created_lists": "/account/%s/lists",
|
|
"favorite_movies": "/account/%s/favorite/movies",
|
|
"favorite_tv": "/account/%s/favorite/tv",
|
|
"favorite": "/account/%s/favorite",
|
|
"rated_movies": "/account/%s/rated/movies",
|
|
"rated_tv": "/account/%s/rated/tv",
|
|
"rated_episodes": "/account/%s/rated/tv/episodes",
|
|
"movie_watchlist": "/account/%s/watchlist/movies",
|
|
"tv_watchlist": "/account/%s/watchlist/tv",
|
|
"watchlist": "/account/%s/watchlist",
|
|
}
|
|
|
|
@property
|
|
def account_id(self):
|
|
if not os.environ.get("TMDB_ACCOUNT_ID"):
|
|
os.environ["TMDB_ACCOUNT_ID"] = str(self.details()["id"])
|
|
return os.environ.get("TMDB_ACCOUNT_ID")
|
|
|
|
def details(self):
|
|
"""
|
|
Get your account details.
|
|
:return:
|
|
"""
|
|
return self._request_obj(
|
|
self._urls["details"],
|
|
params="session_id=%s" % self.session_id
|
|
)
|
|
|
|
def created_lists(self, page=1):
|
|
"""
|
|
Get all of the lists created by an account. Will include private lists if you are the owner.
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._request_obj(
|
|
self._urls["created_lists"] % self.account_id,
|
|
params="session_id=%s&page=%s" % (self.session_id, page),
|
|
key="results"
|
|
)
|
|
|
|
def _get_list(self, url, asc_sort=True, page=1):
|
|
params = "session_id=%s&page=%s" % (self.session_id, page)
|
|
if asc_sort is False:
|
|
params += "&sort_by=created_at.desc"
|
|
return self._request_obj(
|
|
self._urls[url] % self.account_id,
|
|
params=params,
|
|
key="results"
|
|
)
|
|
|
|
def favorite_movies(self, asc_sort=True, page=1):
|
|
"""
|
|
Get the list of your favorite movies.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("favorite_movies", asc_sort=asc_sort, page=page)
|
|
|
|
def favorite_tv_shows(self, asc_sort=True, page=1):
|
|
"""
|
|
Get the list of your favorite TV shows.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("favorite_tv", asc_sort=asc_sort, page=page)
|
|
|
|
def mark_as_favorite(self, media_id, media_type, favorite=True):
|
|
"""
|
|
This method allows you to mark a movie or TV show as a favorite item.
|
|
:param media_id: int
|
|
:param media_type: str
|
|
:param favorite:bool
|
|
"""
|
|
if media_type not in ["tv", "movie"]:
|
|
raise TMDbException("Media Type should be tv or movie.")
|
|
self._request_obj(
|
|
self._urls["favorite"] % self.account_id,
|
|
params="session_id=%s" % self.session_id,
|
|
method="POST",
|
|
json={
|
|
"media_type": media_type,
|
|
"media_id": media_id,
|
|
"favorite": favorite,
|
|
}
|
|
)
|
|
|
|
def unmark_as_favorite(self, media_id, media_type):
|
|
"""
|
|
This method allows you to unmark a movie or TV show as a favorite item.
|
|
:param media_id: int
|
|
:param media_type: str
|
|
"""
|
|
self.mark_as_favorite(media_id, media_type, favorite=False)
|
|
|
|
def rated_movies(self, asc_sort=True, page=1):
|
|
"""
|
|
Get a list of all the movies you have rated.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("rated_movies", asc_sort=asc_sort, page=page)
|
|
|
|
def rated_tv_shows(self, asc_sort=True, page=1):
|
|
"""
|
|
Get a list of all the TV shows you have rated.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("rated_tv", asc_sort=asc_sort, page=page)
|
|
|
|
def rated_episodes(self, asc_sort=True, page=1):
|
|
"""
|
|
Get a list of all the TV episodes you have rated.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("rated_episodes", asc_sort=asc_sort, page=page)
|
|
|
|
def movie_watchlist(self, asc_sort=True, page=1):
|
|
"""
|
|
Get a list of all the movies you have added to your watchlist.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("movie_watchlist", asc_sort=asc_sort, page=page)
|
|
|
|
def tv_show_watchlist(self, asc_sort=True, page=1):
|
|
"""
|
|
Get a list of all the TV shows you have added to your watchlist.
|
|
:param asc_sort: bool
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._get_list("tv_watchlist", asc_sort=asc_sort, page=page)
|
|
|
|
def add_to_watchlist(self, media_id, media_type, watchlist=True):
|
|
"""
|
|
Add a movie or TV show to your watchlist.
|
|
:param media_id: int
|
|
:param media_type: str
|
|
:param watchlist: bool
|
|
"""
|
|
if media_type not in ["tv", "movie"]:
|
|
raise TMDbException("Media Type should be tv or movie.")
|
|
self._request_obj(
|
|
self._urls["watchlist"] % self.account_id,
|
|
"session_id=%s" % self.session_id,
|
|
method="POST",
|
|
json={
|
|
"media_type": media_type,
|
|
"media_id": media_id,
|
|
"watchlist": watchlist,
|
|
}
|
|
)
|
|
|
|
def remove_from_watchlist(self, media_id, media_type):
|
|
"""
|
|
Remove a movie or TV show from your watchlist.
|
|
:param media_id: int
|
|
:param media_type: str
|
|
"""
|
|
self.add_to_watchlist(media_id, media_type, watchlist=False)
|