mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-01 00:43:37 +00:00
254 lines
13 KiB
Python
254 lines
13 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
tmdbsimple.discover
|
|
~~~~~~~~~~~~~~~~~~~
|
|
This module implements the Discover functionality of tmdbsimple.
|
|
|
|
Created by Celia Oakley on 2013-10-31.
|
|
|
|
:copyright: (c) 2013-2022 by Celia Oakley
|
|
:license: GPLv3, see LICENSE for more details
|
|
"""
|
|
|
|
from .base import TMDB
|
|
|
|
|
|
class Discover(TMDB):
|
|
"""
|
|
Discover functionality.
|
|
|
|
See: https://developers.themoviedb.org/3/discover
|
|
"""
|
|
BASE_PATH = 'discover'
|
|
URLS = {
|
|
'movie': '/movie',
|
|
'tv': '/tv',
|
|
}
|
|
|
|
def movie(self, **kwargs):
|
|
"""
|
|
Discover movies by different types of data like average rating, number
|
|
of votes, genres and certifications. You can get a valid list of
|
|
certifications from the certifications list method.
|
|
|
|
Discover also supports a nice list of sort options. See below for all
|
|
of the available options.
|
|
|
|
Please note, when using certification / certification.lte you must also
|
|
specify certification_country. These two parameters work together in
|
|
order to filter the results. You can only filter results with the
|
|
countries we have added to our certifications list.
|
|
|
|
If you specify the region parameter, the regional release date will be
|
|
used instead of the primary release date. The date returned will be the
|
|
first date based on your query (ie. if a with_release_type is
|
|
specified). It's important to note the order of the release types that
|
|
are used. Specifying "2|3" would return the limited theatrical release
|
|
date as opposed to "3|2" which would return the theatrical date.
|
|
|
|
Also note that a number of filters support being comma (,) or pipe (|)
|
|
separated. Comma's are treated like an AND and query while pipe's are
|
|
an OR.
|
|
|
|
Some examples of what can be done with discover can be found at
|
|
https://www.themoviedb.org/documentation/api/discover.
|
|
|
|
Args:
|
|
language: (optional) ISO 639-1 code.
|
|
region: (optional) Specify a ISO 3166-1 code.
|
|
sort_by: (optional) Allowed values: 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
|
|
Default: popularity.desc
|
|
certification_country: (optional) Used in conjunction with the
|
|
certification filter, use this to specify a country with a
|
|
valid certification.
|
|
certification: Filter results with a valid certification from the
|
|
'certification_country' field.
|
|
certification.gte: Filter and only include movies that have a
|
|
certification that is greater than or equal to the specified
|
|
value.
|
|
certification.lte: Filter and only include movies that have a
|
|
certification that is less than or equal to the specified
|
|
value.
|
|
include_adult: (optional) A filter and include or exclude adult
|
|
movies.
|
|
include_video: (optional) A filter to include or exclude videos.
|
|
page: (optional) Minimum 1, maximum 1000, default 1.
|
|
primary_release_year: (optional) A filter to limit the results to a
|
|
specific primary release year.
|
|
primary_release_date.gte: (optional) Filter and only include movies
|
|
that have a primary release date that is greater or equal to
|
|
the specified value.
|
|
primary_release_date.lte: (optional) Filter and only include movies
|
|
that have a primary release date that is less than or equal to
|
|
the specified value.
|
|
release_date.gte: (optional) Filter and only include movies that
|
|
have a primary release date that is greater or equal to the
|
|
specified value.
|
|
releaste_date.lte: (optional) Filter and only include movies that
|
|
have a primary release date that is less than or equal to the
|
|
specified value.
|
|
with_release_type: (optional) Specify a comma (AND) or pipe (OR)
|
|
separated value to filter release types by. These release types
|
|
map to the same values found on the movie release date method.
|
|
Minimum 1, maximum 6.
|
|
year: (optional) A filter to limit the results to a specific year
|
|
(looking at all release dates).
|
|
vote_count.gte: (optional) Filter and only include movies that have
|
|
a vote count that is greater or equal to the specified value.
|
|
Minimum 0.
|
|
vote_count.lte: (optional) Filter and only include movies that have
|
|
a vote count that is less than or equal to the specified value.
|
|
Minimum 1.
|
|
vote_average.gte: (optional) Filter and only include movies that
|
|
have a rating that is greater or equal to the specified value.
|
|
Minimum 0.
|
|
vote_average.lte: (optional) Filter and only include movies that
|
|
have a rating that is less than or equal to the specified value.
|
|
Minimum 0.
|
|
with_cast: (optional) A comma separated list of person ID's. Only
|
|
include movies that have one of the ID's added as an actor.
|
|
with_crew: (optional) A comma separated list of person ID's. Only
|
|
include movies that have one of the ID's added as a crew member.
|
|
with_people: (optional) A comma separated list of person ID's. Only
|
|
include movies that have one of the ID's added as a either a
|
|
actor or a crew member.
|
|
with_companies: (optional) A comma separated list of production
|
|
company ID's. Only include movies that have one of the ID's
|
|
added as a production company.
|
|
with_genres: (optional) Comma separated value of genre ids that you
|
|
want to include in the results.
|
|
without_genres: (optional) Comma separated value of genre ids that
|
|
you want to exclude from the results.
|
|
with_keywords: (optional) A comma separated list of keyword ID's.
|
|
Only includes movies that have one of the ID's added as a
|
|
keyword.
|
|
without_keywords: (optional) Exclude items with certain keywords.
|
|
You can comma and pipe seperate these values to create an 'AND' or 'OR' logic.
|
|
with_runtime.gte: (optional) Filter and only include movies that
|
|
have a runtime that is greater or equal to a value.
|
|
with_runtime.lte: (optional) Filter and only include movies that
|
|
have a runtime that is less than or equal to a value.
|
|
with_original_language: (optional) Specify an ISO 639-1 string to
|
|
filter results by their original language value.
|
|
|
|
Returns:
|
|
A dict respresentation of the JSON returned from the API.
|
|
"""
|
|
# Periods are not allowed in keyword arguments but several API
|
|
# arguments contain periods. See both usages in tests/test_discover.py.
|
|
for param in dict(kwargs):
|
|
if '_lte' in param:
|
|
kwargs[param.replace('_lte', '.lte')] = kwargs.pop(param)
|
|
if '_gte' in param:
|
|
kwargs[param.replace('_gte', '.gte')] = kwargs.pop(param)
|
|
|
|
path = self._get_path('movie')
|
|
|
|
response = self._GET(path, kwargs)
|
|
self._set_attrs_to_values(response)
|
|
return response
|
|
|
|
def tv(self, **kwargs):
|
|
"""
|
|
Discover TV shows by different types of data like average rating,
|
|
number of votes, genres, the network they aired on and air dates.
|
|
|
|
Discover also supports a nice list of sort options. See below for all
|
|
of the available options.
|
|
|
|
Also note that a number of filters support being comma (,) or pipe (|)
|
|
separated. Comma's are treated like an AND and query while pipe's are
|
|
an OR.
|
|
|
|
Some examples of what can be done with discover can be found at
|
|
https://www.themoviedb.org/documentation/api/discover.
|
|
|
|
Args:
|
|
language: (optional) ISO 639-1 code.
|
|
sort_by: (optional) Available options are 'vote_average.desc',
|
|
'vote_average.asc', 'first_air_date.desc',
|
|
'first_air_date.asc', 'popularity.desc', 'popularity.asc'
|
|
sort_by: (optional) Allowed values: vote_average.desc,
|
|
vote_average.asc, first_air_date.desc, first_air_date.asc,
|
|
popularity.desc, popularity.asc
|
|
Default: popularity.desc
|
|
air_date.gte: (optional) Filter and only include TV shows that have
|
|
a air date (by looking at all episodes) that is greater or
|
|
equal to the specified value.
|
|
air_date.lte: (optional) Filter and only include TV shows that have
|
|
a air date (by looking at all episodes) that is less than or
|
|
equal to the specified value.
|
|
first_air_date.gte: (optional) Filter and only include TV shows
|
|
that have a original air date that is greater or equal to the
|
|
specified value. Can be used in conjunction with the
|
|
"include_null_first_air_dates" filter if you want to include
|
|
items with no air date.
|
|
first_air_date.lte: (optional) Filter and only include TV shows
|
|
that have a original air date that is less than or equal to the
|
|
specified value. Can be used in conjunction with the
|
|
"include_null_first_air_dates" filter if you want to include
|
|
items with no air date.
|
|
first_air_date_year: (optional) Filter and only include TV shows
|
|
that have a original air date year that equal to the specified
|
|
value. Can be used in conjunction with the
|
|
"include_null_first_air_dates" filter if you want to include
|
|
items with no air date.
|
|
page: (optional) Specify the page of results to query. Default 1.
|
|
timezone: (optional) Used in conjunction with the air_date.gte/lte
|
|
filter to calculate the proper UTC offset. Default
|
|
America/New_York.
|
|
vote_average.gte: (optional) Filter and only include movies that
|
|
have a rating that is greater or equal to the specified value.
|
|
Minimum 0.
|
|
vote_count.gte: (optional) Filter and only include movies that have
|
|
a rating that is less than or equal to the specified value.
|
|
Minimum 0.
|
|
with_genres: (optional) Comma separated value of genre ids that you
|
|
want to include in the results.
|
|
with_networks: (optional) Comma separated value of network ids that
|
|
you want to include in the results.
|
|
without_genres: (optional) Comma separated value of genre ids that
|
|
you want to exclude from the results.
|
|
with_runtime.gte: (optional) Filter and only include TV shows with
|
|
an episode runtime that is greater than or equal to a value.
|
|
with_runtime.lte: (optional) Filter and only include TV shows with
|
|
an episode runtime that is less than or equal to a value.
|
|
include_null_first_air_dates: (optional) Use this filter to include
|
|
TV shows that don't have an air date while using any of the
|
|
"first_air_date" filters.
|
|
with_original_language: (optional) Specify an ISO 639-1 string to
|
|
filter results by their original language value.
|
|
without_keywords: (optional) Exclude items with certain keywords.
|
|
You can comma and pipe seperate these values to create an 'AND'
|
|
or 'OR' logic.
|
|
screened_theatrically: (optional) Filter results to include items
|
|
that have been screened theatrically.
|
|
with_companies: (optional) A comma separated list of production
|
|
company ID's. Only include movies that have one of the ID's
|
|
added as a production company.
|
|
with_keywords: (optional) A comma separated list of keyword ID's.
|
|
Only includes TV shows that have one of the ID's added as a
|
|
keyword.
|
|
|
|
Returns:
|
|
A dict respresentation of the JSON returned from the API.
|
|
"""
|
|
# Periods are not allowed in keyword arguments but several API
|
|
# arguments contain periods. See both usages in tests/test_discover.py.
|
|
for param in dict(kwargs):
|
|
if '_lte' in param:
|
|
kwargs[param.replace('_lte', '.lte')] = kwargs.pop(param)
|
|
if '_gte' in param:
|
|
kwargs[param.replace('_gte', '.gte')] = kwargs.pop(param)
|
|
|
|
path = self._get_path('tv')
|
|
|
|
response = self._GET(path, kwargs)
|
|
self._set_attrs_to_values(response)
|
|
return response
|