def __get_list(self, list_type, period=None, extended=None, page=None, per_page=None, **kwargs): # Build parameters params = [period] if period else None # Build query query = {'extended': extended, 'page': page, 'limit': per_page} # Send request response = self.http.get(list_type, params=params, query=query, **dictfilter(kwargs, get=['exceptions'], pop=['pagination'])) # Parse response items = self.get_data(response, **kwargs) if isinstance(items, PaginationIterator): return items.with_mapper( lambda items: SummaryMapper.movies(self.client, items)) if isinstance(items, requests.Response): return items return SummaryMapper.movies(self.client, items)
def episode(self, id, season, episode): response = self.http.get( str(id), ['seasons', str(season), 'episodes', str(episode)]) return SummaryMapper.episode(self.client, self.get_data(response))
def seasons(self, id): response = self.http.get(str(id), [ 'seasons' ]) return SummaryMapper.seasons( self.get_data(response) )
def season(self, id, season): response = self.http.get(str(id), [ 'seasons', str(season) ]) return SummaryMapper.episodes( self.get_data(response) )
def get(self, id): response = self.http.get( str(id) ) return SummaryMapper.show( self.get_data(response) )
def get(self, id): response = self.http.get( str(id) ) # Parse response return SummaryMapper.movie( self.get_data(response) )
def trending(self): response = self.http.get( 'trending' ) return SummaryMapper.movies( self.client, self.get_data(response) )
def get(self, id, **kwargs): response = self.http.get(str(id), query=dict(**popitems(kwargs, ['extended', 'limit']))) item = self.get_data(response, **kwargs) if isinstance(item, requests.Response): return item return SummaryMapper.show(self.client, item)
def get(self, id, **kwargs): response = self.http.get( str(id) ) return SummaryMapper.show( self.client, self.get_data(response, **kwargs) )
def popular(self, extended=None, **kwargs): response = self.http.get('popular', query={'extended': extended}) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.shows(self.client, items)
def trending(self, extended=None, **kwargs): response = self.http.get('trending', query={'extended': extended}) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.movies(self.client, items)
def trending(self, **kwargs): response = self.http.get('trending', query=dict(**popitems(kwargs, ['extended', 'limit']))) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.shows(self.client, items)
def season(self, id, season, **kwargs): response = self.http.get(str(id), [ 'seasons', str(season) ]) return SummaryMapper.episodes( self.client, self.get_data(response, **kwargs) )
def get(self, id, extended=None, **kwargs): response = self.http.get(str(id), query={'extended': extended}) item = self.get_data(response, **kwargs) if isinstance(item, requests.Response): return item return SummaryMapper.show(self.client, item)
def episode(self, id, season, episode): response = self.http.get(str(id), [ 'seasons', str(season), 'episodes', str(episode) ]) return SummaryMapper.episode( self.get_data(response) )
def trending(self, **kwargs): response = self.http.get( 'trending' ) return SummaryMapper.shows( self.client, self.get_data(response, **kwargs) )
def seasons(self, id, **kwargs): response = self.http.get(str(id), [ 'seasons' ]) return SummaryMapper.seasons( self.client, self.get_data(response, **kwargs) )
def get(self, id, **kwargs): response = self.http.get( str(id) ) # Parse response return SummaryMapper.movie( self.client, self.get_data(response, **kwargs) )
def season(self, id, season, extended=None, **kwargs): response = self.http.get(str(id), ['seasons', str(season)], query={'extended': extended}) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.episodes(self.client, items)
def get(self, id, **kwargs): response = self.http.get( str(id), query=dict(**popitems(kwargs, ['extended', 'limit']))) item = self.get_data(response, **kwargs) if isinstance(item, requests.Response): return item return SummaryMapper.show(self.client, item)
def trending(self, **kwargs): response = self.http.get( 'trending', query=dict(**popitems(kwargs, ['extended', 'limit']))) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.shows(self.client, items)
def seasons(self, id, extended=None, **kwargs): response = self.http.get(str(id), [ 'seasons' ], query={ 'extended': extended }) return SummaryMapper.seasons( self.client, self.get_data(response, **kwargs) )
def get(self, id, extended=None, **kwargs): response = self.http.get(str(id), query={ 'extended': extended }) item = self.get_data(response, **kwargs) if isinstance(item, requests.Response): return item return SummaryMapper.show(self.client, item)
def trending(self, extended=None, **kwargs): response = self.http.get('trending', query={ 'extended': extended }) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.shows(self.client, items)
def trending(self, extended=None, page=None, per_page=None, **kwargs): response = self.http.get('trending', query={ 'extended': extended, 'page': page, 'limit': per_page }, **dictfilter(kwargs, get=[ 'exceptions' ], pop=[ 'pagination' ])) # Parse response items = self.get_data(response, **kwargs) if isinstance(items, PaginationIterator): return items.with_mapper(lambda items: SummaryMapper.movies(self.client, items)) if isinstance(items, requests.Response): return items return SummaryMapper.movies(self.client, items)
def get(self, start_date: date, days: int, **kwargs): params = ['{:%Y-%m-%d}'.format(start_date), days] response = self.http.get( params=params, **popitems(kwargs, ['authenticated', 'validate_token'])) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.shows(self.client, items)
def season(self, id, season, extended=None, **kwargs): response = self.http.get(str(id), [ 'seasons', str(season) ], query={ 'extended': extended }) items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items return SummaryMapper.episodes(self.client, items)
def trending(self): response = self.http.get('trending') return SummaryMapper.movies(self.client, self.get_data(response))
def get(self, source, media, collection=None, start_date=None, days=None, query=None, years=None, genres=None, languages=None, countries=None, runtimes=None, ratings=None, certifications=None, networks=None, status=None, **kwargs): """Retrieve calendar items. The `all` calendar displays info for all shows airing during the specified period. The `my` calendar displays episodes for all shows that have been watched, collected, or watchlisted. :param source: Calendar source (`all` or `my`) :type source: str :param media: Media type (`dvd`, `movies` or `shows`) :type media: str :param collection: Collection type (`new`, `premieres`) :type collection: str or None :param start_date: Start date (defaults to today) :type start_date: datetime or None :param days: Number of days to display (defaults to `7`) :type days: int or None :param query: Search title or description. :type query: str or None :param years: Year or range of years (e.g. `2014`, or `2014-2016`) :type years: int or str or tuple or None :param genres: Genre slugs (e.g. `action`) :type genres: str or list of str or None :param languages: Language codes (e.g. `en`) :type languages: str or list of str or None :param countries: Country codes (e.g. `us`) :type countries: str or list of str or None :param runtimes: Runtime range in minutes (e.g. `30-90`) :type runtimes: str or tuple or None :param ratings: Rating range between `0` and `100` (e.g. `75-100`) :type ratings: str or tuple or None :param certifications: US Content Certification (e.g. `pg-13`, `tv-pg`) :type certifications: str or list of str or None :param networks: (TV) Network name (e.g. `HBO`) :type networks: str or list of str or None :param status: (TV) Show status (e.g. `returning series`, `in production`, ended`) :type status: str or list of str or None :return: Items :rtype: list of trakt.objects.video.Video """ if source not in ['all', 'my']: raise ValueError('Unknown collection type: %s' % (source,)) if media not in ['dvd', 'movies', 'shows']: raise ValueError('Unknown media type: %s' % (media,)) # Default `start_date` to today when only `days` is provided if start_date is None and days: start_date = datetime.utcnow() # Request calendar collection response = self.http.get( '/calendars/%s/%s%s' % ( source, media, ('/' + collection) if collection else '' ), params=[ start_date.strftime('%Y-%m-%d') if start_date else None, days ], query={ 'query': query, 'years': years, 'genres': genres, 'languages': languages, 'countries': countries, 'runtimes': runtimes, 'ratings': ratings, 'certifications': certifications, # TV 'networks': networks, 'status': status }, **popitems(kwargs, [ 'authenticated', 'validate_token' ]) ) # Parse response items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items # Map items if media == 'shows': return SummaryMapper.episodes( self.client, items, parse_show=True ) return SummaryMapper.movies(self.client, items)
def get(self, id, **kwargs): response = self.http.get( str(id) ) # Parse response return SummaryMapper.person( self.client, self.get_data(response, **kwargs) ) def movies(self, id, **kwargs) response = self.http.get( str(id) + '/movies' ) return SummaryMapper.people( self.client, self.get_data(response, **kwargs) ) def shows(self, id, **kwargs) response = self.http.get( str(id) + '/shows' ) return SummaryMapper.people( self.client, self.get_data(response, **kwargs) )
def get(self, id): response = self.http.get(str(id)) # Parse response return SummaryMapper.movie(self.get_data(response))
def get(self, source, media, collection=None, start_date=None, days=None, query=None, years=None, genres=None, languages=None, countries=None, runtimes=None, ratings=None, certifications=None, networks=None, status=None, **kwargs): """Retrieve calendar items. The `all` calendar displays info for all shows airing during the specified period. The `my` calendar displays episodes for all shows that have been watched, collected, or watchlisted. :param source: Calendar source (`all` or `my`) :type source: str :param media: Media type (`dvd`, `movies` or `shows`) :type media: str :param collection: Collection type (`new`, `premieres`) :type collection: str or None :param start_date: Start date (defaults to today) :type start_date: datetime or None :param days: Number of days to display (defaults to `7`) :type days: int or None :param query: Search title or description. :type query: str or None :param years: Year or range of years (e.g. `2014`, or `2014-2016`) :type years: int or str or tuple or None :param genres: Genre slugs (e.g. `action`) :type genres: str or list of str or None :param languages: Language codes (e.g. `en`) :type languages: str or list of str or None :param countries: Country codes (e.g. `us`) :type countries: str or list of str or None :param runtimes: Runtime range in minutes (e.g. `30-90`) :type runtimes: str or tuple or None :param ratings: Rating range between `0` and `100` (e.g. `75-100`) :type ratings: str or tuple or None :param certifications: US Content Certification (e.g. `pg-13`, `tv-pg`) :type certifications: str or list of str or None :param networks: (TV) Network name (e.g. `HBO`) :type networks: str or list of str or None :param status: (TV) Show status (e.g. `returning series`, `in production`, ended`) :type status: str or list of str or None :return: Items :rtype: list of trakt.objects.video.Video """ if source not in ['all', 'my']: raise ValueError('Unknown collection type: %s' % (source, )) if media not in ['dvd', 'movies', 'shows']: raise ValueError('Unknown media type: %s' % (media, )) # Default `start_date` to today when only `days` is provided if start_date is None and days: start_date = datetime.utcnow() # Request calendar collection response = self.http.get( '/calendars/%s/%s%s' % (source, media, ('/' + collection) if collection else ''), params=[ start_date.strftime('%Y-%m-%d') if start_date else None, days ], query={ 'query': query, 'years': years, 'genres': genres, 'languages': languages, 'countries': countries, 'runtimes': runtimes, 'ratings': ratings, 'certifications': certifications, # TV 'networks': networks, 'status': status }, **dictfilter(kwargs, pop=['authenticated', 'validate_token'])) # Parse response items = self.get_data(response, **kwargs) if isinstance(items, requests.Response): return items # Map items if media == 'shows': return SummaryMapper.episodes(self.client, items, parse_show=True) return SummaryMapper.movies(self.client, items)
def episode(self, id, season, episode, **kwargs): response = self.http.get(str(id), ["seasons", str(season), "episodes", str(episode)]) return SummaryMapper.episode(self.client, self.get_data(response, **kwargs))