コード例 #1
0
 def get_infoproperties(self, item):
     infoproperties = {}
     infoproperties['watchedepisodes'] = item.get('watchedepisodes')
     infoproperties['metacritic_rating'] = '{0:.1f}'.format(
         utils.try_parse_float(
             item.get('ratings', {}).get('metacritic', {}).get('rating')))
     infoproperties['imdb_rating'] = '{0:.1f}'.format(
         utils.try_parse_float(
             item.get('ratings', {}).get('imdb', {}).get('rating')))
     infoproperties['imdb_votes'] = '{:0,.0f}'.format(
         utils.try_parse_float(
             item.get('ratings', {}).get('imdb', {}).get('votes')))
     infoproperties['tmdb_rating'] = '{0:.1f}'.format(
         utils.try_parse_float(
             item.get('ratings', {}).get('themoviedb', {}).get('rating')))
     infoproperties['tmdb_votes'] = '{:0,.0f}'.format(
         utils.try_parse_float(
             item.get('ratings', {}).get('themoviedb', {}).get('votes')))
     infoproperties['set.numitems'] = item.get('limits',
                                               {}).get('total') or ''
     movies_set = item.get('movies') or None
     if movies_set:
         years = []
         for m in movies_set:
             year = utils.try_parse_int(m.get('year'))
             years.append(year)
         yearl = min(years)
         yearh = max(years)
         infoproperties['set.years'] = '{0} - {1}'.format(yearl, yearh)
     infoproperties = utils.del_empty_keys(infoproperties,
                                           ['N/A', '0.0', '0'])
     return infoproperties
コード例 #2
0
 def get_color_lumsat(self, r, g, b):
     hls_tuple = colorsys.rgb_to_hls(r / 255.0, g / 255.0, b / 255.0)
     hue = hls_tuple[0]
     lum = utils.try_parse_float(
         xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.Luminance)')) or hls_tuple[1]
     sat = utils.try_parse_float(
         xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.Saturation)')) or hls_tuple[2]
     return self.rgb_to_int(*colorsys.hls_to_rgb(hue, lum, sat))
コード例 #3
0
 def get_infoproperties(self, item):
     infoproperties = {}
     infoproperties['watchedepisodes'] = item.get('watchedepisodes')
     infoproperties['metacritic_rating'] = '{0:.1f}'.format(utils.try_parse_float(item.get('ratings', {}).get('metacritic', {}).get('rating')))
     infoproperties['imdb_rating'] = '{0:.1f}'.format(utils.try_parse_float(item.get('ratings', {}).get('imdb', {}).get('rating')))
     infoproperties['imdb_votes'] = '{:0,.0f}'.format(utils.try_parse_float(item.get('ratings', {}).get('imdb', {}).get('votes')))
     infoproperties['tmdb_rating'] = '{0:.1f}'.format(utils.try_parse_float(item.get('ratings', {}).get('themoviedb', {}).get('rating')))
     infoproperties['tmdb_votes'] = '{:0,.0f}'.format(utils.try_parse_float(item.get('ratings', {}).get('themoviedb', {}).get('votes')))
     infoproperties = utils.del_empty_keys(infoproperties, ['N/A', '0.0', '0'])
     return infoproperties
コード例 #4
0
 def get_airdates(self, item):
     if not item:
         return
     infoproperties = {}
     if item.get('last_episode_to_air'):
         i = item.get('last_episode_to_air', {})
         infoproperties['last_aired'] = utils.date_to_format(i.get('air_date'), xbmc.getRegion('dateshort'))
         infoproperties['last_aired.long'] = utils.date_to_format(i.get('air_date'), xbmc.getRegion('datelong'))
         infoproperties['last_aired.day'] = utils.date_to_format(i.get('air_date'), "%A")
         infoproperties['last_aired.episode'] = i.get('episode_number')
         infoproperties['last_aired.name'] = i.get('name')
         infoproperties['last_aired.tmdb_id'] = i.get('id')
         infoproperties['last_aired.plot'] = i.get('overview')
         infoproperties['last_aired.season'] = i.get('season_number')
         infoproperties['last_aired.rating'] = '{:0,.1f}'.format(utils.try_parse_float(i.get('vote_average')))
         infoproperties['last_aired.votes'] = i.get('vote_count')
         infoproperties['last_aired.thumb'] = self.get_season_thumb(i)
     if item.get('next_episode_to_air'):
         i = item.get('next_episode_to_air', {})
         infoproperties['next_aired'] = utils.date_to_format(i.get('air_date'), xbmc.getRegion('dateshort'))
         infoproperties['next_aired.long'] = utils.date_to_format(i.get('air_date'), xbmc.getRegion('datelong'))
         infoproperties['next_aired.day'] = utils.date_to_format(i.get('air_date'), "%A")
         infoproperties['next_aired.episode'] = i.get('episode_number')
         infoproperties['next_aired.name'] = i.get('name')
         infoproperties['next_aired.tmdb_id'] = i.get('id')
         infoproperties['next_aired.plot'] = i.get('overview')
         infoproperties['next_aired.season'] = i.get('season_number')
         infoproperties['next_aired.thumb'] = self.get_season_thumb(i)
     return infoproperties
コード例 #5
0
 def __init__(self,
              cache_short=None,
              cache_long=None,
              req_api_url=None,
              req_api_key=None,
              req_api_name=None,
              req_wait_time=None):
     self.req_api_url = req_api_url or ''
     self.req_api_key = req_api_key or ''
     self.req_api_name = req_api_name or ''
     self.req_wait_time = req_wait_time or 0
     self.req_connect_err_prop = 'TMDbHelper.ConnectionError.{}'.format(
         self.req_api_name)
     self.req_connect_err = utils.try_parse_float(
         xbmcgui.Window(10000).getProperty(self.req_connect_err_prop)) or 0
     self.cache_long = 14 if not cache_long or cache_long < 14 else cache_long
     self.cache_short = 1 if not cache_short or cache_short < 1 else cache_short
     self.cache_name = 'plugin.video.themoviedb.helper'
     self.addon_name = 'plugin.video.themoviedb.helper'
     self.addon = xbmcaddon.Addon(self.addon_name)
     self.dialog_noapikey_header = '{0} {1} {2}'.format(
         self.addon.getLocalizedString(32007), self.req_api_name,
         self.addon.getLocalizedString(32008))
     self.dialog_noapikey_text = self.addon.getLocalizedString(32009)
     self.dialog_noapikey_check = None
コード例 #6
0
 def __init__(self, method=None, artwork=None):
     Thread.__init__(self)
     self.image = artwork
     self.func = None
     self.save_prop = None
     self.save_path = 'special://profile/addon_data/plugin.video.themoviedb.helper/{}/'
     if method == 'blur':
         self.func = self.blur
         self.save_path = utils.makepath(self.save_path.format('blur'))
         self.save_prop = 'TMDbHelper.ListItem.BlurImage'
     elif method == 'crop':
         self.func = self.crop
         self.save_path = utils.makepath(self.save_path.format('crop'))
         self.save_prop = 'TMDbHelper.ListItem.CropImage'
     elif method == 'desaturate':
         self.func = self.desaturate
         self.save_path = utils.makepath(
             self.save_path.format('desaturate'))
         self.save_prop = 'TMDbHelper.ListItem.DesaturateImage'
     elif method == 'colors':
         self.func = self.colors
         self.save_path = utils.makepath(self.save_path.format('colors'))
         self.save_prop = 'TMDbHelper.ListItem.Colors'
         self.colors_lum = xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.Luminance)')
         self.colors_lum = utils.try_parse_float(
             self.colors_lum) if self.colors_lum else None
         self.colors_sat = xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.Saturation)')
         self.colors_sat = utils.try_parse_float(
             self.colors_sat) if self.colors_sat else None
         self.colors_cmp = xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.CompShift)')
         self.colors_cmp = utils.try_parse_float(
             self.colors_cmp) if self.colors_cmp else None
         self.colors_hue = xbmc.getInfoLabel(
             'Skin.String(TMDbHelper.Colors.MainShift)')
         self.colors_hue = utils.try_parse_float(
             self.colors_hue) if self.colors_hue else None
コード例 #7
0
 def get_infolabels(self, item):
     infolabels = {}
     infolabels['title'] = self.get_title(item)
     infolabels['originaltitle'] = item.get('original_title')
     infolabels['tvshowtitle'] = item.get('tvshowtitle')
     infolabels['plot'] = item.get('overview') or item.get('biography') or item.get('content')
     infolabels['rating'] = '{:0,.1f}'.format(utils.try_parse_float(item.get('vote_average')))
     infolabels['votes'] = '{:0,.0f}'.format(item.get('vote_count')) if item.get('vote_count') else None
     infolabels['premiered'] = item.get('air_date') or item.get('release_date') or item.get('first_air_date') or ''
     infolabels['year'] = infolabels.get('premiered')[:4]
     infolabels['imdbnumber'] = item.get('imdb_id')
     infolabels['tagline'] = item.get('tagline')
     infolabels['status'] = item.get('status')
     infolabels['episode'] = item.get('episode_number') if item.get('episode_number') or item.get('episode_number') == 0 else item.get('number_of_episodes')
     infolabels['season'] = item.get('season_number') if item.get('season_number') or item.get('season_number') == 0 else item.get('number_of_seasons')
     infolabels['genre'] = utils.dict_to_list(item.get('genres', []), 'name')
     if item.get('site') == 'YouTube' and item.get('key'):
         infolabels['path'] = 'plugin://plugin.video.youtube/play/?video_id={0}'.format(item.get('key'))
     if item.get('episode_run_time'):
         infolabels['duration'] = utils.try_parse_int(item.get('episode_run_time', [0])[0]) * 60
     if item.get('runtime'):
         infolabels['duration'] = utils.try_parse_int(item.get('runtime', 0)) * 60
     if item.get('belongs_to_collection'):
         infolabels['set'] = item.get('belongs_to_collection').get('name')
     if item.get('networks'):
         infolabels['studio'] = infolabels.setdefault('studio', []) + utils.dict_to_list(item.get('networks'), 'name')
     if item.get('production_companies'):
         infolabels['studio'] = infolabels.setdefault('studio', []) + utils.dict_to_list(item.get('production_companies'), 'name')
     if item.get('production_countries'):
         infolabels['country'] = infolabels.setdefault('country', []) + utils.dict_to_list(item.get('production_countries'), 'name')
     if item.get('origin_country'):
         infolabels['country'] = infolabels.setdefault('country', []) + item.get('origin_country')
     if item.get('release_dates') and item.get('release_dates').get('results'):
         for i in item.get('release_dates').get('results'):
             if i.get('iso_3166_1') and i.get('iso_3166_1') == self.iso_country:
                 for i in sorted(i.get('release_dates', []), key=lambda k: k.get('type')):
                     if i.get('certification'):
                         infolabels['MPAA'] = '{0}{1}'.format(self.mpaa_prefix, i.get('certification'))
                         break
                 break
     if item.get('content_ratings') and item.get('content_ratings').get('results'):
         for i in item.get('content_ratings').get('results'):
             if i.get('iso_3166_1') and i.get('iso_3166_1') == self.iso_country and i.get('rating'):
                 infolabels['MPAA'] = '{0}{1}'.format(self.mpaa_prefix, i.get('rating'))
                 break
     return infolabels
コード例 #8
0
 def get_infoproperties(self, item):
     infoproperties = {}
     infoproperties['tmdb_id'] = item.get('id')
     infoproperties['imdb_id'] = item.get('imdb_id') or item.get(
         'external_ids', {}).get('imdb_id')
     infoproperties['tvdb_id'] = item.get('external_ids', {}).get('tvdb_id')
     infoproperties['tvshow.tmdb_id'] = item.get('tvshow.tmdb_id')
     infoproperties['tvshow.imdb_id'] = item.get('tvshow.imdb_id')
     infoproperties['tvshow.tvdb_id'] = item.get('tvshow.tvdb_id')
     infoproperties['biography'] = item.get('biography')
     infoproperties['birthday'] = item.get('birthday')
     infoproperties['age'] = utils.age_difference(item.get('birthday'),
                                                  item.get('deathday'))
     infoproperties['deathday'] = item.get('deathday')
     infoproperties['character'] = item.get('character')
     infoproperties['department'] = item.get('department')
     infoproperties['job'] = item.get('job')
     infoproperties['role'] = item.get('character') or item.get(
         'job') or item.get('department') or item.get(
             'known_for_department')
     infoproperties['born'] = item.get('place_of_birth')
     infoproperties['tmdb_rating'] = '{:0,.1f}'.format(
         utils.try_parse_float(item.get('vote_average')))
     infoproperties['tmdb_votes'] = '{:0,.0f}'.format(
         item.get('vote_count')) if item.get('vote_count') else None
     if item.get('gender'):
         infoproperties['gender'] = self.addon.getLocalizedString(
             32070) if item.get(
                 'gender') == 2 else self.addon.getLocalizedString(32071)
     if item.get('last_episode_to_air'):
         i = item.get('last_episode_to_air', {})
         infoproperties['last_aired'] = i.get('air_date')
         infoproperties['last_aired.day'] = utils.date_to_format(
             i.get('air_date'), "%A")
         infoproperties['last_aired.episode'] = i.get('episode_number')
         infoproperties['last_aired.name'] = i.get('name')
         infoproperties['last_aired.tmdb_id'] = i.get('id')
         infoproperties['last_aired.plot'] = i.get('overview')
         infoproperties['last_aired.season'] = i.get('season_number')
         infoproperties['last_aired.rating'] = '{:0,.1f}'.format(
             utils.try_parse_float(i.get('vote_average')))
         infoproperties['last_aired.votes'] = i.get('vote_count')
         infoproperties['last_aired.thumb'] = self.get_season_thumb(i)
     if item.get('next_episode_to_air'):
         i = item.get('next_episode_to_air', {})
         infoproperties['next_aired'] = i.get('air_date')
         infoproperties['next_aired.day'] = utils.date_to_format(
             i.get('air_date'), "%A")
         infoproperties['next_aired.episode'] = i.get('episode_number')
         infoproperties['next_aired.name'] = i.get('name')
         infoproperties['next_aired.tmdb_id'] = i.get('id')
         infoproperties['next_aired.plot'] = i.get('overview')
         infoproperties['next_aired.season'] = i.get('season_number')
         infoproperties['next_aired.thumb'] = self.get_season_thumb(i)
     if item.get('created_by'):
         infoproperties = utils.iter_props(item.get('created_by'),
                                           'Creator',
                                           infoproperties,
                                           name='name',
                                           tmdb_id='id')
         infoproperties = utils.iter_props(item.get('created_by'),
                                           'Creator',
                                           infoproperties,
                                           thumb='profile_path',
                                           func=self.get_imagepath)
         infoproperties['creator'] = utils.concatinate_names(
             item.get('created_by'), 'name', '/')
     if item.get('genres'):
         infoproperties = utils.iter_props(item.get('genres'),
                                           'Genre',
                                           infoproperties,
                                           name='name',
                                           tmdb_id='id')
     if item.get('networks'):
         infoproperties = utils.iter_props(item.get('networks'),
                                           'Studio',
                                           infoproperties,
                                           name='name',
                                           tmdb_id='id')
         infoproperties = utils.iter_props(item.get('networks'),
                                           'Studio',
                                           infoproperties,
                                           icon='logo_path',
                                           func=self.get_imagepath)
     if item.get('production_companies'):
         infoproperties = utils.iter_props(item.get('production_companies'),
                                           'Studio',
                                           infoproperties,
                                           name='name',
                                           tmdb_id='id')
         infoproperties = utils.iter_props(item.get('production_companies'),
                                           'Studio',
                                           infoproperties,
                                           icon='logo_path',
                                           func=self.get_imagepath)
     if item.get('production_countries'):
         infoproperties = utils.iter_props(item.get('production_countries'),
                                           'Country',
                                           infoproperties,
                                           name='name',
                                           tmdb_id='id')
     if item.get('spoken_languages'):
         infoproperties = utils.iter_props(item.get('spoken_languages'),
                                           'Language',
                                           infoproperties,
                                           name='name',
                                           iso='iso_639_1')
     if item.get('also_known_as'):
         infoproperties['aliases'] = ' / '.join(item.get('also_known_as'))
     if item.get('known_for'):
         infoproperties['known_for'] = utils.concatinate_names(
             item.get('known_for'), 'title', '/')
         infoproperties = utils.iter_props(item.get('known_for'),
                                           'known_for',
                                           infoproperties,
                                           title='title',
                                           tmdb_id='id',
                                           rating='vote_average',
                                           tmdb_type='media_type')
     if item.get('budget'):
         infoproperties['budget'] = '${:0,.0f}'.format(item.get('budget'))
     if item.get('revenue'):
         infoproperties['revenue'] = '${:0,.0f}'.format(item.get('revenue'))
     if item.get('movie_credits'):
         infoproperties['numitems.tmdb.movies.cast'] = len(
             item.get('movie_credits', {}).get('cast', [])) or 0
         infoproperties['numitems.tmdb.movies.crew'] = len(
             item.get('movie_credits', {}).get('crew', [])) or 0
         infoproperties['numitems.tmdb.movies.total'] = utils.try_parse_int(
             infoproperties.get(
                 'numitems.tmdb.movies.cast')) + utils.try_parse_int(
                     infoproperties.get('numitems.tmdb.movies.crew'))
     if item.get('tv_credits'):
         infoproperties['numitems.tmdb.tvshows.cast'] = len(
             item.get('tv_credits', {}).get('cast', [])) or 0
         infoproperties['numitems.tmdb.tvshows.crew'] = len(
             item.get('tv_credits', {}).get('crew', [])) or 0
         infoproperties[
             'numitems.tmdb.tvshows.total'] = utils.try_parse_int(
                 infoproperties.get(
                     'numitems.tmdb.tvshows.cast')) + utils.try_parse_int(
                         infoproperties.get('numitems.tmdb.tvshows.crew'))
     if item.get('movie_credits') or item.get('tv_credits'):
         infoproperties['numitems.tmdb.cast'] = utils.try_parse_int(
             infoproperties.get(
                 'numitems.tmdb.movies.cast')) + utils.try_parse_int(
                     infoproperties.get('numitems.tmdb.tvshows.cast'))
         infoproperties['numitems.tmdb.crew'] = utils.try_parse_int(
             infoproperties.get(
                 'numitems.tmdb.movies.crew')) + utils.try_parse_int(
                     infoproperties.get('numitems.tmdb.tvshows.crew'))
         infoproperties['numitems.tmdb.total'] = utils.try_parse_int(
             infoproperties.get('numitems.tmdb.cast')
         ) + utils.try_parse_int(infoproperties.get('numitems.tmdb.crew'))
     if item.get('belongs_to_collection'):
         infoproperties['set.tmdb_id'] = item.get(
             'belongs_to_collection').get('id')
         infoproperties['set.name'] = item.get('belongs_to_collection').get(
             'name')
         infoproperties['set.poster'] = self.get_imagepath(
             item.get('belongs_to_collection').get('poster_path'))
         infoproperties['set.fanart'] = self.get_imagepath(
             item.get('belongs_to_collection').get('backdrop_path'))
     if item.get('parts'):
         p = 0
         year_l = 9999
         year_h = 0
         ratings = []
         votes = 0
         for i in item.get('parts', []):
             p += 1
             infoproperties['set.{}.title'.format(p)] = i.get('title', '')
             infoproperties['set.{}.tmdb_id'.format(p)] = i.get('id', '')
             infoproperties['set.{}.originaltitle'.format(p)] = i.get(
                 'original_title', '')
             infoproperties['set.{}.plot'.format(p)] = i.get('overview', '')
             infoproperties['set.{}.premiered'.format(p)] = i.get(
                 'release_date', '')
             infoproperties['set.{}.year'.format(p)] = i.get(
                 'release_date', '')[:4]
             infoproperties['set.{}.rating'.format(p)] = '{:0,.1f}'.format(
                 utils.try_parse_float(i.get('vote_average')))
             infoproperties['set.{}.votes'.format(p)] = i.get(
                 'vote_count', '')
             infoproperties['set.{}.poster'.format(p)] = self.get_imagepath(
                 i.get('poster_path', ''), True)
             infoproperties['set.{}.fanart'.format(p)] = self.get_imagepath(
                 i.get('backdrop_path', ''))
             year_l = min(
                 utils.try_parse_int(i.get('release_date', '')[:4]), year_l)
             year_h = max(
                 utils.try_parse_int(i.get('release_date', '')[:4]), year_h)
             ratings.append(i.get('vote_average',
                                  '')) if i.get('vote_average') else None
             votes += utils.try_parse_int(i.get('vote_count', 0))
         year_l = year_l if year_l != 9999 else None
         year_h = year_h if year_h else None
         infoproperties['set.year.first'] = year_l or ''
         infoproperties['set.year.last'] = year_h or ''
         infoproperties['set.years'] = '{0} - {1}'.format(
             year_l, year_h) if year_l and year_h else ''
         infoproperties['set.rating'] = infoproperties[
             'tmdb_rating'] = '{:0,.1f}'.format(
                 sum(ratings) / len(ratings)) if len(ratings) else ''
         infoproperties['set.votes'] = infoproperties[
             'tmdb_votes'] = '{:0,.0f}'.format(votes) if votes else ''
         infoproperties['set.numitems'] = p or ''
     return infoproperties