def merge_with_cert_desc(input_list, media_type): cert_list = get_certification_list(media_type) for item in input_list: if item['iso_3166_1'].upper() not in cert_list: continue hit = Utils.dictfind(lst=cert_list[item['iso_3166_1'].upper()], key='certification', value=item['certification']) if hit: item['meaning'] = hit['meaning'] return input_list
def extended_tvshow_info(tvshow_id=None, cache_time=7, dbid=None): if not tvshow_id: return None session_str = '' response = get_tmdb_data( 'tv/%s?append_to_response=alternative_titles,content_ratings,credits,external_ids,images,keywords,rating,similar,translations,videos&language=%s&include_image_language=en,null,%s&%s' % (tvshow_id, xbmcaddon.Addon().getSetting('LanguageID'), xbmcaddon.Addon().getSetting('LanguageID'), session_str), cache_time) if not response: return False videos = handle_tmdb_videos( response['videos']['results']) if 'videos' in response else [] tmdb_id = Utils.fetch(response, 'id') external_ids = Utils.fetch(response, 'external_ids') if external_ids: imdb_id = Utils.fetch(external_ids, 'imdb_id') freebase_id = Utils.fetch(external_ids, 'freebase_id') tvdb_id = Utils.fetch(external_ids, 'tvdb_id') tvrage_id = Utils.fetch(external_ids, 'tvrage_id') artwork = get_image_urls(poster=response.get('poster_path'), fanart=response.get('backdrop_path')) if len(response.get('episode_run_time', -1)) > 1: duration = '%i - %i' % (min( response['episode_run_time']), max(response['episode_run_time'])) elif len(response.get('episode_run_time', -1)) == 1: duration = '%i' % response['episode_run_time'][0] else: duration = '' us_cert = Utils.dictfind(response['content_ratings']['results'], 'iso_3166_1', 'US') if us_cert: mpaa = us_cert['rating'] elif response['content_ratings']['results']: mpaa = response['content_ratings']['results'][0]['rating'] else: mpaa = '' genres = [item['name'] for item in response['genres']] tvshow = { 'title': Utils.fetch(response, 'name'), 'TVShowTitle': Utils.fetch(response, 'name'), 'OriginalTitle': Utils.fetch(response, 'original_name'), 'duration': duration, 'duration(h)': Utils.format_time(duration, 'h'), 'duration(m)': Utils.format_time(duration, 'm'), 'id': tmdb_id, 'tmdb_id': tmdb_id, 'imdb_id': imdb_id, 'freebase_id': freebase_id, 'tvdb_id': tvdb_id, 'tvrage_id': tvrage_id, 'mpaa': mpaa, 'genre': ' / '.join(genres), 'credit_id': Utils.fetch(response, 'credit_id'), 'Plot': Utils.clean_text(Utils.fetch(response, 'overview')), 'year': Utils.get_year(Utils.fetch(response, 'first_air_date')), 'media_type': 'tv', 'Popularity': Utils.fetch(response, 'popularity'), 'Rating': Utils.fetch(response, 'vote_average'), 'country': Utils.fetch(response, 'original_language'), 'User_Rating': str(Utils.fetch(response, 'rating')), 'Votes': Utils.fetch(response, 'vote_count'), 'Status': translate_status(Utils.fetch(response, 'status')), 'path': 'plugin://script.extendedinfo?info=extendedtvinfo&&id=%s' % tvshow_id, 'trailer': 'plugin://script.extendedinfo?info=playtvtrailer&&id=%s' % tvshow_id, 'ShowType': Utils.fetch(response, 'type'), 'homepage': Utils.fetch(response, 'homepage'), 'last_air_date': Utils.fetch(response, 'last_air_date'), 'first_air_date': Utils.fetch(response, 'first_air_date'), 'TotalEpisodes': Utils.fetch(response, 'number_of_episodes'), 'TotalSeasons': Utils.fetch(response, 'number_of_seasons'), 'in_production': Utils.fetch(response, 'in_production'), 'Release_Date': Utils.fetch(response, 'first_air_date'), 'Premiered': Utils.fetch(response, 'first_air_date') } tvshow.update(artwork) if dbid: local_item = local_db.get_tvshow_from_db(dbid) tvshow.update(local_item) else: tvshow = local_db.merge_with_local_tvshow_info([tvshow])[0] tvshow['Rating'] = Utils.fetch(response, 'vote_average') listitems = { 'actors': handle_tmdb_people(response['credits']['cast']), 'similar': handle_tmdb_tvshows(response['similar']['results']), 'studios': handle_tmdb_misc(response['production_companies']), 'networks': handle_tmdb_misc(response['networks']), 'certifications': handle_tmdb_misc(response['content_ratings']['results']), 'crew': handle_tmdb_people(response['credits']['crew']), 'genres': handle_tmdb_misc(response['genres']), 'keywords': handle_tmdb_misc(response['keywords']['results']), 'videos': videos, 'seasons': handle_tmdb_seasons(response['seasons']), 'images': handle_tmdb_images(response['images']['posters']), 'backdrops': handle_tmdb_images(response['images']['backdrops']) } return (tvshow, listitems)
def extended_movie_info(movie_id=None, dbid=None, cache_time=14): if not movie_id: return None session_str = '' response = get_tmdb_data( 'movie/%s?append_to_response=alternative_titles,credits,images,keywords,releases,videos,translations,similar,reviews,rating&include_image_language=en,null,%s&language=%s&%s' % (movie_id, xbmcaddon.Addon().getSetting('LanguageID'), xbmcaddon.Addon().getSetting('LanguageID'), session_str), cache_time) if not response: Utils.notify('Could not get movie information', sound=False) return {} mpaa = '' set_name = '' set_id = '' genres = [i['name'] for i in response['genres']] Studio = [i['name'] for i in response['production_companies']] authors = [ i['name'] for i in response['credits']['crew'] if i['department'] == 'Writing' ] directors = [ i['name'] for i in response['credits']['crew'] if i['department'] == 'Directing' ] us_cert = Utils.dictfind(response['releases']['countries'], 'iso_3166_1', 'US') if us_cert: mpaa = us_cert['certification'] elif response['releases']['countries']: mpaa = response['releases']['countries'][0]['certification'] movie_set = Utils.fetch(response, 'belongs_to_collection') if movie_set: set_name = Utils.fetch(movie_set, 'name') set_id = Utils.fetch(movie_set, 'id') artwork = get_image_urls(poster=response.get('poster_path'), fanart=response.get('backdrop_path')) movie = { 'title': Utils.fetch(response, 'title'), 'Label': Utils.fetch(response, 'title'), 'Tagline': Utils.fetch(response, 'tagline'), 'duration': Utils.fetch(response, 'runtime'), 'duration(h)': Utils.format_time(Utils.fetch(response, 'runtime'), 'h'), 'duration(m)': Utils.format_time(Utils.fetch(response, 'runtime'), 'm'), 'duration(hm)': Utils.format_time(Utils.fetch(response, 'runtime')), 'mpaa': mpaa, 'Director': ' / '.join(directors), 'writer': ' / '.join(authors), 'Budget': Utils.millify(Utils.fetch(response, 'budget')), 'Revenue': Utils.millify(Utils.fetch(response, 'revenue')), 'Homepage': Utils.fetch(response, 'homepage'), 'Set': set_name, 'SetId': set_id, 'id': Utils.fetch(response, 'id'), 'tmdb_id': Utils.fetch(response, 'id'), 'imdb_id': Utils.fetch(response, 'imdb_id'), 'Plot': Utils.clean_text(Utils.fetch(response, 'overview')), 'OriginalTitle': Utils.fetch(response, 'original_title'), 'Country': Utils.fetch(response, 'original_language'), 'genre': ' / '.join(genres), 'Rating': Utils.fetch(response, 'vote_average'), 'Votes': Utils.fetch(response, 'vote_count'), 'Adult': str(Utils.fetch(response, 'adult')), 'Popularity': Utils.fetch(response, 'popularity'), 'Status': translate_status(Utils.fetch(response, 'status')), 'release_date': Utils.fetch(response, 'release_date'), 'Premiered': Utils.fetch(response, 'release_date'), 'Studio': ' / '.join(Studio), 'year': Utils.get_year(Utils.fetch(response, 'release_date')), 'path': 'plugin://script.extendedinfo?info=extendedinfo&&id=%s' % movie_id, 'trailer': 'plugin://script.extendedinfo?info=playtrailer&&id=%s' % movie_id } movie.update(artwork) videos = handle_tmdb_videos( response['videos']['results']) if 'videos' in response else [] if dbid: local_item = local_db.get_movie_from_db(dbid) movie.update(local_item) else: movie = local_db.merge_with_local_movie_info([movie])[0] movie['Rating'] = Utils.fetch(response, 'vote_average') listitems = { 'actors': handle_tmdb_people(response['credits']['cast']), 'similar': handle_tmdb_movies(response['similar']['results']), 'studios': handle_tmdb_misc(response['production_companies']), 'releases': handle_tmdb_misc(response['releases']['countries']), 'crew': handle_tmdb_people(response['credits']['crew']), 'genres': handle_tmdb_misc(response['genres']), 'keywords': handle_tmdb_misc(response['keywords']['keywords']), 'reviews': handle_tmdb_misc(response['reviews']['results']), 'videos': videos, 'images': handle_tmdb_images(response['images']['posters']), 'backdrops': handle_tmdb_images(response['images']['backdrops']) } return (movie, listitems)