Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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})
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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)
    )
Exemplo n.º 6
0
 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))
Exemplo n.º 7
0
 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'])
Exemplo n.º 8
0
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),
    )
Exemplo n.º 9
0
 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,
                 },
             )
Exemplo n.º 10
0
    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},
                        )
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
 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'])
Exemplo n.º 13
0
 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'])
Exemplo n.º 14
0
    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)
Exemplo n.º 15
0
 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)