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 )
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
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
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 )
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
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))
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
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
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
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
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
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
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