Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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")
Пример #7
0
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']},
        })
Пример #8
0
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
Пример #9
0
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']},
        })
Пример #10
0
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
Пример #11
0
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']},
        })
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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")
Пример #15
0
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
Пример #16
0
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
Пример #17
0
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']
            },
        })
Пример #18
0
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
Пример #19
0
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']},
        })
Пример #20
0
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")
Пример #21
0
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
Пример #22
0
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
Пример #23
0
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
Пример #24
0
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)