def get_movie_metadata(movie, genres_dict=None): info = {} info['title'] = movie['title'] info['year'] = parse_year(movie['release_date']) info['name'] = u'%s (%s)' % (info['title'], info['year']) info['premiered'] = movie['release_date'] 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'%s%s' % ("http://image.tmdb.org/t/p/w500", movie['poster_path']) info['fanart'] = u'%s%s' % ("http://image.tmdb.org/t/p/original", movie['backdrop_path']) 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 get_movie_parameters(movie): parameters = {} parameters['date'] = movie['release_date'] parameters['year'] = parse_year(movie['release_date']) parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['urltitle'] = urllib.quote(to_utf8(parameters['title'])) parameters['sorttitle'] = parameters['title'] articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the '] for article in articles: if to_utf8(parameters['title']).startswith(article): parameters['sorttitle'] = to_utf8(parameters['title']).replace(article,'') parameters['shorttitle'] = 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'] = movie['original_title'] parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) parameters['urlname'] = urllib.quote(to_utf8(parameters['name'])) # parameters['score'] = movie['vote_average'] # parameters['votes'] = movie['vote_count'] # parameters['runtime'] = movie['runtime'] # parameters['duration'] = int(movie['runtime']) * 60 # parameters['plot'] = movie['overview'] parameters['poster'] = "https://image.tmdb.org/t/p/original/" + str(movie['poster_path']) parameters['fanart'] = "https://image.tmdb.org/t/p/original/" + str(movie['backdrop_path']) # parameters['trailer'] = "plugin://script.extendedinfo/?info=playtrailer&id=" + str(movie['imdb_id']) return parameters
def guide_movies_play_by_name(name, lang="en"): import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=lang, page=1)["results"] if not items: return dialogs.ok( _("%s not found") % _("Movie"), "{0} {1}".format(_("No movie information found on TMDB for"), name)) if len(items) > 1: selection = dialogs.select( "{0}".format( _("Choose thumbnail").replace( _("Thumbnail").lower(), _("Movie").lower())), [ "{0} ({1})".format(to_utf8(s["title"]), parse_year(s["release_date"])) for s in items ]) else: selection = 0 if selection != -1: id = items[selection]["id"] guide_movies_play("tmdb", id, "default") if plugin.get_setting(SETTING_MOVIES_PLAYED_BY_ADD, bool) == True: movies_add_to_library("tmdb", id)
def get_movie_parameters(movie): parameters = {} parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['original_title'] = movie['original_title'] parameters['year'] = parse_year(movie['release_date']) parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) for key, value in parameters.items(): if isinstance(value, basestring): parameters[key + "_+"] = value.replace(" ", "+") # Hack for really bad addons parameters[key + "_escaped"] = value.replace(" ", "%2520") """ for key, value in parameters.items(): if isinstance(value, basestring): parameters[key + "_+"] = value.replace(" ", "+") parameters[key + "_dot"] = value.replace(" ", ".") parameters[key + "_%20"] = value.replace(" ", "%20") parameters[key + "_%2520"] = value.replace(" ", "%2520") parameters['title'] = parameters['title'].replace(' ','%20') parameters['title_escaped'] = parameters['title'].replace('%20','%2520') """ return parameters
def movies_play_by_name(name, lang="en"): """ Activate tv search """ import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=lang, page=1)["results"] if not items: dialogs.ok( _("Movie not found"), "{0} {1}".format(_("No movie information found on TMDB for"), name)) return if len(items) > 1: selection = dialogs.select(_("Choose Movie"), [ "{0} ({1})".format(to_utf8(s["title"]), parse_year(s["release_date"])) for s in items ]) else: selection = 0 if selection != -1: id = items[selection]["id"] movies_play("tmdb", id, "default")
def play_movie(tmdb_id, mode): import_tmdb() # Get players to use if mode == 'select': play_plugin = ADDON_SELECTOR.id elif mode == 'context': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_CONTEXT, unicode) elif mode == 'library': play_plugin = get_movie_player_plugin_from_library(tmdb_id) if not play_plugin or play_plugin == "default": play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_LIBRARY, unicode) elif mode == 'default': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER, unicode) else: play_plugin = mode if mode == 'default' or mode == 'select': players = active_players("movies") else: players = get_players("movies") players = [p for p in players if p.id == play_plugin] or players if not players: xbmc.executebuiltin( "Action(Info)") action_cancel() return # Get movie data from TMDB movie = tmdb.Movies(tmdb_id).info(language=LANG, append_to_response="external_ids,videos") movie_info = get_movie_metadata(movie) # Get movie ids from Trakt trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) # Get parameters params = {} for lang in get_needed_langs(players): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang) params[lang] = get_movie_parameters(tmdb_data) if trakt_ids != None: params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) # Go for it link = on_play_video(mode, players, params, trakt_ids) if link: movie = tmdb.Movies(tmdb_id).info(language=LANG) 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'], 'properties' : {'fanart_image' : movie_info['fanart']}, })
def get_movie_parameters(movie): parameters = {} parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['original_title'] = movie['original_title'] parameters['year'] = parse_year(movie['release_date']) parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) return parameters
def play_movie(tmdb_id, mode): import_tmdb() # Get players to use if mode == 'select': play_plugin = ADDON_SELECTOR.id elif mode == 'context': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_CONTEXT, unicode) elif mode == 'library': play_plugin = get_movie_player_plugin_from_library(tmdb_id) if not play_plugin or play_plugin == "default": play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_LIBRARY, unicode) elif mode == 'default': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER, unicode) else: play_plugin = mode if mode != 'context': players = active_players("movies") else: 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)") action_cancel() return # Get movie data from TMDB movie = tmdb.Movies(tmdb_id).info(language=LANG, append_to_response="external_ids,alternative_titles,credits,images,keywords,releases,videos,translations,similar,reviews,lists,rating") movie_info = get_movie_metadata(movie) # Get movie ids from Trakt trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) # Get parameters params = {} for lang in get_needed_langs(players): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang, append_to_response="external_ids,alternative_titles,credits,images,keywords,releases,videos,translations,similar,reviews,lists,rating") params[lang] = get_movie_parameters(tmdb_data) if trakt_ids != None: params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) # Go for it link = on_play_video(mode, players, params, trakt_ids) if link: movie = tmdb.Movies(tmdb_id).info(language=LANG) 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'], 'properties' : {'fanart_image' : movie_info['fanart']}, })
def play_movie(tmdb_id, mode): import_tmdb() # Get players to use if mode == 'select': play_plugin = ADDON_SELECTOR.id elif mode == 'library': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_LIBRARY) else: play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER) players = active_players("movies") players = [p for p in players if p.id == play_plugin] or players if not players: xbmc.executebuiltin( "Action(Info)") action_cancel() return # Get movie data from TMDB movie = tmdb.Movies(tmdb_id).info(language=LANG) movie_info = get_movie_metadata(movie) # Get movie ids from Trakt trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) # Get parameters params = {} for lang in get_needed_langs(players): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang) params[lang] = get_movie_parameters(tmdb_data) params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) # Go for it link = on_play_video(mode, players, params, trakt_ids) if link: movie = tmdb.Movies(tmdb_id).info(language=LANG) 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'], 'properties' : {'fanart_image' : movie_info['fanart']}, })
def guide_movies_play_by_name(name, lang = "en"): import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=lang, page=1)["results"] if not items: return dialogs.ok(_("Movie not found"), "{0} {1}".format(_("No movie information found on TMDB for"), name)) if len(items) > 1: selection = dialogs.select(_("Choose Movie"), ["{0} ({1})".format( to_utf8(s["title"]), parse_year(s["release_date"])) for s in items]) else: selection = 0 if selection != -1: id = items[selection]["id"] guide_movies_play("tmdb", id, "default") if plugin.get_setting(SETTING_MOVIES_PLAYED_BY_ADD, converter=bool) == True: movies_add_to_library("tmdb", id)
def movies_play_by_name(name, lang = "en"): """ Activate tv search """ import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=lang, page=1)["results"] if not items: return dialogs.ok(_("%s not found") % _("Movie"), "{0} {1}".format(_("No movie information found on TMDB for"), name)) if len(items) > 1: selection = dialogs.select("{0}".format(_("Choose thumbnail").replace(_("Thumbnail").lower(),_("Movie").lower())), ["{0} ({1})".format( to_utf8(s["title"]), parse_year(s["release_date"])) for s in items]) else: selection = 0 if selection != -1: id = items[selection]["id"] movies_play("tmdb", id, "context") if plugin.get_setting(SETTING_MOVIES_PLAYED_BY_ADD, bool) == True: movies_add_to_library("tmdb", id)
def movies_play_by_name(name, lang = "en"): """ Activate tv search """ import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=LANG, page=1)["results"] if len(items) > 1: selection = dialogs.select(_("Choose Movie"), [to_utf8(s["title"]) + " (" + parse_year(s["release_date"]) + ")" for s in items]) else: selection = 0 if selection != -1: id = items[selection]["id"] movies_play("tmdb", id, "default")
def get_movie_parameters(movie): parameters = {} parameters['date'] = movie['release_date'] parameters['premiered'] = movie['release_date'] parameters['year'] = parse_year(movie['release_date']) parameters['released'] = movie['release_date'] parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['urltitle'] = urllib.quote(to_utf8(parameters['title'])) parameters['sorttitle'] = to_utf8(parameters['title']) articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the '] for article in articles: if to_utf8(parameters['title']).startswith(article): parameters['sorttitle'] = to_utf8(parameters['title']).replace( article, '') parameters['shorttitle'] = 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'] = movie['original_title'] parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) parameters['urlname'] = urllib.quote(to_utf8(parameters['name'])) parameters['released'] = movie['release_date'] parameters['rating'] = movie['vote_average'] genre = [x['name'] for x in movie['genres'] if not x == ''] studios = [x['name'] for x in movie['production_companies'] if not x == ''] parameters['studios'] = " / ".join(studios) parameters['genres'] = " / ".join(genre) if movie['runtime'] and movie['runtime'] != "" and movie['runtime'] != None: parameters['runtime'] = movie['runtime'] else: parameters['runtime'] = "0" parameters['duration'] = int(parameters['runtime']) * 60 parameters['plot'] = movie['overview'] parameters['tagline'] = movie['tagline'] parameters['rating'] = movie['vote_average'] parameters['poster'] = "https://image.tmdb.org/t/p/original/" + str( movie['poster_path']) parameters['fanart'] = "https://image.tmdb.org/t/p/original/" + str( movie['backdrop_path']) parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') return parameters
def tmdb_to_tvdb(tmdb_show): tvdb_show = None # Search by name and year name = tmdb_show['original_name'] try: year = int(parse_year(tmdb_show['first_air_date'])) except: year = "" results = [x['id'] for x in tvdb.search(name, year)] # Get by id if not a single result if len(results) != 1: id = tmdb.TV(tmdb_show['id']).external_ids().get('tvdb_id', None) if id: results = [id] # Use first result if still have many if results: tvdb_show = tvdb[results[0]] return tvdb_show, tmdb_show
def play_movie_from_guide(tmdb_id, mode): import_tmdb() if mode == 'select': play_plugin = ADDON_PICKER.id elif mode == 'default': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_CHANNELER, unicode) else: play_plugin = mode channelers = active_channelers("movies") channelers = [p for p in channelers if p.id == play_plugin] or channelers if not channelers: xbmc.executebuiltin("Action(Info)") action_cancel() return movie = tmdb.Movies(tmdb_id).info(language=LANG, append_to_response="external_ids,videos") movie_info = get_movie_metadata(movie) trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) params = {} for lang in get_needed_langs(channelers): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang) params[lang] = get_movie_parameters(tmdb_data) if trakt_ids != None: params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) link = on_play_video(mode, channelers, params, trakt_ids) if link: movie = tmdb.Movies(tmdb_id).info(language=LANG) 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'], 'properties': { 'fanart_image': movie_info['fanart'] }, })
def tmdb_to_tvdb(tmdb_show): tvdb_show = None # Search by name and year name = tmdb_show['original_name'] year = int(parse_year(tmdb_show['first_air_date'])) results = [x['id'] for x in tvdb.search(name, year)] # Get by id if not a single result if len(results) != 1: id = tmdb.TV(tmdb_show['id']).external_ids().get('tvdb_id', None) if id: results = [id] # Use first result if still have many if results: tvdb_show = tvdb[results[0]] return tvdb_show, tmdb_show
def play_movie_from_guide(tmdb_id, mode): import_tmdb() if mode == 'select': play_plugin = ADDON_PICKER.id elif mode == 'default': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_CHANNELER) else: play_plugin = mode channelers = active_channelers("movies") channelers = [p for p in channelers if p.id == play_plugin] or channelers if not channelers: xbmc.executebuiltin( "Action(Info)") action_cancel() return movie = tmdb.Movies(tmdb_id).info(language=LANG) movie_info = get_movie_metadata(movie) trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) params = {} for lang in get_needed_langs(channelers): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang) params[lang] = get_movie_parameters(tmdb_data) if trakt_ids != None: params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) link = on_play_video(mode, channelers, params, trakt_ids) if link: movie = tmdb.Movies(tmdb_id).info(language=LANG) 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'], 'properties' : {'fanart_image' : movie_info['fanart']}, })
def movies_play_by_name(name, lang = "en"): """ Activate movie search """ import_tmdb() from meta.utils.text import parse_year items = tmdb.Search().movie(query=name, language=lang, page=1)["results"] if items == []: dialogs.ok(_("Movie not found"), "{0} {1}".format(_("No movie information found on TMDB for"),name)) return if len(items) > 1: selection = dialogs.select(_("Choose Movie"), ["{0} ({1})".format( to_utf8(s["title"]), parse_year(s["release_date"])) for s in items]) else: selection = 0 if selection != -1: id = items[selection]["id"] movies_play("tmdb", id, "default")
def get_movie_metadata(movie, genres_dict=None): info = {} info['title'] = movie['title'] info['year'] = parse_year(movie['release_date']) info['name'] = u'%s (%s)' % (info['title'], info['year']) info['premiered'] = movie['release_date'] info['rating'] = movie['vote_average'] info['votes'] = movie['vote_count'] info['plot'] = movie['overview'] info['originaltitle'] = movie['original_title'] info['tmdb'] = str(movie['id']) if movie['poster_path'] and movie['poster_path'] != None and movie['poster_path'] != "": info['poster'] = u'%s%s' % ('http://image.tmdb.org/t/p/w500', movie['poster_path']) else: info['poster'] = "https://raw.githubusercontent.com/OpenELEQ/Style/master/MetalliQ/default/unavailable.png" if movie['backdrop_path'] and movie['backdrop_path'] != None and movie['backdrop_path'] != "": info['fanart'] = u'%s%s' % ('http://image.tmdb.org/t/p/original', movie['backdrop_path']) else: info['fanart'] = get_background_path() try: info['genre'] = u' / '.join([x['name'] for x in movie['genres']]) except KeyError: if genres_dict: try: info['genre'] = u' / '.join([genres_dict[x] for x in movie['genre_ids']]) except: info['genre'] = '' return info
def get_movie_parameters(movie): parameters = {} parameters['date'] = movie['release_date'] parameters['premiered'] = movie['release_date'] parameters['year'] = parse_year(movie['release_date']) parameters['released'] = movie['release_date'] parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['urltitle'] = urllib.quote(to_utf8(parameters['title'])) parameters['sorttitle'] = to_utf8(parameters['title']) articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the '] for article in articles: if to_utf8(parameters['title']).startswith(article): parameters['sorttitle'] = to_utf8(parameters['title']).replace(article,'') parameters['shorttitle'] = 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'] = movie['original_title'] parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) parameters['urlname'] = urllib.quote(to_utf8(parameters['name'])) parameters['released'] = movie['release_date'] parameters['rating'] = movie['vote_average'] genre = [x['name'] for x in movie['genres'] if not x == ''] studios = [x['name'] for x in movie['production_companies'] if not x == ''] parameters['studios'] = " / ".join(studios) parameters['genres'] = " / ".join(genre) if movie['runtime'] and movie['runtime'] != "" and movie['runtime'] != None: parameters['runtime'] = movie['runtime'] else: parameters['runtime'] = "0" parameters['duration'] = int(parameters['runtime']) * 60 parameters['plot'] = movie['overview'] parameters['tagline'] = movie['tagline'] parameters['rating'] = movie['vote_average'] parameters['poster'] = "https://image.tmdb.org/t/p/original/" + str(movie['poster_path']) parameters['fanart'] = "https://image.tmdb.org/t/p/original/" + str(movie['backdrop_path']) parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') return parameters
def get_movie_parameters(movie): parameters = {} parameters['date'] = movie['release_date'] parameters['premiered'] = movie['release_date'] parameters['year'] = parse_year(movie['release_date']) parameters['released'] = movie['release_date'] parameters['id'] = movie['id'] parameters['imdb'] = movie['imdb_id'] parameters['title'] = movie['title'] parameters['urltitle'] = urllib.quote(to_utf8(parameters['title'])) parameters['sorttitle'] = to_utf8(parameters['title']) articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the '] for article in articles: if to_utf8(parameters['title']).startswith(article): parameters['sorttitle'] = to_utf8(parameters['title']).replace( article, '') parameters['shorttitle'] = 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'] = movie['original_title'] parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year']) parameters['urlname'] = urllib.quote(to_utf8(parameters['name'])) parameters['released'] = movie['release_date'] parameters['rating'] = movie['vote_average'] genre = [x['name'] for x in movie['genres'] if not x == ''] studios = [x['name'] for x in movie['production_companies'] if not x == ''] parameters['studios'] = " / ".join(studios) 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'] = movie['overview'] parameters['tagline'] = movie['tagline'] parameters['poster'] = "http://image.tmdb.org/t/p/original" + str( movie['poster_path']) parameters['fanart'] = "http://image.tmdb.org/t/p/original" + str( movie['backdrop_path']) parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') trakt_ids = get_trakt_ids("tmdb", movie['id'], parameters['title'], "movie", parameters['year']) if "slug" in trakt_ids: if trakt_ids["slug"] != "" and trakt_ids["slug"] != None: parameters['slug'] = trakt_ids["slug"] else: parameters['slug'] = parameters['title'].lower().replace( '~', '').replace('#', '').replace('%', '').replace('&', '').replace( '*', '').replace('{', '').replace('}', '').replace( '\\', '').replace(':', '').replace('<', '').replace( '>', '').replace('?', '').replace('/', '').replace( '+', '').replace('|', '').replace('"', '').replace(" ", "-") return parameters
def play_movie(tmdb_id, mode): import_tmdb() # Get active players players = active_players("movies") if not players: xbmc.executebuiltin( "Action(Info)") action_cancel() return # Get player to use if mode == 'select': play_plugin = ADDON_SELECTOR.id elif mode == 'library': play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER_FROM_LIBRARY) else: play_plugin = plugin.get_setting(SETTING_MOVIES_DEFAULT_PLAYER) # Use just selected player if exists (selectors excluded) players = [p for p in players if p.id == play_plugin] or players # Get movie data from TMDB movie = tmdb.Movies(tmdb_id).info(language=LANG) movie_info = get_movie_metadata(movie) # Get movie ids from Trakt trakt_ids = get_trakt_ids("tmdb", tmdb_id, movie['original_title'], "movie", parse_year(movie['release_date'])) # Preload params params = {} for lang in get_needed_langs(players): if lang == LANG: tmdb_data = movie else: tmdb_data = tmdb.Movies(tmdb_id).info(language=lang) params[lang] = get_movie_parameters(tmdb_data) params[lang].update(trakt_ids) params[lang]['info'] = movie_info params[lang] = to_unicode(params[lang]) # BETA action_cancel() # Get single video selection use_simple_selector = plugin.get_setting(SETTING_USE_SIMPLE_SELECTOR, converter=bool) selection = get_video_link(players, params, mode, use_simple_selector) if not selection: #action_cancel() return # Get selection details link = selection['path'] action = selection.get('action', '') plugin.log.info('Playing url: %s' % link.encode('utf-8')) # Activate link if action == "ACTIVATE": action_activate(link) else: movie = tmdb.Movies(tmdb_id).info(language=LANG) listitem = { 'label': movie_info['title'], 'path': link, 'info': movie_info, 'is_playable': True, 'info_type': 'video', 'thumbnail': movie_info['poster'], 'poster': movie_info['poster'], 'properties' : {'fanart_image' : movie_info['fanart']}, } if trakt_ids: set_property('script.trakt.ids', json.dumps(trakt_ids)) if action == "PLAY": action_play(listitem) else: action_resolve(listitem)