def add_lazy(self, entry, media_type): lazy_fields = get_field_map(media_type=media_type) entry.add_lazy_fields(self.lazy_loader, lazy_fields, kwargs={'auth': self.auth}) entry['emby_server_id'] = self.auth.server_id entry['emby_username'] = self.auth.username entry['emby_user_id'] = self.auth.uid
def lookup(self, entry): """ Populates all lazy fields to an Entry. May be called by other plugins requiring bluray info on an Entry :param entry: Entry instance """ entry.add_lazy_fields(self.lazy_loader, self.field_map)
def lookup(self, entry, language): """ Populates all lazy fields to an Entry. May be called by other plugins requiring tmdb info on an Entry :param entry: Entry instance """ entry.add_lazy_fields(self.lazy_loader, self.field_map, kwargs={'language': language})
def on_task_metainfo(self, task, config): if not config: return if isinstance(config, str): self.key = config.lower() else: self.key = None for entry in task.entries: entry.add_lazy_fields(self.lazy_loader, self.field_map)
def add_lazy_fields(entry: entry.Entry, lazy_lookup_name: str, media_type: str) -> None: """ Adds lazy fields for one of the lookups in our `lazy_lookup_types` dict. :param entry: The entry to add lazy fields to. :param lazy_lookup_name: One of the keys in `lazy_lookup_types` dict. :param media_type: show/season/episode/movie (the type of db data needed for this lazy lookup) """ entry.add_lazy_fields( lazy_lookup, lazy_lookup_types[lazy_lookup_name], args=(lazy_lookup_name, media_type) )
def _register_lazy_user_data_lookup(self, entry, data_type, media_type=None): media_type = media_type or self._get_media_type_from_entry(entry) if not media_type: return field_name = self._get_user_data_field_name(data_type=data_type, media_type=media_type) entry.add_lazy_fields(trakt_user_data_lookup, [field_name], args=(field_name, data_type, media_type, self._lazy_user_data_lookup))
def on_task_metainfo(self, task, config): # check if disabled (value set to false) if config is False: return for entry in task.entries: if isinstance(entry.get('quality', eval_lazy=False), str): logger.debug( 'Quality is already set to {} for {}, but has not been instantiated properly.', entry['quality'], entry['title'], ) entry['quality'] = qualities.Quality( entry.get('quality', eval_lazy=False)) else: entry.add_lazy_fields(self.get_quality, ['quality'])
def add_lazy_user_fields( entry: entry.Entry, data_type: str, media_type: str, username: str, account: str ) -> None: """ Adds one of the user field lazy lookups to an entry. :param entry: Entry to add lazy fields to :param data_type: ratings/collected/watched (one of the keys in `user_data_fields` dict.) :param media_type: show/season/episode/movie :param username: Either this or account is required, the other can be None :param account: Either this or username is required, the other can be None """ field_name = user_data_fields[data_type] if data_type == 'ratings': field_name = field_name[media_type] entry.add_lazy_fields( trakt_user_data_lookup, [field_name], args=(field_name, data_type, media_type, username, account), )
def modify(self, entry, config, errors=True): """This can be called from a plugin to add set values to an entry""" for field in config: # If this doesn't appear to be a jinja template, just set it right away. if not isinstance(config[field], str) or '{' not in config[field]: entry[field] = config[field] # Store original values before overwriting with a lazy field, so that set directives can reference # themselves. else: orig_value = entry.get(field, UNSET, eval_lazy=False) try: del entry[field] except KeyError: pass entry.add_lazy_fields( self.lazy_set, [field], kwargs={ 'config': config, 'field': field, 'orig_field_value': orig_value, 'errors': errors, }, )
def on_task_metainfo(self, task, config): if not config: return language = config['language'] if not isinstance(config, bool) else 'en' for entry in task.entries: # If there is information for a series lookup, register our series lazy fields if entry.get('series_name') or entry.get('tvdb_id', eval_lazy=False): entry.add_lazy_fields(self.lazy_series_lookup, self.series_map, kwargs={'language': language}) entry.add_lazy_fields( self.lazy_series_actor_lookup, self.series_actor_map, kwargs={'language': language}, ) entry.add_lazy_fields( self.lazy_series_poster_lookup, self.series_poster_map, kwargs={'language': language}, ) # If there is season and ep info as well, register episode lazy fields if entry.get('series_id_type') in ('ep', 'sequence', 'date'): if entry.get('season_pack'): logger.verbose( 'TheTVDB API does not support season lookup at this time, skipping {}', entry, ) else: entry.add_lazy_fields( self.lazy_episode_lookup, self.episode_map, kwargs={'language': language}, )
def on_task_metainfo(self, task, config): if not config: return for entry in task.entries: if (entry.get('series_name') or entry.get('tvdb_id', eval_lazy=False) or entry.get('tvmaze_id', eval_lazy=False) or entry.get('tvrage_id', eval_lazy=False)): entry.add_lazy_fields(self.lazy_series_lookup, self.series_map) if entry.get('season_pack', eval_lazy=False): entry.add_lazy_fields(self.lazy_season_lookup, self.season_map) if ('series_season' in entry and 'series_episode' in entry) or ('series_date' in entry): entry.add_lazy_fields(self.lazy_episode_lookup, self.episode_map)
def on_task_metainfo(self, task, config): # Don't run if we are disabled if config is False: return for entry in task.entries: entry.add_lazy_fields(self.get_media_id, ['media_id'])
def on_task_metainfo(self, task, config): # check if explicitly disabled (value set to false) if config is False: return for entry in task.entries: entry.add_lazy_fields(self.get_subtitles, ['subtitles'])
def on_task_metainfo(self, task, config): if not config: return if isinstance(config, bool): config = dict() for entry in task.entries: if is_show(entry): entry.add_lazy_fields(trakt_lazy_lookup, self.series_map, args=(self.series_map, self._get_series)) # TODO cleaner way to do this? entry.add_lazy_fields(trakt_lazy_lookup, self.series_actor_map, args=(self.series_actor_map, self._get_series)) entry.add_lazy_fields(trakt_lazy_lookup, self.show_translate_map, args=(self.show_translate_map, self._get_series)) if is_episode(entry): entry.add_lazy_fields(trakt_lazy_lookup, self.episode_map, args=(self.episode_map, self._get_episode)) elif is_season(entry): entry.add_lazy_fields(trakt_lazy_lookup, self.season_map, args=(self.season_map, self._get_season)) else: entry.add_lazy_fields(trakt_lazy_lookup, self.movie_map, args=(self.movie_map, self._get_movie)) # TODO cleaner way to do this? entry.add_lazy_fields(trakt_lazy_lookup, self.movie_actor_map, args=(self.movie_actor_map, self._get_movie)) entry.add_lazy_fields(trakt_lazy_lookup, self.movie_translate_map, args=(self.movie_translate_map, self._get_movie)) if config.get('username') or config.get('account'): self._register_lazy_user_data_lookup(entry, 'collected') self._register_lazy_user_data_lookup(entry, 'watched') self._register_lazy_user_ratings_lookup(entry)
def on_task_metainfo(self, task, config): if not config: return for entry in task.entries: entry.add_lazy_fields(self.lazy_loader, self.field_map)