Exemple #1
0
    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))
Exemple #3
0
    def seasons(self, id):
        response = self.http.get(str(id), [
            'seasons'
        ])

        return SummaryMapper.seasons(
            self.get_data(response)
        )
Exemple #4
0
    def season(self, id, season):
        response = self.http.get(str(id), [
            'seasons', str(season)
        ])

        return SummaryMapper.episodes(
            self.get_data(response)
        )
Exemple #5
0
    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)
        )
Exemple #8
0
    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)
Exemple #9
0
    def get(self, id, **kwargs):
        response = self.http.get(
            str(id)
        )

        return SummaryMapper.show(
            self.client,
            self.get_data(response, **kwargs)
        )
Exemple #10
0
    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)
Exemple #11
0
    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)
Exemple #12
0
    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)
Exemple #13
0
    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)
        )
Exemple #16
0
    def trending(self, **kwargs):
        response = self.http.get(
            'trending'
        )

        return SummaryMapper.shows(
            self.client,
            self.get_data(response, **kwargs)
        )
Exemple #17
0
    def seasons(self, id, **kwargs):
        response = self.http.get(str(id), [
            'seasons'
        ])

        return SummaryMapper.seasons(
            self.client,
            self.get_data(response, **kwargs)
        )
Exemple #18
0
    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)
Exemple #20
0
    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)
Exemple #21
0
    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)
Exemple #22
0
    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)
Exemple #26
0
    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)
Exemple #28
0
    def trending(self):
        response = self.http.get('trending')

        return SummaryMapper.movies(self.client, self.get_data(response))
Exemple #29
0
    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)
Exemple #30
0
    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)
        )
Exemple #31
0
    def get(self, id):
        response = self.http.get(str(id))

        # Parse response
        return SummaryMapper.movie(self.get_data(response))
Exemple #32
0
    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)
Exemple #33
0
    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))