示例#1
0
 def get_niceitem(self, item):
     label = self.get_title(item)
     icon = self.get_icon(item)
     poster = self.get_season_poster(item) or icon
     thumb = self.get_season_thumb(item) or ''
     fanart = self.get_fanart(item)
     cast = self.get_cast(item)
     infolabels = self.get_infolabels(item)
     infolabels = utils.merge_two_dicts(infolabels, self.get_trailer(item))
     infolabels = utils.merge_two_dicts(infolabels,
                                        self.get_director_writer(item))
     infolabels = utils.del_empty_keys(infolabels, ['N/A', '0.0', '0'])
     infoproperties = self.get_infoproperties(item)
     infoproperties = utils.merge_two_dicts(infoproperties,
                                            self.get_cast_properties(cast))
     infoproperties = utils.merge_two_dicts(infoproperties,
                                            self.get_crew_properties(item))
     infoproperties = utils.del_empty_keys(infoproperties,
                                           ['N/A', '0.0', '0'])
     return {
         'label': label,
         'icon': icon,
         'poster': poster,
         'thumb': thumb,
         'fanart': fanart,
         'cast': cast,
         'infolabels': infolabels,
         'infoproperties': infoproperties,
         'tmdb_id': infoproperties.get('tmdb_id'),
         'imdb_id': infoproperties.get('imdb_id'),
         'tvdb_id': infoproperties.get('tvdb_id')
     }
 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
示例#3
0
 def get_infoproperties(self, item):
     infoproperties = {}
     infoproperties['awards'] = item.get('awards', None)
     infoproperties['metacritic_rating'] = item.get('metascore', None)
     infoproperties['imdb_rating'] = item.get('imdbRating', None)
     infoproperties['imdb_votes'] = item.get('imdbVotes', None)
     infoproperties['rottentomatoes_rating'] = item.get('tomatoMeter', None)
     infoproperties['rottentomatoes_image'] = item.get('tomatoImage', None)
     infoproperties['rottentomatoes_reviewstotal'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoReviews'))) if item.get(
             'tomatoReviews') else None
     infoproperties['rottentomatoes_reviewsfresh'] = '{:0,.0f}'.format(
         utils.try_parse_int(
             item.get('tomatoFresh'))) if item.get('tomatoFresh') else None
     infoproperties['rottentomatoes_reviewsrotten'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoRotten'))) if item.get(
             'tomatoRotten') else None
     infoproperties['rottentomatoes_consensus'] = item.get(
         'tomatoConsensus', None)
     infoproperties['rottentomatoes_usermeter'] = item.get(
         'tomatoUserMeter', None)
     infoproperties['rottentomatoes_userreviews'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoUserReviews'))) if item.get(
             'tomatoUserReviews') else None
     infoproperties = utils.del_empty_keys(infoproperties,
                                           ['N/A', '0.0', '0'])
     return infoproperties
示例#4
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
示例#5
0
 def get_person_stats(self, person):
     infoproperties = {}
     infoproperties['numitems.dbid.movies'] = self.get_num_credits('movie', person)
     infoproperties['numitems.dbid.tvshows'] = self.get_num_credits('tvshow', person)
     infoproperties['numitems.dbid.episodes'] = self.get_num_credits('episode', person)
     infoproperties['numitems.dbid.total'] = (
         utils.try_parse_int(infoproperties.get('numitems.dbid.movies')) +
         utils.try_parse_int(infoproperties.get('numitems.dbid.tvshows')) +
         utils.try_parse_int(infoproperties.get('numitems.dbid.episodes')))
     infoproperties = utils.del_empty_keys(infoproperties, ['N/A', '0.0', '0'])
     return infoproperties
 def get_infolabels(self, item, key):
     infolabels = {}
     infolabels['genre'] = item.get('genre', [])
     infolabels['country'] = item.get('country', [])
     infolabels['episode'] = item.get('episode')
     infolabels['season'] = item.get('season')
     infolabels['sortepisode'] = item.get('sortepisode')
     infolabels['sortseason'] = item.get('sortseason')
     infolabels['episodeguide'] = item.get('episodeguide')
     infolabels['showlink'] = item.get('showlink', [])
     infolabels['top250'] = item.get('top250')
     infolabels['setid'] = item.get('setid')
     infolabels['tracknumber'] = item.get('tracknumber')
     infolabels['rating'] = item.get('rating')
     infolabels['userrating'] = item.get('userrating')
     infolabels['watched'] = item.get('watched')
     infolabels['playcount'] = utils.try_parse_int(item.get('playcount'))
     infolabels['overlay'] = item.get('overlay')
     infolabels['director'] = item.get('director', [])
     infolabels['mpaa'] = item.get('mpaa')
     infolabels['plot'] = item.get('plot')
     infolabels['plotoutline'] = item.get('plotoutline')
     infolabels['title'] = item.get('title')
     infolabels['originaltitle'] = item.get('originaltitle')
     infolabels['sorttitle'] = item.get('sorttitle')
     infolabels['duration'] = item.get('duration')
     infolabels['studio'] = item.get('studio', [])
     infolabels['tagline'] = item.get('tagline')
     infolabels['writer'] = item.get('writer', [])
     infolabels['tvshowtitle'] = item.get('tvshowtitle')
     infolabels['premiered'] = item.get('premiered')
     infolabels['status'] = item.get('status')
     infolabels['set'] = item.get('set')
     infolabels['setoverview'] = item.get('setoverview')
     infolabels['tag'] = item.get('tag', [])
     infolabels['imdbnumber'] = item.get('imdbnumber')
     infolabels['code'] = item.get('code')
     infolabels['aired'] = item.get('aired')
     infolabels['credits'] = item.get('credits')
     infolabels['lastplayed'] = item.get('lastplayed')
     infolabels['album'] = item.get('album')
     infolabels['artist'] = item.get('artist', [])
     infolabels['votes'] = item.get('votes')
     infolabels['path'] = item.get('path')
     infolabels['trailer'] = item.get('trailer')
     infolabels['dateadded'] = item.get('dateadded')
     infolabels['overlay'] = 5 if utils.try_parse_int(
         item.get('playcount')) > 0 and key in ['movie', 'episode'] else 4
     infolabels = utils.del_empty_keys(infolabels, ['N/A', '0.0', '0'])
     return infolabels
示例#7
0
 def get_request_item(self, imdb_id=None, title=None, year=None, tomatoes=True, fullplot=True, cache_only=False):
     kwparams = {}
     kwparams['i'] = imdb_id
     kwparams['t'] = title
     kwparams['y'] = year
     kwparams['plot'] = 'full' if fullplot else 'short'
     kwparams['tomatoes'] = 'True' if tomatoes else None
     kwparams = utils.del_empty_keys(kwparams)
     request = self.get_request_lc(is_json=False, cache_only=cache_only, r='xml', **kwparams)
     if request and request.get('root') and not request.get('root').get('response') == 'False':
         request = request.get('root').get('movie')[0]
     else:
         request = {}
     return request
 def get_infolabels(self, item):
     infolabels = {}
     infolabels['title'] = item.get('title', None)
     infolabels['year'] = item.get('year', None)
     infolabels['mpaa'] = item.get('rated', None)
     infolabels['rating'] = item.get('imdbRating', None)
     infolabels['votes'] = item.get('imdbVotes', None)
     infolabels['duration'] = int(item.get('runtime', '00000')[:-4]) * 60
     infolabels['genre'] = item.get('genre', '').split(', ')
     infolabels['director'] = item.get('director', None)
     infolabels['writer'] = item.get('writer', '').split(', ')
     infolabels['cast'] = item.get('cast', '').split(', ')
     infolabels['plot'] = item.get('plot', None)
     infolabels['country'] = item.get('country', '').split(', ')
     infolabels['mediatype'] = item.get('type', None)
     infolabels['imdbnumber'] = item.get('imdbID', None)
     infolabels['studio'] = item.get('Production', None)
     infolabels = utils.del_empty_keys(infolabels, ['N/A', '0.0', '0'])
     return infolabels
 def get_infoproperties(self, item):
     infoproperties = {}
     infoproperties['awards'] = item.get('awards', None)
     infoproperties['oscar_wins'] = utils.get_between_strings(
         item.get('awards', ''), 'Won ', ' Oscar')
     infoproperties['oscar_nominations'] = utils.get_between_strings(
         item.get('awards', ''), 'Nominated for ', ' Oscar')
     infoproperties['award_wins'] = utils.get_between_strings(
         item.get('awards', ''),
         '. Another ', ' wins') or utils.get_between_strings(
             item.get('awards', ''), '', ' wins')
     infoproperties['award_nominations'] = utils.get_between_strings(
         item.get('awards', ''), 'wins & ',
         ' nominations') or utils.get_between_strings(
             item.get('awards', ''), '', ' nominations')
     infoproperties['metacritic_rating'] = item.get('metascore', None)
     infoproperties['imdb_rating'] = item.get('imdbRating', None)
     infoproperties['imdb_votes'] = item.get('imdbVotes', None)
     infoproperties['rottentomatoes_rating'] = item.get('tomatoMeter', None)
     infoproperties['rottentomatoes_image'] = item.get('tomatoImage', None)
     infoproperties['rottentomatoes_reviewstotal'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoReviews'))) if item.get(
             'tomatoReviews') else None
     infoproperties['rottentomatoes_reviewsfresh'] = '{:0,.0f}'.format(
         utils.try_parse_int(
             item.get('tomatoFresh'))) if item.get('tomatoFresh') else None
     infoproperties['rottentomatoes_reviewsrotten'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoRotten'))) if item.get(
             'tomatoRotten') else None
     infoproperties['rottentomatoes_consensus'] = item.get(
         'tomatoConsensus', None)
     infoproperties['rottentomatoes_usermeter'] = item.get(
         'tomatoUserMeter', None)
     infoproperties['rottentomatoes_userreviews'] = '{:0,.0f}'.format(
         utils.try_parse_int(item.get('tomatoUserReviews'))) if item.get(
             'tomatoUserReviews') else None
     infoproperties = utils.del_empty_keys(infoproperties,
                                           ['N/A', '0.0', '0'])
     return infoproperties
示例#10
0
    def build_json(self, file):
        xmlstring = utils.load_filecontent(file)
        if not xmlstring:
            return

        json = []
        for variable in ET.fromstring(xmlstring):
            if not variable.attrib.get('name'):
                continue  # No name specified so skip
            if variable.tag not in ['expression', 'variable']:
                continue  # Not an expression or variable so skip

            item = {}

            if variable.tag == 'expression' and variable.text:
                item['expression'] = variable.text
            elif variable.tag == 'variable':
                item['values'] = [{
                    i.attrib.get('condition') or 'True': i.text
                } for i in variable if i.text]

            if not item.get('expression') and not item.get('values'):
                continue  # No values or expression so skip

            item['name'] = variable.attrib.get('name')
            item['containers'] = [
                utils.try_parse_int(i)
                for i in variable.attrib.get('containers', '').split(',') if i
            ]
            item['listitems'] = {}
            item['listitems']['start'] = utils.try_parse_int(
                variable.attrib.get('start'))
            item['listitems']['end'] = utils.try_parse_int(
                variable.attrib.get('end'))
            item['parent'] = variable.attrib.get('parent')

            json.append(utils.del_empty_keys(item))

        return dumps(json)