Merge pull request #23122 from joseluismarti/bionic
[xbmc.git] / addons / metadata.themoviedb.org.python / python / scraper_config.py
blob76a042bcfa2cc56c26ef26e147476485c1b8a8c9
1 def configure_scraped_details(details, settings):
2 details = _configure_rating_prefix(details, settings)
3 details = _configure_keeporiginaltitle(details, settings)
4 details = _configure_trailer(details, settings)
5 details = _configure_multiple_studios(details, settings)
6 details = _configure_default_rating(details, settings)
7 details = _configure_tags(details, settings)
8 return details
10 def configure_tmdb_artwork(details, settings):
11 if 'available_art' not in details:
12 return details
14 art = details['available_art']
15 fanart_enabled = settings.getSettingBool('fanart')
16 if not fanart_enabled:
17 if 'fanart' in art:
18 del art['fanart']
19 if 'set.fanart' in art:
20 del art['set.fanart']
21 if not settings.getSettingBool('landscape'):
22 if 'landscape' in art:
23 if fanart_enabled:
24 art['fanart'] = art.get('fanart', []) + art['landscape']
25 del art['landscape']
26 if 'set.landscape' in art:
27 if fanart_enabled:
28 art['set.fanart'] = art.get('set.fanart', []) + art['set.landscape']
29 del art['set.landscape']
31 return details
33 def is_fanarttv_configured(settings):
34 return settings.getSettingBool('enable_fanarttv_artwork')
36 def _configure_rating_prefix(details, settings):
37 if details['info'].get('mpaa'):
38 details['info']['mpaa'] = settings.getSettingString('certprefix') + details['info']['mpaa']
39 return details
41 def _configure_keeporiginaltitle(details, settings):
42 if settings.getSettingBool('keeporiginaltitle'):
43 details['info']['title'] = details['info']['originaltitle']
44 return details
46 def _configure_trailer(details, settings):
47 if details['info'].get('trailer') and not settings.getSettingBool('trailer'):
48 del details['info']['trailer']
49 return details
51 def _configure_multiple_studios(details, settings):
52 if not settings.getSettingBool('multiple_studios'):
53 details['info']['studio'] = details['info']['studio'][:1]
54 return details
56 def _configure_default_rating(details, settings):
57 imdb_default = bool(details['ratings'].get('imdb')) and settings.getSettingString('RatingS') == 'IMDb'
58 trakt_default = bool(details['ratings'].get('trakt')) and settings.getSettingString('RatingS') == 'Trakt'
59 default_rating = 'themoviedb'
60 if imdb_default:
61 default_rating = 'imdb'
62 elif trakt_default:
63 default_rating = 'trakt'
64 if default_rating not in details['ratings']:
65 default_rating = list(details['ratings'].keys())[0] if details['ratings'] else None
66 for rating_type in details['ratings'].keys():
67 details['ratings'][rating_type]['default'] = rating_type == default_rating
68 return details
70 def _configure_tags(details, settings):
71 if not settings.getSettingBool('add_tags'):
72 del details['info']['tag']
73 return details
75 # pylint: disable=invalid-name
76 try:
77 basestring
78 except NameError: # py2 / py3
79 basestring = str
81 #pylint: disable=redefined-builtin
82 class PathSpecificSettings(object):
83 # read-only shim for typed `xbmcaddon.Addon().getSetting*` methods
84 def __init__(self, settings_dict, log_fn):
85 self.data = settings_dict
86 self.log = log_fn
88 def getSettingBool(self, id):
89 return self._inner_get_setting(id, bool, False)
91 def getSettingInt(self, id):
92 return self._inner_get_setting(id, int, 0)
94 def getSettingNumber(self, id):
95 return self._inner_get_setting(id, float, 0.0)
97 def getSettingString(self, id):
98 return self._inner_get_setting(id, basestring, '')
100 def _inner_get_setting(self, setting_id, setting_type, default):
101 value = self.data.get(setting_id)
102 if isinstance(value, setting_type):
103 return value
104 self._log_bad_value(value, setting_id)
105 return default
107 def _log_bad_value(self, value, setting_id):
108 if value is None:
109 self.log("requested setting ({0}) was not found.".format(setting_id))
110 else:
111 self.log('failed to load value "{0}" for setting {1}'.format(value, setting_id))