Ejemplo n.º 1
0
    def get(self, media=None, id=None, page=1, per_page=10, start_at=None, end_at=None, store=None, **kwargs):
        if not media and id:
            raise ValueError('The "id" parameter also requires the "media" parameter to be defined')

        # Build parameters
        params = []

        if id:
            params.append(id)

        # Build query
        query = {}

        if page:
            query['page'] = page

        if per_page:
            query['limit'] = per_page

        if start_at:
            query['start_at'] = to_iso8601_datetime(start_at)

        if end_at:
            query['end_at'] = to_iso8601_datetime(end_at)

        # Request watched history
        return super(SyncHistoryInterface, self).get(
            media, store, params,
            query=query,
            flat=True,
            **kwargs
        )
Ejemplo n.º 2
0
    def to_dict(self):
        """Dump season to a dictionary.

        :return: Season dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update({
            'ids':
            dict([
                (key, value) for (key, value) in self.keys[
                    1:]  # NOTE: keys[0] is the season identifier
            ])
        })

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        result[
            'in_watchlist'] = self.in_watchlist if self.in_watchlist is not None else 0

        # Extended Info
        if self.first_aired:
            result['first_aired'] = to_iso8601_datetime(self.first_aired)

        if self.episode_count:
            result['episode_count'] = self.episode_count

        if self.aired_episodes:
            result['aired_episodes'] = self.aired_episodes

        return result
Ejemplo n.º 3
0
    def to_dict(self):
        """Dump season to a dictionary

        :return: Season dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update(
            {"ids": dict([(key, value) for (key, value) in self.keys[1:]])}  # NOTE: keys[0] is the season identifier
        )

        if self.rating:
            result["rating"] = self.rating.value
            result["rated_at"] = to_iso8601_datetime(self.rating.timestamp)

        result["in_watchlist"] = self.in_watchlist if self.in_watchlist is not None else 0

        # Extended Info
        if self.first_aired:
            result["first_aired"] = to_iso8601_datetime(self.first_aired)

        if self.episode_count:
            result["episode_count"] = self.episode_count

        if self.aired_episodes:
            result["aired_episodes"] = self.aired_episodes

        return result
Ejemplo n.º 4
0
    def get(self, media=None, id=None, start_at=None, end_at=None, store=None,
            extended=None, page=None, per_page=None, **kwargs):

        if not media and id:
            raise ValueError('The "id" parameter also requires the "media" parameter to be defined')

        # Build parameters
        params = []

        if id:
            params.append(id)

        # Build query
        query = {
            'extended': extended,
            'page': page,
            'limit': per_page
        }

        if start_at:
            query['start_at'] = to_iso8601_datetime(start_at)

        if end_at:
            query['end_at'] = to_iso8601_datetime(end_at)

        # Request watched history
        return super(SyncHistoryInterface, self).get(
            media, store, params,
            flat=True,
            query=query,
            **kwargs
        )
Ejemplo n.º 5
0
    def to_dict(self):
        """Dump progress to a dictionary.

        :return: Progress dictionary
        :rtype: :class:`~python:dict`
        """

        result = super(Progress, self).to_dict()

        label = LABELS['last_progress_change'][self.progress_type]
        result[label] = to_iso8601_datetime(self.last_progress_change)

        if self.progress_type == 'watched':
            result['reset_at'] = self.reset_at

        result['seasons'] = [
            season.to_dict()
            for season in self.seasons.values()
        ]

        if self.hidden_seasons:
            result['hidden_seasons'] = [
                popitems(season.to_dict(), ['number', 'ids'])
                for season in self.hidden_seasons.values()
            ]

        if self.next_episode:
            result['next_episode'] = popitems(self.next_episode.to_dict(), ['season', 'number', 'title', 'ids'])
            result['next_episode']['season'] = self.next_episode.keys[0][0]

        if self.last_episode:
            result['last_episode'] = popitems(self.last_episode.to_dict(), ['season', 'number', 'title', 'ids'])
            result['last_episode']['season'] = self.last_episode.keys[0][0]

        return result
Ejemplo n.º 6
0
def test_datetime_conversion():
    if arrow is None:
        pytest.skip('arrow not installed, skipping')
    d = arrow.utcnow().replace(microsecond=0)
    d_str = to_iso8601_datetime(d)
    d2 = from_iso8601_datetime(d_str)
    assert_that(d, equal_to(d2))
Ejemplo n.º 7
0
    def to_dict(self):
        """Dump progress to a dictionary.

        :return: Progress dictionary
        :rtype: :class:`~python:dict`
        """

        result = super(Progress, self).to_dict()

        label = LABELS['last_progress_change'][self.progress_type]
        result[label] = to_iso8601_datetime(self.last_progress_change)

        if self.progress_type == 'watched':
            result['reset_at'] = self.reset_at

        result['seasons'] = [
            season.to_dict()
            for season in self.seasons.values()
        ]

        if self.hidden_seasons:
            result['hidden_seasons'] = [
                dictfilter(season.to_dict(), pop=['number', 'ids'])
                for season in self.hidden_seasons.values()
            ]

        if self.next_episode:
            result['next_episode'] = dictfilter(self.next_episode.to_dict(), pop=['season', 'number', 'title', 'ids'])
            result['next_episode']['season'] = self.next_episode.keys[0][0]

        if self.last_episode:
            result['last_episode'] = dictfilter(self.last_episode.to_dict(), pop=['season', 'number', 'title', 'ids'])
            result['last_episode']['season'] = self.last_episode.keys[0][0]

        return result
Ejemplo n.º 8
0
    def to_dict(self):
        """Dump episode to a dictionary.

        :return: Episode dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update({
            'title':
            self.title,
            'watched':
            1 if self.is_watched else 0,
            'collected':
            1 if self.is_collected else 0,
            'plays':
            self.plays if self.plays is not None else 0,
            'in_watchlist':
            self.in_watchlist if self.in_watchlist is not None else 0,
            'progress':
            self.progress,
            'last_watched_at':
            to_iso8601_datetime(self.last_watched_at),
            'collected_at':
            to_iso8601_datetime(self.collected_at),
            'paused_at':
            to_iso8601_datetime(self.paused_at),
            'ids':
            dict([
                (key, value) for (key, value) in self.keys[
                    1:]  # NOTE: keys[0] is the (<season>, <episode>) identifier
            ])
        })

        if self.rating:
            result['rating'] = self.rating.value
            result['votes'] = self.rating.votes
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.first_aired:
            result['first_aired'] = to_iso8601_datetime(self.first_aired)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.available_translations:
            result['available_translations'] = self.available_translations

        if self.number_abs:
            result['number_abs'] = self.number_abs

        if self.runtime:
            result['runtime'] = self.runtime

        return result
Ejemplo n.º 9
0
    def to_dict(self):
        result = {
            'number': self.pk,
            'completed': self.completed if self.completed is not None else 0
        }

        if self.progress_type:
            label = LABELS['episode_progress_change'][self.progress_type]
        else:
            label = 'progress_timestamp'

        result[label] = to_iso8601_datetime(self.progress_timestamp)

        return result
Ejemplo n.º 10
0
    def to_dict(self):
        result = {
            'number': self.pk,
            'completed': self.completed if self.completed is not None else 0
        }

        if self.progress_type:
            label = LABELS['episode_progress_change'][self.progress_type]
        else:
            label = 'progress_timestamp'

        result[label] = to_iso8601_datetime(self.progress_timestamp)

        return result
Ejemplo n.º 11
0
    def to_dict(self):
        """Dump episode to a dictionary.

        :return: Episode dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update({
            'title': self.title,

            'watched': 1 if self.is_watched else 0,
            'collected': 1 if self.is_collected else 0,

            'plays': self.plays if self.plays is not None else 0,
            'in_watchlist': self.in_watchlist if self.in_watchlist is not None else 0,
            'progress': self.progress,

            'last_watched_at': to_iso8601_datetime(self.last_watched_at),
            'collected_at': to_iso8601_datetime(self.collected_at),
            'paused_at': to_iso8601_datetime(self.paused_at),

            'ids': dict([
                (key, value) for (key, value) in self.keys[1:]  # NOTE: keys[0] is the (<season>, <episode>) identifier
            ])
        })

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.first_aired:
            result['first_aired'] = to_iso8601_datetime(self.first_aired)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.available_translations:
            result['available_translations'] = self.available_translations

        return result
Ejemplo n.º 12
0
    def to_dict(self):
        """Dump movie to a dictionary

        :return: Movie dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update({
            'watched':
            1 if self.is_watched else 0,
            'collected':
            1 if self.is_collected else 0,
            'plays':
            self.plays if self.plays is not None else 0,
            'in_watchlist':
            self.in_watchlist if self.in_watchlist is not None else 0,
            'progress':
            self.progress,
            'last_watched_at':
            to_iso8601_datetime(self.last_watched_at),
            'collected_at':
            to_iso8601_datetime(self.collected_at),
            'paused_at':
            to_iso8601_datetime(self.paused_at)
        })

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.released:
            result['released'] = to_iso8601_date(self.released)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.tagline:
            result['tagline'] = self.tagline

        if self.runtime:
            result['runtime'] = self.runtime

        if self.certification:
            result['certification'] = self.certification

        if self.homepage:
            result['homepage'] = self.homepage

        if self.trailer:
            result['trailer'] = self.trailer

        if self.language:
            result['language'] = self.language

        if self.available_translations:
            result['available_translations'] = self.available_translations

        if self.genres:
            result['genres'] = self.genres

        return result
Ejemplo n.º 13
0
    def to_dict(self):
        """Dump show to a dictionary.

        :return: Show dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result['seasons'] = [
            season.to_dict() for season in self.seasons.values()
        ]

        result[
            'in_watchlist'] = self.in_watchlist if self.in_watchlist is not None else 0

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.first_aired:
            result['first_aired'] = to_iso8601_datetime(self.first_aired)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.airs:
            result['airs'] = self.airs

        if self.runtime:
            result['runtime'] = self.runtime

        if self.certification:
            result['certification'] = self.certification

        if self.network:
            result['network'] = self.network

        if self.country:
            result['country'] = self.country

        if self.status:
            result['status'] = self.status

        if self.homepage:
            result['homepage'] = self.homepage

        if self.language:
            result['language'] = self.language

        if self.available_translations:
            result['available_translations'] = self.available_translations

        if self.genres:
            result['genres'] = self.genres

        if self.aired_episodes:
            result['aired_episodes'] = self.aired_episodes

        return result
Ejemplo n.º 14
0
    def to_dict(self):
        """Dump movie to a dictionary

        :return: Movie dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result.update({
            'watched': 1 if self.is_watched else 0,
            'collected': 1 if self.is_collected else 0,

            'plays': self.plays if self.plays is not None else 0,
            'in_watchlist': self.in_watchlist if self.in_watchlist is not None else 0,
            'progress': self.progress,

            'last_watched_at': to_iso8601_datetime(self.last_watched_at),
            'collected_at': to_iso8601_datetime(self.collected_at),
            'paused_at': to_iso8601_datetime(self.paused_at)
        })

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.released:
            result['released'] = to_iso8601_date(self.released)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.tagline:
            result['tagline'] = self.tagline

        if self.runtime:
            result['runtime'] = self.runtime

        if self.certification:
            result['certification'] = self.certification

        if self.homepage:
            result['homepage'] = self.homepage

        if self.trailer:
            result['trailer'] = self.trailer

        if self.language:
            result['language'] = self.language

        if self.available_translations:
            result['available_translations'] = self.available_translations

        if self.genres:
            result['genres'] = self.genres

        return result
Ejemplo n.º 15
0
    def to_dict(self):
        """Dump show to a dictionary

        :return: Show dictionary
        :rtype: :class:`~python:dict`
        """

        result = self.to_identifier()

        result['seasons'] = [
            season.to_dict()
            for season in self.seasons.values()
        ]

        result['in_watchlist'] = self.in_watchlist if self.in_watchlist is not None else 0

        if self.rating:
            result['rating'] = self.rating.value
            result['rated_at'] = to_iso8601_datetime(self.rating.timestamp)

        # Extended Info
        if self.first_aired:
            result['first_aired'] = to_iso8601_datetime(self.first_aired)

        if self.updated_at:
            result['updated_at'] = to_iso8601_datetime(self.updated_at)

        if self.overview:
            result['overview'] = self.overview

        if self.airs:
            result['airs'] = self.airs

        if self.runtime:
            result['runtime'] = self.runtime

        if self.certification:
            result['certification'] = self.certification

        if self.network:
            result['network'] = self.network

        if self.country:
            result['country'] = self.country

        if self.status:
            result['status'] = self.status

        if self.homepage:
            result['homepage'] = self.homepage

        if self.language:
            result['language'] = self.language

        if self.available_translations:
            result['available_translations'] = self.available_translations

        if self.genres:
            result['genres'] = self.genres

        if self.aired_episodes:
            result['aired_episodes'] = self.aired_episodes

        return result