def get_movie_metadata(movie, genres_dict=None): info = {} info['title'] = movie['title'] info['year'] = text.parse_year(movie['release_date']) info['premiered'] = movie['release_date'] info['name'] = u'%s (%s)' % (info['title'], info['year']) info['rating'] = movie['vote_average'] info['votes'] = movie['vote_count'] info['plot'] = movie['overview'] info['originaltitle'] = movie['original_title'] info['tmdb'] = str(movie['id']) info['poster'] = u'https://image.tmdb.org/t/p/original%s' % movie[ 'poster_path'] info['fanart'] = u'https://image.tmdb.org/t/p/original%s' % movie[ 'backdrop_path'] info['mediatype'] = 'movie' try: info['genre'] = u' / '.join([x['name'] for x in movie['genres']]) except KeyError: if genres_dict: info['genre'] = u' / '.join( [genres_dict[x] for x in movie['genre_ids']]) else: info['genre'] = '' return info
def movies_play_by_name(name, lang='en', usedefault='True'): tools.show_busy() from resources.lib.TheMovieDB import Search items = Search().movie(query=name, language=lang, page=1)['results'] if not items: tools.hide_busy() plugin.ok('Movie not found', 'No information found for ' + name) if len(items) > 1: selection = plugin.select('Movie', ['%s (%s)' % ((s['title']), text.parse_year(s['release_date'])) for s in items]) else: selection = 0 tools.hide_busy() if selection != -1: id = items[selection]['id'] movies_play_choose_player('tmdb', id, usedefault)
def tmdb_to_tvdb(tmdb_show): from resources.lib.TheMovieDB import TV tvdb_show = None name = tmdb_show['original_name'] try: year = int(text.parse_year(tmdb_show['first_air_date'])) except: year = '' results = [x['id'] for x in TVDB.search(name, year)] if len(results) != 1: id = TV(tmdb_show['id']).external_ids().get('tvdb_id', None) if id: results = [id] if results: tvdb_show = TVDB[results[0]] return tvdb_show, tmdb_show
def play_movie(tmdb_id): from resources.lib.TheMovieDB import Movies play_plugin = meta_players.ADDON_SELECTOR.id players = meta_players.get_players('movies') players = [p for p in players if p.id == play_plugin] or players if not players or len(players) == 0: xbmc.executebuiltin('Action(Info)') play_base.action_cancel() return movie = Movies(tmdb_id).info( language='en', append_to_response= 'external_ids,alternative_titles,credits,images,keywords,releases,translations,rating' ) movie_info = meta_info.get_movie_metadata(movie) trakt_ids = play_base.get_trakt_ids('tmdb', tmdb_id, movie['original_title'], 'movie', text.parse_year(movie['release_date'])) params = {} for lang in meta_players.get_needed_langs(players): if lang == 'en': tmdb_data = movie else: tmdb_data = Movies(tmdb_id).info( language=lang, append_to_response= 'external_ids,alternative_titles,credits,images,keywords,releases,translations,rating' ) params[lang] = get_movie_parameters(tmdb_data) if trakt_ids != None: params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = text.to_unicode(params[lang]) link = play_base.on_play_video(players, params, trakt_ids) if link: movie = Movies(tmdb_id).info(language='en') play_base.action_play({ 'label': movie_info['title'], 'path': link, 'info': movie_info, 'is_playable': True, 'info_type': 'video', 'thumbnail': movie_info['poster'], 'poster': movie_info['poster'], 'fanart': movie_info['fanart'] })
def get_movie_parameters(movie): parameters = {} parameters['date'] = movie['release_date'] parameters['premiered'] = movie['release_date'] parameters['year'] = text.parse_year(movie['release_date']) parameters['released'] = movie['release_date'] parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['realtitle'] = re.sub('\(\d{4}\)', '', movie['title']).strip() parameters['title'] = text.escape(movie['title']) parameters['striptitle'] = ' '.join(re.compile('[\W_]+').sub(' ', movie['title']).split()) parameters['urltitle'] = urllib.quote(text.to_utf8(parameters['title'])) parameters['sorttitle'] = text.to_utf8(parameters['title']) articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the '] for article in articles: if text.to_utf8(parameters['title']).startswith(article): parameters['sorttitle'] = text.to_utf8(parameters['title']).replace(article,'') parameters['shorttitle'] = text.to_utf8(parameters['title'][1:-1]) if 'movie' in str(parameters['sorttitle']).lower(): parameters['sortesttitle'] = str(parameters['sorttitle']).lower().replace(' movie', '') elif 'movi' in str(parameters['sorttitle']).lower(): parameters['sortesttitle'] = str(parameters['sorttitle']).lower().replace(' movi', '') else: parameters['sortesttitle'] = parameters['sorttitle'] parameters['original_title'] = text.escape(movie['original_title']) parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) parameters['urlname'] = urllib.quote(text.to_utf8(parameters['name'])) parameters['released'] = movie['release_date'] parameters['rating'] = movie['vote_average'] studios = [x['name'] for x in movie['production_companies'] if not x == ''] parameters['studios'] = ' / '.join(studios) genre = [x['name'] for x in movie['genres'] if not x == ''] parameters['genres'] = ' / '.join(genre) if movie['runtime'] and movie['runtime'] != '' and movie['runtime'] != None: parameters['runtime'] = movie['runtime'] else: parameters['runtime'] = '0' if movie['vote_count'] and movie['vote_count'] != '' and movie['vote_count'] != None and movie['vote_count'] != 0: parameters['votes'] = movie['vote_count'] else: parameters['votes'] = '0' if movie['vote_average'] and movie['vote_average'] != '' and movie['vote_average'] != None and movie['vote_average'] != 0: parameters['rating'] = movie['vote_average'] else: parameters['rating'] = '0' if movie['credits']['crew']: prewriters = [i['name'] for i in movie['credits']['crew'] if i['department'] == 'Writing'] writers = [] for item in prewriters: if item not in writers: writers.append(item) parameters['writers'] = ', '.join(writers) else: parameters['writers'] = '' if movie['credits']['crew']: predirectors = [i['name'] for i in movie['credits']['crew'] if i['department'] == 'Directing'] directors = [] for item in predirectors: if item not in directors: directors.append(item) parameters['directors'] = ', '.join(directors) else: parameters['directors'] = '' if movie['credits']['cast']: preactors = [i['name'] for i in movie['credits']['cast']] actors = [] for item in preactors: if item not in actors: actors.append(item) parameters['actors'] = actors else: parameters['actors'] = '' if movie['releases']['countries'][0]['certification']: parameters['mpaa'] = movie['releases']['countries'][0]['certification'] else: parameters['mpaa'] = '' parameters['duration'] = int(parameters['runtime']) * 60 parameters['plot'] = text.escape(movie['overview']) parameters['tagline'] = text.escape(movie['tagline']) if 'https://image.tmdb.org/t/p/w300%s' % str(movie['poster_path']): parameters['poster'] = 'https://image.tmdb.org/t/p/w300%s' % str(movie['poster_path']) else: parameters['poster'] = 'https://image.tmdb.org/t/p/original%s' % str(movie['poster_path']) if 'https://image.tmdb.org/t/p/w1280%s' % str(movie['backdrop_path']): parameters['fanart'] = 'https://image.tmdb.org/t/p/w1280%s' % str(movie['backdrop_path']) else: parameters['fanart'] = 'https://image.tmdb.org/t/p/original%s' % str(movie['backdrop_path']) parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') trakt_ids = play_base.get_trakt_ids(id_type='tmdb', id=movie['id'], type='movie') if 'slug' in trakt_ids and trakt_ids['slug'] != '' and trakt_ids['slug'] != None: try: parameters['slug'] = trakt_ids['slug'] except: pass else: parameters['slug'] = text.clean_title(parameters['title'].lower()) return parameters