diff options
Diffstat (limited to 'addons/metadata.themoviedb.org.python/python/scraper_config.py')
-rw-r--r-- | addons/metadata.themoviedb.org.python/python/scraper_config.py | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/addons/metadata.themoviedb.org.python/python/scraper_config.py b/addons/metadata.themoviedb.org.python/python/scraper_config.py new file mode 100644 index 0000000..76a042b --- /dev/null +++ b/addons/metadata.themoviedb.org.python/python/scraper_config.py @@ -0,0 +1,111 @@ +def configure_scraped_details(details, settings): + details = _configure_rating_prefix(details, settings) + details = _configure_keeporiginaltitle(details, settings) + details = _configure_trailer(details, settings) + details = _configure_multiple_studios(details, settings) + details = _configure_default_rating(details, settings) + details = _configure_tags(details, settings) + return details + +def configure_tmdb_artwork(details, settings): + if 'available_art' not in details: + return details + + art = details['available_art'] + fanart_enabled = settings.getSettingBool('fanart') + if not fanart_enabled: + if 'fanart' in art: + del art['fanart'] + if 'set.fanart' in art: + del art['set.fanart'] + if not settings.getSettingBool('landscape'): + if 'landscape' in art: + if fanart_enabled: + art['fanart'] = art.get('fanart', []) + art['landscape'] + del art['landscape'] + if 'set.landscape' in art: + if fanart_enabled: + art['set.fanart'] = art.get('set.fanart', []) + art['set.landscape'] + del art['set.landscape'] + + return details + +def is_fanarttv_configured(settings): + return settings.getSettingBool('enable_fanarttv_artwork') + +def _configure_rating_prefix(details, settings): + if details['info'].get('mpaa'): + details['info']['mpaa'] = settings.getSettingString('certprefix') + details['info']['mpaa'] + return details + +def _configure_keeporiginaltitle(details, settings): + if settings.getSettingBool('keeporiginaltitle'): + details['info']['title'] = details['info']['originaltitle'] + return details + +def _configure_trailer(details, settings): + if details['info'].get('trailer') and not settings.getSettingBool('trailer'): + del details['info']['trailer'] + return details + +def _configure_multiple_studios(details, settings): + if not settings.getSettingBool('multiple_studios'): + details['info']['studio'] = details['info']['studio'][:1] + return details + +def _configure_default_rating(details, settings): + imdb_default = bool(details['ratings'].get('imdb')) and settings.getSettingString('RatingS') == 'IMDb' + trakt_default = bool(details['ratings'].get('trakt')) and settings.getSettingString('RatingS') == 'Trakt' + default_rating = 'themoviedb' + if imdb_default: + default_rating = 'imdb' + elif trakt_default: + default_rating = 'trakt' + if default_rating not in details['ratings']: + default_rating = list(details['ratings'].keys())[0] if details['ratings'] else None + for rating_type in details['ratings'].keys(): + details['ratings'][rating_type]['default'] = rating_type == default_rating + return details + +def _configure_tags(details, settings): + if not settings.getSettingBool('add_tags'): + del details['info']['tag'] + return details + +# pylint: disable=invalid-name +try: + basestring +except NameError: # py2 / py3 + basestring = str + +#pylint: disable=redefined-builtin +class PathSpecificSettings(object): + # read-only shim for typed `xbmcaddon.Addon().getSetting*` methods + def __init__(self, settings_dict, log_fn): + self.data = settings_dict + self.log = log_fn + + def getSettingBool(self, id): + return self._inner_get_setting(id, bool, False) + + def getSettingInt(self, id): + return self._inner_get_setting(id, int, 0) + + def getSettingNumber(self, id): + return self._inner_get_setting(id, float, 0.0) + + def getSettingString(self, id): + return self._inner_get_setting(id, basestring, '') + + def _inner_get_setting(self, setting_id, setting_type, default): + value = self.data.get(setting_id) + if isinstance(value, setting_type): + return value + self._log_bad_value(value, setting_id) + return default + + def _log_bad_value(self, value, setting_id): + if value is None: + self.log("requested setting ({0}) was not found.".format(setting_id)) + else: + self.log('failed to load value "{0}" for setting {1}'.format(value, setting_id)) |