145 lines
4.2 KiB
Python
145 lines
4.2 KiB
Python
from ..tmdb import TMDb
|
|
|
|
try:
|
|
from urllib import quote
|
|
except ImportError:
|
|
from urllib.parse import quote
|
|
|
|
|
|
class Search(TMDb):
|
|
_urls = {
|
|
"companies": "/search/company",
|
|
"collections": "/search/collection",
|
|
"keywords": "/search/keyword",
|
|
"movies": "/search/movie",
|
|
"multi": "/search/multi",
|
|
"people": "/search/person",
|
|
"tv_shows": "/search/tv",
|
|
}
|
|
|
|
def companies(self, term, page=1):
|
|
"""
|
|
Search for companies.
|
|
:param term: str
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._request_obj(
|
|
self._urls["companies"],
|
|
params="query=%s&page=%s" % (quote(term), page),
|
|
key="results"
|
|
)
|
|
|
|
def collections(self, term, page=1):
|
|
"""
|
|
Search for collections.
|
|
:param term: str
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._request_obj(
|
|
self._urls["collections"],
|
|
params="query=%s&page=%s" % (quote(term), page),
|
|
key="results"
|
|
)
|
|
|
|
def keywords(self, term, page=1):
|
|
"""
|
|
Search for keywords.
|
|
:param term: str
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
return self._request_obj(
|
|
self._urls["keywords"],
|
|
params="query=%s&page=%s" % (quote(term), page),
|
|
key="results"
|
|
)
|
|
|
|
def movies(self, term, adult=None, region=None, year=None, release_year=None, page=1):
|
|
"""
|
|
Search for movies.
|
|
:param term: str
|
|
:param adult: bool
|
|
:param region: str
|
|
:param year: int
|
|
:param release_year: int
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
params = "query=%s&page=%s" % (quote(term), page)
|
|
if adult is not None:
|
|
params += "&include_adult=%s" % "true" if adult else "false"
|
|
if region is not None:
|
|
params += "®ion=%s" % quote(region)
|
|
if year is not None:
|
|
params += "&year=%s" % year
|
|
if release_year is not None:
|
|
params += "&primary_release_year=%s" % release_year
|
|
return self._request_obj(
|
|
self._urls["movies"],
|
|
params=params,
|
|
key="results"
|
|
)
|
|
|
|
def multi(self, term, adult=None, region=None, page=1):
|
|
"""
|
|
Search multiple models in a single request.
|
|
Multi search currently supports searching for movies, tv shows and people in a single request.
|
|
:param term: str
|
|
:param adult: bool
|
|
:param region: str
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
params = "query=%s&page=%s" % (quote(term), page)
|
|
if adult is not None:
|
|
params += "&include_adult=%s" % "true" if adult else "false"
|
|
if region is not None:
|
|
params += "®ion=%s" % quote(region)
|
|
return self._request_obj(
|
|
self._urls["multi"],
|
|
params=params,
|
|
key="results"
|
|
)
|
|
|
|
def people(self, term, adult=None, region=None, page=1):
|
|
"""
|
|
Search for people.
|
|
:param term: str
|
|
:param adult: bool
|
|
:param region: str
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
params = "query=%s&page=%s" % (quote(term), page)
|
|
if adult is not None:
|
|
params += "&include_adult=%s" % "true" if adult else "false"
|
|
if region is not None:
|
|
params += "®ion=%s" % quote(region)
|
|
return self._request_obj(
|
|
self._urls["people"],
|
|
params=params,
|
|
key="results"
|
|
)
|
|
|
|
def tv_shows(self, term, adult=None, release_year=None, page=1):
|
|
"""
|
|
Search for a TV show.
|
|
:param term: str
|
|
:param adult: bool
|
|
:param release_year: int
|
|
:param page: int
|
|
:return:
|
|
"""
|
|
params = "query=%s&page=%s" % (quote(term), page)
|
|
if adult is not None:
|
|
params += "&include_adult=%s" % "true" if adult else "false"
|
|
if release_year is not None:
|
|
params += "&first_air_date_year=%s" % release_year
|
|
return self._request_obj(
|
|
self._urls["tv_shows"],
|
|
params=params,
|
|
key="results"
|
|
)
|