Ejemplo n.º 1
0
def tmdb():
    xbmcplugin.setPluginCategory(plugin.handle, "TheMovieDB")
    items = [("incinemamovies", addon.LANG(32042)),
             ("upcomingmovies", addon.LANG(32043)),
             ("topratedmovies", addon.LANG(32046)),
             ("popularmovies", addon.LANG(32044)),
             ("ratedmovies", addon.LANG(32135)),
             ("airingtodaytvshows", addon.LANG(32038)),
             ("onairtvshows", addon.LANG(32039)),
             ("topratedtvshows", addon.LANG(32040)),
             ("populartvshows", addon.LANG(32041)),
             ("ratedtvshows", addon.LANG(32145)),
             ("ratedepisodes", addon.LANG(32093))]
    login = [("starredmovies", addon.LANG(32134)),
             ("starredtvshows", addon.LANG(32144)),
             ("accountlists", addon.LANG(32045))]
    if addon.setting("tmdb_username") and addon.setting("tmdb_password"):
        items += login
    for key, value in items:
        li = xbmcgui.ListItem(label=value, thumbnailImage="DefaultFolder.png")
        url = 'plugin://script.extendedinfo?info=%s' % key
        xbmcplugin.addDirectoryItem(handle=plugin.handle,
                                    url=url,
                                    listitem=li,
                                    isFolder=True)
    xbmcplugin.addSortMethod(plugin.handle, xbmcplugin.SORT_METHOD_LABEL)
    xbmcplugin.endOfDirectory(plugin.handle)
Ejemplo n.º 2
0
def tmdb():
    xbmcplugin.setPluginCategory(plugin.handle, "TheMovieDB")
    items = [("incinemamovies", addon.LANG(32042)),
             ("upcomingmovies", addon.LANG(32043)),
             ("topratedmovies", addon.LANG(32046)),
             ("popularmovies", addon.LANG(32044)),
             ("ratedmovies", addon.LANG(32135)),
             ("airingtodaytvshows", addon.LANG(32038)),
             ("onairtvshows", addon.LANG(32039)),
             ("topratedtvshows", addon.LANG(32040)),
             ("populartvshows", addon.LANG(32041)),
             ("ratedtvshows", addon.LANG(32145)),
             ("ratedepisodes", addon.LANG(32093))]
    login = [("starredmovies", addon.LANG(32134)),
             ("starredtvshows", addon.LANG(32144)),
             ("accountlists", addon.LANG(32045))]
    if addon.setting("tmdb_username") and addon.setting("tmdb_password"):
        items += login
    for key, value in items:
        li = xbmcgui.ListItem(label=value,
                              thumbnailImage="DefaultFolder.png")
        url = 'plugin://script.extendedinfo?info=%s' % key
        xbmcplugin.addDirectoryItem(handle=plugin.handle,
                                    url=url,
                                    listitem=li,
                                    isFolder=True)
    xbmcplugin.addSortMethod(plugin.handle, xbmcplugin.SORT_METHOD_LABEL)
    xbmcplugin.endOfDirectory(plugin.handle)
Ejemplo n.º 3
0
    def open_season_info(self, prev_window=None, tvshow_id=None,
                         season=None, tvshow=None, dbid=None):
        """
        open season info, deal with window stack
        needs *season AND (*tvshow_id OR *tvshow)
        """
        self.show_busy()
        from dialogs import DialogSeasonInfo
        dbid = int(dbid) if dbid and int(dbid) > 0 else None
        if not tvshow_id:
            params = {"query": tvshow,
                      "language": addon.setting("language")}
            response = TheMovieDB.get_data(url="search/tv",
                                           params=params,
                                           cache_days=30)
            if response["results"]:
                tvshow_id = str(response['results'][0]['id'])
            else:
                params = {"query": re.sub('\(.*?\)', '', tvshow),
                          "language": addon.setting("language")}
                response = TheMovieDB.get_data(url="search/tv",
                                               params=params,
                                               cache_days=30)
                if response["results"]:
                    tvshow_id = str(response['results'][0]['id'])

        season_class = DialogSeasonInfo.get_window(windows.DialogXML)
        dialog = season_class(INFO_XML,
                              addon.PATH,
                              id=tvshow_id,
                              season=season,
                              dbid=dbid)
        self.hide_busy()
        self.open_dialog(dialog, prev_window)
Ejemplo n.º 4
0
    def open_season_info(self, tvshow_id=None, season=None, tvshow=None, dbid=None):
        """
        open season info, deal with window stack
        needs *season AND (*tvshow_id OR *tvshow)
        """
        busy.show_busy()
        from dialogs.DialogSeasonInfo import DialogSeasonInfo
        if not tvshow_id:
            params = {"query": tvshow,
                      "language": addon.setting("language")}
            response = tmdb.get_data(url="search/tv",
                                     params=params,
                                     cache_days=30)
            if response["results"]:
                tvshow_id = str(response['results'][0]['id'])
            else:
                params = {"query": re.sub('\(.*?\)', '', tvshow),
                          "language": addon.setting("language")}
                response = tmdb.get_data(url="search/tv",
                                         params=params,
                                         cache_days=30)
                if response["results"]:
                    tvshow_id = str(response['results'][0]['id'])

        dialog = DialogSeasonInfo(INFO_XML,
                                  addon.PATH,
                                  id=tvshow_id,
                                  season=max(0, season),
                                  dbid=int(dbid) if dbid and int(dbid) > 0 else None)
        busy.hide_busy()
        self.open_infodialog(dialog)
Ejemplo n.º 5
0
 def onSettingsChanged(self):
     addon.reload_addon()
     username = addon.setting("tmdb_username")
     password = addon.setting("tmdb_password")
     if username and password:
         TheMovieDB.Login = TheMovieDB.LoginProvider(username=username,
                                                     password=password)
     if wm.active_dialog:
         wm.active_dialog.close()
         wm.active_dialog.logged_in = TheMovieDB.Login.check_login(cache_days=0)
         wm.active_dialog.doModal()
 def onSettingsChanged(self):
     addon.reload_addon()
     username = addon.setting("tmdb_username")
     password = addon.setting("tmdb_password")
     if username and password:
         TheMovieDB.Login = TheMovieDB.LoginProvider(username=username,
                                                     password=password)
     if wm.active_dialog:
         wm.active_dialog.close()
         wm.active_dialog.logged_in = TheMovieDB.Login.check_login(
             cache_days=0)
         wm.active_dialog.doModal()
def check_version():
    """
    check version, open TextViewer if update detected
    """
    if not addon.setting("changelog_version") == addon.VERSION:
        text = utils.read_from_file(os.path.join(addon.PATH, "changelog.txt"),
                                    True)
        xbmcgui.Dialog().textviewer(heading=addon.LANG(24036), text=text)
        addon.set_setting("changelog_version", addon.VERSION)
    if not addon.setting("first_start_infodialog"):
        addon.set_setting("first_start_infodialog", "True")
        xbmcgui.Dialog().ok(heading=addon.NAME,
                            line1=addon.LANG(32140),
                            line2=addon.LANG(32141))
Ejemplo n.º 8
0
def check_version():
    """
    check version, open TextViewer if update detected
    """
    if not addon.setting("changelog_version") == addon.VERSION:
        text = utils.read_from_file(os.path.join(addon.PATH, "changelog.txt"), True)
        xbmcgui.Dialog().textviewer(heading=addon.LANG(24036),
                                    text=text)
        addon.set_setting("changelog_version", addon.VERSION)
    if not addon.setting("first_start_infodialog"):
        addon.set_setting("first_start_infodialog", "True")
        xbmcgui.Dialog().ok(heading=addon.NAME,
                            line1=addon.LANG(32140),
                            line2=addon.LANG(32141))
Ejemplo n.º 9
0
 def set_genre_filter(self, control_id):
     params = {"language": addon.setting("LanguageID")}
     response = tmdb.get_data(url="genre/%s/list" % (self.type),
                              params=params,
                              cache_days=100)
     selected = [
         i["id"] for i in self.filters if i["type"] == "with_genres"
     ]
     ids = [item["id"] for item in response["genres"]]
     labels = [item["name"] for item in response["genres"]]
     preselect = [ids.index(int(i))
                  for i in selected[0].split(",")] if selected else []
     indexes = xbmcgui.Dialog().multiselect(heading=addon.LANG(32151),
                                            options=labels,
                                            preselect=preselect)
     if indexes is None:
         return None
     self.filters = [
         i for i in self.filters if i["type"] != "with_genres"
     ]
     for i in indexes:
         self.add_filter(key="with_genres",
                         value=ids[i],
                         label=labels[i],
                         reset=False)
     self.reset()
Ejemplo n.º 10
0
 def handle_tvshow(self, tvshow):
     """
     convert tvshow data to listitems
     """
     if addon.setting("infodialog_onclick") != "false":
         path = PLUGIN_BASE + 'extendedtvinfo&&dbid=%s' % tvshow['tvshowid']
     else:
         path = PLUGIN_BASE + 'action&&id=ActivateWindow(videos,videodb://tvshows/titles/%s/,return)' % tvshow['tvshowid']
     db_tvshow = VideoItem(label=tvshow.get("label"),
                           path=path)
     db_tvshow.set_infos({'title': tvshow.get('label'),
                          'dbid': tvshow['tvshowid'],
                          'genre': " / ".join(tvshow.get('genre')),
                          'rating': round(float(tvshow['rating']), 1),
                          'mediatype': "tvshow",
                          'mpaa': tvshow.get("mpaa"),
                          'plot': tvshow.get("plot"),
                          'votes': tvshow.get("votes"),
                          'studio': " / ".join(tvshow.get('studio')),
                          'premiered': tvshow.get("premiered"),
                          'playcount': tvshow.get("playcount"),
                          'imdbnumber': tvshow.get("imdbnumber"),
                          'userrating': tvshow.get("userrating"),
                          'duration': tvshow.get("duration"),
                          # "tag": " / ".join(movie['tag']),
                          'year': tvshow.get('year'),
                          'originaltitle': tvshow.get('originaltitle')})
     db_tvshow.set_properties({'imdb_id': tvshow.get('imdbnumber'),
                               'file': tvshow.get('file'),
                               'watchedepisodes': tvshow.get('watchedepisodes'),
                               'totalepisodes': tvshow.get('episode')})
     db_tvshow.set_artwork(tvshow['art'])
     db_tvshow.set_cast(tvshow.get("cast"))
     return db_tvshow
Ejemplo n.º 11
0
 def handle_movie(self, movie):
     """
     convert movie data to listitems
     """
     trailer = PLUGIN_BASE + "playtrailer&&dbid=%s" % movie['movieid']
     if addon.setting("infodialog_onclick") != "false":
         path = PLUGIN_BASE + 'extendedinfo&&dbid=%s' % movie['movieid']
     else:
         path = PLUGIN_BASE + 'playmovie&&dbid=%i' % movie['movieid']
     resume = movie['resume']
     if (resume['position'] and resume['total']) > 0:
         resumable = "true"
         played = int(
             (float(resume['position']) / float(resume['total'])) * 100)
     else:
         resumable = "false"
         played = 0
     db_movie = VideoItem(label=movie.get('label'), path=path)
     db_movie.set_infos({
         'title': movie.get('label'),
         'dbid': movie['movieid'],
         'file': movie.get('file'),
         'year': movie.get('year'),
         'writer': " / ".join(movie['writer']),
         'mediatype': "movie",
         'set': movie.get("set"),
         'playcount': movie.get("playcount"),
         'setid': movie.get("setid"),
         'top250': movie.get("top250"),
         'imdbnumber': movie.get("imdbnumber"),
         'userrating': movie.get('userrating'),
         'trailer': trailer,
         'rating': round(float(movie['rating']), 1),
         'director': " / ".join(movie.get('director')),
         'writer': " / ".join(movie.get('writer')),
         # "tag": " / ".join(movie['tag']),
         "genre": " / ".join(movie['genre']),
         'plot': movie.get('plot'),
         'plotoutline': movie.get('plotoutline'),
         'studio': " / ".join(movie.get('studio')),
         'mpaa': movie.get('mpaa'),
         'originaltitle': movie.get('originaltitle')
     })
     db_movie.set_properties({
         'imdb_id': movie.get('imdbnumber'),
         'showlink': " / ".join(movie['showlink']),
         'percentplayed': played,
         'resume': resumable
     })
     db_movie.set_artwork(movie['art'])
     db_movie.set_videoinfos(movie['streamdetails']["video"])
     db_movie.set_audioinfos(movie['streamdetails']["audio"])
     stream_info = media_streamdetails(
         movie['file'].encode('utf-8').lower(), movie['streamdetails'])
     db_movie.update_properties(stream_info)
     db_movie.set_cast(movie.get("cast"))
     return db_movie
Ejemplo n.º 12
0
 def onInit(self):
     self.clearProperty('NavMode')
     self.clearProperty('streetview')
     self.venues = self.getControl(C_PLACES_LIST)
     self.update()
     self.venues.reset()
     self.venues.addItems(items=utils.create_listitems(self.items))
     self.clearProperty("index")
     if not addon.setting('firststart') == "true":
         addon.set_setting('firststart', 'true')
         xbmcgui.Dialog().ok(addon.LANG(32001), addon.LANG(32002), addon.LANG(32003))
Ejemplo n.º 13
0
 def onInit(self):
     super(DialogBaseList, self).onInit()
     viewtype = addon.setting("viewtype_selection")
     if viewtype:
         xbmc.executebuiltin("Container.SetViewMode(%s)" % viewtype)
     self.update_ui()
     if self.total_items > 0:
         self.setFocusId(self.getCurrentContainerId())
         self.setCurrentListPosition(self.last_position)
     else:
         self.setFocusId(ID_BUTTON_SEARCH)
Ejemplo n.º 14
0
 def onInit(self):
     super(DialogBaseList, self).onInit()
     viewtype = addon.setting("viewtype_selection")
     if viewtype:
         xbmc.executebuiltin("Container.SetViewMode(%s)" % viewtype)
     self.update_ui()
     if self.total_items > 0:
         self.setFocusId(self.getCurrentContainerId())
         self.setCurrentListPosition(self.last_position)
     else:
         self.setFocusId(ID_BUTTON_SEARCH)
Ejemplo n.º 15
0
 def handle_movie(self, movie):
     """
     convert movie data to listitems
     """
     trailer = PLUGIN_BASE + "playtrailer&&dbid=%s" % movie['movieid']
     if addon.setting("infodialog_onclick") != "false":
         path = PLUGIN_BASE + 'extendedinfo&&dbid=%s' % movie['movieid']
     else:
         path = PLUGIN_BASE + 'playmovie&&dbid=%i' % movie['movieid']
     resume = movie['resume']
     if (resume['position'] and resume['total']) > 0:
         resumable = "true"
         played = int((float(resume['position']) / float(resume['total'])) * 100)
     else:
         resumable = "false"
         played = 0
     db_movie = VideoItem(label=movie.get('label'),
                          path=path)
     db_movie.set_infos({'title': movie.get('label'),
                         'dbid': movie['movieid'],
                         'file': movie.get('file'),
                         'year': movie.get('year'),
                         'writer': " / ".join(movie['writer']),
                         'mediatype': "movie",
                         'set': movie.get("set"),
                         'playcount': movie.get("playcount"),
                         'setid': movie.get("setid"),
                         'top250': movie.get("top250"),
                         'imdbnumber': movie.get("imdbnumber"),
                         'userrating': movie.get('userrating'),
                         'trailer': trailer,
                         'rating': round(float(movie['rating']), 1),
                         'director': " / ".join(movie.get('director')),
                         'writer': " / ".join(movie.get('writer')),
                         # "tag": " / ".join(movie['tag']),
                         "genre": " / ".join(movie['genre']),
                         'plot': movie.get('plot'),
                         'plotoutline': movie.get('plotoutline'),
                         'studio': " / ".join(movie.get('studio')),
                         'mpaa': movie.get('mpaa'),
                         'originaltitle': movie.get('originaltitle')})
     db_movie.set_properties({'imdb_id': movie.get('imdbnumber'),
                              'showlink': " / ".join(movie['showlink']),
                              'percentplayed': played,
                              'resume': resumable})
     db_movie.set_artwork(movie['art'])
     db_movie.set_videoinfos(movie['streamdetails']["video"])
     db_movie.set_audioinfos(movie['streamdetails']["audio"])
     stream_info = media_streamdetails(movie['file'].encode('utf-8').lower(),
                                       movie['streamdetails'])
     db_movie.update_properties(stream_info)
     db_movie.set_cast(movie.get("cast"))
     return db_movie
Ejemplo n.º 16
0
        def fetch_data(self, force=False):  # TODO: rewrite
            sort_by = self.sort + "." + self.order
            temp = "tv" if self.type == "tv" else "movies"
            if self.mode == "search":
                self.filter_label = addon.LANG(
                    32146) % self.search_str if self.search_str else ""
                return tmdb.multi_search(search_str=self.search_str,
                                         page=self.page,
                                         cache_days=0 if force else 2)
            elif self.mode == "list":
                xbmc.log("fetching list of movies...........", 2)
                return tmdb.get_list_movies(list_id=self.list_id, force=force)
            elif self.mode == "favorites":
                self.filter_label = addon.LANG(
                    32144) if self.type == "tv" else addon.LANG(32134)
                return tmdb.get_fav_items(media_type=temp,
                                          sort_by=sort_by,
                                          page=self.page)
            elif self.mode == "rating":
                self.filter_label = addon.LANG(
                    32145) if self.type == "tv" else addon.LANG(32135)
                return tmdb.get_rated_media_items(media_type=temp,
                                                  sort_by=sort_by,
                                                  page=self.page,
                                                  cache_days=0)
            else:
                self.set_filter_label()
                params = {
                    "sort_by": sort_by,
                    "language": addon.setting("LanguageID"),
                    "page": self.page,
                    "include_adult": include_adult
                }
                filters = {item["type"]: item["id"] for item in self.filters}
                response = tmdb.get_data(url="discover/%s" % (self.type),
                                         params=utils.merge_dicts(
                                             params, filters),
                                         cache_days=0 if force else 2)

                if not response["results"]:
                    utils.notify(addon.LANG(284))
                    return None
                if self.type == "movie":
                    itemlist = tmdb.handle_movies(results=response["results"],
                                                  local_first=False,
                                                  sortkey=None)
                else:
                    itemlist = tmdb.handle_tvshows(results=response["results"],
                                                   local_first=False,
                                                   sortkey=None)
                itemlist.set_totals(response["total_results"])
                itemlist.set_total_pages(response["total_pages"])
                return itemlist
Ejemplo n.º 17
0
 def get_youtube_vids(self, search_str):
     try:
         youtube_list = self.getControl(ID_LIST_YOUTUBE)
     except Exception:
         return None
     if not self.yt_listitems:
         user_key = addon.setting("Youtube API Key")
         self.yt_listitems = youtube.search(search_str, limit=15, api_key=user_key)
     if not self.yt_listitems:
         return None
     vid_ids = [item.get_property("key") for item in self.lists["videos"]] if "videos" in self.lists else []
     youtube_list.reset()
     youtube_list.addItems([i.get_listitem() for i in self.yt_listitems if i.get_property("youtube_id") not in vid_ids])
Ejemplo n.º 18
0
 def __init__(self, *args, **kwargs):
     self.callback = kwargs.get("call")
     self.search_str = kwargs.get("start_value", "")
     self.previous = False
     self.prev_time = 0
     self.timer = None
     self.color_timer = None
     self.setting_name = kwargs.get("history")
     setting_string = addon.setting(self.setting_name)
     if self.setting_name and setting_string:
         self.last_searches = deque(ast.literal_eval(setting_string), maxlen=10)
     else:
         self.last_searches = deque(maxlen=10)
Ejemplo n.º 19
0
    def open_season_info(self,
                         prev_window=None,
                         tvshow_id=None,
                         season=None,
                         tvshow=None,
                         dbid=None):
        """
        open season info, deal with window stack
        needs *season AND (*tvshow_id OR *tvshow)
        """
        self.show_busy()
        from dialogs import DialogSeasonInfo
        dbid = int(dbid) if dbid and int(dbid) > 0 else None
        if not tvshow_id:
            params = {"query": tvshow, "language": addon.setting("language")}
            response = TheMovieDB.get_data(url="search/tv",
                                           params=params,
                                           cache_days=30)
            if response["results"]:
                tvshow_id = str(response['results'][0]['id'])
            else:
                params = {
                    "query": re.sub('\(.*?\)', '', tvshow),
                    "language": addon.setting("language")
                }
                response = TheMovieDB.get_data(url="search/tv",
                                               params=params,
                                               cache_days=30)
                if response["results"]:
                    tvshow_id = str(response['results'][0]['id'])

        season_class = DialogSeasonInfo.get_window(windows.DialogXML)
        dialog = season_class(INFO_XML,
                              addon.PATH,
                              id=tvshow_id,
                              season=season,
                              dbid=dbid)
        self.hide_busy()
        self.open_dialog(dialog, prev_window)
Ejemplo n.º 20
0
def extended_artist_info(results):
    artists = []
    if not results.get('artists'):
        return None
    local_bio = 'strBiography' + addon.setting("LanguageID").upper()
    for artist in results['artists']:
        description = ""
        if local_bio in artist and artist[local_bio]:
            description = artist.get(local_bio)
        elif artist.get('strBiographyEN'):
            description = artist.get('strBiographyEN')
        elif artist.get('strBiography'):
            description = artist.get('strBiography')
        if 'strReview' in artist and artist['strReview']:
            description += "[CR]" + artist.get('strReview')
        artist = {
            'label': artist.get('strArtist'),
            'artist': artist.get('strArtist'),
            'mediatype': "artist",
            'Country': artist.get('strCountry'),
            'mbid': artist.get('strMusicBrainzID'),
            'thumb': artist.get('strArtistThumb'),
            'Banner': artist.get('strArtistBanner'),
            'clearlogo': artist.get('strArtistLogo'),
            'fanart': artist.get('strArtistFanart'),
            'fanart2': artist.get('strArtistFanart2'),
            'fanart3': artist.get('strArtistFanart3'),
            'Artist_Mood': artist.get('strMood'),
            'Artist_Born': artist.get('intBornYear'),
            'Artist_Formed': artist.get('intFormedYear'),
            'Artist_Died': artist.get('intDiedYear'),
            'Artist_Disbanded': artist.get('strDisbanded'),
            'Artist_Mood': artist.get('strMood'),
            'Artist_Description': description,
            'Artist_Genre': artist.get('strGenre'),
            'Artist_Style': artist.get('strStyle'),
            'CountryCode': artist.get('strCountryCode'),
            'Website': artist.get('strWebsite'),
            'Twitter': artist.get('strTwitter'),
            'Facebook': artist.get('strFacebook'),
            'LastFMChart': artist.get('strLastFMChart'),
            'Gender': artist.get('strGender'),
            'audiodb_id': artist.get('idArtist'),
            'Members': artist.get('intMembers')
        }
        artists.append(artist)
    if artists:
        return artists[0]
    else:
        return {}
Ejemplo n.º 21
0
    def open_season_info(self,
                         tvshow_id=None,
                         season=None,
                         tvshow=None,
                         dbid=None):
        """
        open season info, deal with window stack
        needs *season AND (*tvshow_id OR *tvshow)
        """
        busy.show_busy()
        from .dialogs.DialogSeasonInfo import DialogSeasonInfo
        if not tvshow_id:
            params = {"query": tvshow, "language": addon.setting("language")}
            response = tmdb.get_data(url="search/tv",
                                     params=params,
                                     cache_days=30)
            if response["results"]:
                tvshow_id = str(response['results'][0]['id'])
            else:
                params = {
                    "query": re.sub('\(.*?\)', '', tvshow),
                    "language": addon.setting("language")
                }
                response = tmdb.get_data(url="search/tv",
                                         params=params,
                                         cache_days=30)
                if response["results"]:
                    tvshow_id = str(response['results'][0]['id'])

        dialog = DialogSeasonInfo(
            INFO_XML,
            addon.PATH,
            id=tvshow_id,
            season=max(0, season),
            dbid=int(dbid) if dbid and int(dbid) > 0 else None)
        busy.hide_busy()
        self.open_infodialog(dialog)
 def set_genre_filter(self, control_id):
     params = {"language": addon.setting("LanguageID")}
     response = tmdb.get_data(url="genre/%s/list" % (self.type),
                              params=params,
                              cache_days=10)
     ids = [item["id"] for item in response["genres"]]
     labels = [item["name"] for item in response["genres"]]
     index = xbmcgui.Dialog().select(heading=addon.LANG(32151),
                                     list=labels)
     if index == -1:
         return None
     self.add_filter(key="with_genres",
                     value=str(ids[index]),
                     typelabel=addon.LANG(135),
                     label=labels[index])
Ejemplo n.º 23
0
 def set_genre_filter(self, control_id):
     params = {"language": addon.setting("LanguageID")}
     response = tmdb.get_data(url="genre/%s/list" % (self.type),
                              params=params,
                              cache_days=10)
     ids = [item["id"] for item in response["genres"]]
     labels = [item["name"] for item in response["genres"]]
     index = xbmcgui.Dialog().select(heading=addon.LANG(32151),
                                     list=labels)
     if index == -1:
         return None
     self.add_filter(key="with_genres",
                     value=str(ids[index]),
                     typelabel=addon.LANG(135),
                     label=labels[index])
 def fetch_data(self, force=False):
     self.set_filter_label()
     if self.search_str:
         self.filter_label = addon.LANG(32146) % (
             self.search_str) + "  " + self.filter_label
     user_key = addon.setting("Youtube API Key")
     return youtube.search(
         search_str=self.search_str,
         orderby=self.sort,
         extended=True,
         filters={item["type"]: item["id"]
                  for item in self.filters},
         media_type=self.type,
         page=self.page_token,
         api_key=user_key)
Ejemplo n.º 25
0
def extended_artist_info(results):
    artists = []
    if not results.get('artists'):
        return None
    local_bio = 'strBiography' + addon.setting("LanguageID").upper()
    for artist in results['artists']:
        description = ""
        if local_bio in artist and artist[local_bio]:
            description = artist.get(local_bio)
        elif artist.get('strBiographyEN'):
            description = artist.get('strBiographyEN')
        elif artist.get('strBiography'):
            description = artist.get('strBiography')
        if 'strReview' in artist and artist['strReview']:
            description += "[CR]" + artist.get('strReview')
        artist = {'label': artist.get('strArtist'),
                  'artist': artist.get('strArtist'),
                  'mediatype': "artist",
                  'Country': artist.get('strCountry'),
                  'mbid': artist.get('strMusicBrainzID'),
                  'thumb': artist.get('strArtistThumb'),
                  'Banner': artist.get('strArtistBanner'),
                  'clearlogo': artist.get('strArtistLogo'),
                  'fanart': artist.get('strArtistFanart'),
                  'fanart2': artist.get('strArtistFanart2'),
                  'fanart3': artist.get('strArtistFanart3'),
                  'Artist_Mood': artist.get('strMood'),
                  'Artist_Born': artist.get('intBornYear'),
                  'Artist_Formed': artist.get('intFormedYear'),
                  'Artist_Died': artist.get('intDiedYear'),
                  'Artist_Disbanded': artist.get('strDisbanded'),
                  'Artist_Mood': artist.get('strMood'),
                  'Artist_Description': description,
                  'Artist_Genre': artist.get('strGenre'),
                  'Artist_Style': artist.get('strStyle'),
                  'CountryCode': artist.get('strCountryCode'),
                  'Website': artist.get('strWebsite'),
                  'Twitter': artist.get('strTwitter'),
                  'Facebook': artist.get('strFacebook'),
                  'LastFMChart': artist.get('strLastFMChart'),
                  'Gender': artist.get('strGender'),
                  'audiodb_id': artist.get('idArtist'),
                  'Members': artist.get('intMembers')}
        artists.append(artist)
    if artists:
        return artists[0]
    else:
        return {}
Ejemplo n.º 26
0
        def fetch_data(self, force=False):  # TODO: rewrite
            sort_by = self.sort + "." + self.order
            temp = "tv" if self.type == "tv" else "movies"
            if self.mode == "search":
                self.filter_label = addon.LANG(32146) % self.search_str if self.search_str else ""
                return tmdb.multi_search(search_str=self.search_str,
                                         page=self.page,
                                         cache_days=0 if force else 2)
            elif self.mode == "list":
                return tmdb.get_list_movies(list_id=self.list_id,
                                            force=force)
            elif self.mode == "favorites":
                self.filter_label = addon.LANG(32144) if self.type == "tv" else addon.LANG(32134)
                return tmdb.get_fav_items(media_type=temp,
                                          sort_by=sort_by,
                                          page=self.page)
            elif self.mode == "rating":
                self.filter_label = addon.LANG(32145) if self.type == "tv" else addon.LANG(32135)
                return tmdb.get_rated_media_items(media_type=temp,
                                                  sort_by=sort_by,
                                                  page=self.page,
                                                  cache_days=0)
            else:
                self.set_filter_label()
                params = {"sort_by": sort_by,
                          "language": addon.setting("LanguageID"),
                          "page": self.page,
                          "include_adult": include_adult}
                filters = {item["type"]: item["id"] for item in self.filters}
                response = tmdb.get_data(url="discover/%s" % (self.type),
                                         params=utils.merge_dicts(params, filters),
                                         cache_days=0 if force else 2)

                if not response["results"]:
                    utils.notify(addon.LANG(284))
                    return None
                if self.type == "movie":
                    itemlist = tmdb.handle_movies(results=response["results"],
                                                  local_first=False,
                                                  sortkey=None)
                else:
                    itemlist = tmdb.handle_tvshows(results=response["results"],
                                                   local_first=False,
                                                   sortkey=None)
                itemlist.set_totals(response["total_results"])
                itemlist.set_total_pages(response["total_pages"])
                return itemlist
Ejemplo n.º 27
0
 def handle_tvshow(self, tvshow):
     """
     convert tvshow data to listitems
     """
     if addon.setting("infodialog_onclick") != "false":
         path = PLUGIN_BASE + 'extendedtvinfo&&dbid=%s' % tvshow['tvshowid']
     else:
         path = PLUGIN_BASE + 'action&&id=ActivateWindow(videos,videodb://tvshows/titles/%s/,return)' % tvshow[
             'tvshowid']
     db_tvshow = VideoItem(label=tvshow.get("label"), path=path)
     db_tvshow.set_infos({
         'title': tvshow.get('label'),
         'dbid': tvshow['tvshowid'],
         'genre': " / ".join(tvshow.get('genre')),
         'rating': round(float(tvshow['rating']), 1),
         'mediatype': "tvshow",
         'mpaa': tvshow.get("mpaa"),
         'plot': tvshow.get("plot"),
         'votes': tvshow.get("votes"),
         'studio': " / ".join(tvshow.get('studio')),
         'premiered': tvshow.get("premiered"),
         'playcount': tvshow.get("playcount"),
         'imdbnumber': tvshow.get("imdbnumber"),
         'userrating': tvshow.get("userrating"),
         'duration': tvshow.get("duration"),
         # "tag": " / ".join(movie['tag']),
         'year': tvshow.get('year'),
         'originaltitle': tvshow.get('originaltitle')
     })
     db_tvshow.set_properties({
         'imdb_id':
         tvshow.get('imdbnumber'),
         'file':
         tvshow.get('file'),
         'watchedepisodes':
         tvshow.get('watchedepisodes'),
         'totalepisodes':
         tvshow.get('episode')
     })
     db_tvshow.set_artwork(tvshow['art'])
     db_tvshow.set_cast(tvshow.get("cast"))
     return db_tvshow
Ejemplo n.º 28
0
 def set_genre_filter(self, control_id):
     params = {"language": addon.setting("LanguageID")}
     response = tmdb.get_data(url="genre/%s/list" % (self.type),
                              params=params,
                              cache_days=100)
     selected = [i["id"] for i in self.filters if i["type"] == "with_genres"]
     ids = [item["id"] for item in response["genres"]]
     labels = [item["name"] for item in response["genres"]]
     preselect = [ids.index(int(i)) for i in selected[0].split(",")] if selected else []
     indexes = xbmcgui.Dialog().multiselect(heading=addon.LANG(32151),
                                            options=labels,
                                            preselect=preselect)
     if indexes is None:
         return None
     self.filters = [i for i in self.filters if i["type"] != "with_genres"]
     for i in indexes:
         self.add_filter(key="with_genres",
                         value=ids[i],
                         label=labels[i],
                         reset=False)
     self.reset()
Ejemplo n.º 29
0
 def open_dialog(self, dialog):
     if self.active_dialog:
         self.window_stack.append(self.active_dialog)
         self.active_dialog.close()
     utils.check_version()
     if not addon.setting("first_start_infodialog"):
         addon.set_setting("first_start_infodialog", "True")
         xbmcgui.Dialog().ok(heading=addon.NAME,
                             message=addon.LANG(32140) + '[CR]' +
                             addon.LANG(32141))
     self.active_dialog = dialog
     dialog.doModal()
     #        if dialog.canceled:
     #            addon.set_global("infobackground", self.saved_background)
     #            self.window_stack = []
     #            return None
     if self.window_stack:
         self.active_dialog = self.window_stack.pop()
         xbmc.sleep(300)
         self.active_dialog.doModal()
     else:
         addon.set_global("infobackground", self.saved_background)
Ejemplo n.º 30
0
 def open_dialog(self, dialog):
     if self.active_dialog:
         self.window_stack.append(self.active_dialog)
         self.active_dialog.close()
     utils.check_version()
     if not addon.setting("first_start_infodialog"):
         addon.set_setting("first_start_infodialog", "True")
         xbmcgui.Dialog().ok(heading=addon.NAME,
                             line1=addon.LANG(32140),
                             line2=addon.LANG(32141))
     self.active_dialog = dialog
     dialog.doModal()
     if dialog.cancelled:
         addon.set_global("infobackground", self.saved_background)
         self.window_stack = []
         return None
     if self.window_stack:
         self.active_dialog = self.window_stack.pop()
         xbmc.sleep(300)
         self.active_dialog.doModal()
     else:
         addon.set_global("infobackground", self.saved_background)
Ejemplo n.º 31
0
 def fetch_data(self, force=False):  # TODO: rewrite
     sort_by = self.sort + "." + self.order
     temp = "tv" if self.type == "tv" else "movies"
     if self.mode == "search":
         params = {"query": self.search_str,
                   "include_adult": include_adult,
                   "page": self.page}
         url = "search/multi"
         self.filter_label = addon.LANG(32146) % self.search_str if self.search_str else ""
     elif self.mode == "list":
         params = {"language": addon.setting("LanguageID")}
         url = "list/%s" % (self.list_id)
         # self.filter_label = addon.LANG(32036)
     elif self.mode == "favorites":
         params = {"sort_by": sort_by,
                   "language": addon.setting("LanguageID"),
                   "page": self.page,
                   "session_id": tmdb.Login.get_session_id()}
         url = "account/%s/favorite/%s" % (tmdb.Login.get_account_id(), temp)
         self.filter_label = addon.LANG(32144) if self.type == "tv" else addon.LANG(32134)
     elif self.mode == "rating":
         force = True  # workaround, should be updated after setting rating
         if self.logged_in:
             session_id = tmdb.Login.get_session_id()
             if not session_id:
                 utils.notify("Could not get session id")
                 return {"listitems": [],
                         "results_per_page": 0,
                         "total_results": 0}
             params = {"sort_by": sort_by,
                       "language": addon.setting("LanguageID"),
                       "page": self.page,
                       "session_id": session_id}
             url = "account/%s/rated/%s" % (tmdb.Login.get_account_id(), temp)
         else:
             session_id = tmdb.Login.get_guest_session_id()
             if not session_id:
                 utils.notify("Could not get session id")
                 return {"listitems": [],
                         "results_per_page": 0,
                         "total_results": 0}
             params = {"language": addon.setting("LanguageID")}
             url = "guest_session/%s/rated_movies" % (session_id)
         self.filter_label = addon.LANG(32145) if self.type == "tv" else addon.LANG(32135)
     else:
         self.set_filter_label()
         params = {"sort_by": sort_by,
                   "language": addon.setting("LanguageID"),
                   "page": self.page,
                   "include_adult": include_adult}
         filters = {item["type"]: item["id"] for item in self.filters}
         params = utils.merge_dicts(params, filters)
         url = "discover/%s" % (self.type)
     response = tmdb.get_data(url=url,
                              params=params,
                              cache_days=0 if force else 2)
     if not response:
         return None
     if self.mode == "list":
         info = {"listitems": tmdb.handle_movies(results=response["items"],
                                                 local_first=True,
                                                 sortkey=None),
                 "results_per_page": 1,
                 "total_results": len(response["items"])}
         return info
     if "results" not in response:
         # self.close()
         return {"listitems": [],
                 "results_per_page": 0,
                 "total_results": 0}
     if not response["results"]:
         utils.notify(addon.LANG(284))
     if self.mode == "search":
         listitems = tmdb.handle_multi_search(response["results"])
     elif self.type == "movie":
         listitems = tmdb.handle_movies(results=response["results"],
                                        local_first=False,
                                        sortkey=None)
     else:
         listitems = tmdb.handle_tvshows(results=response["results"],
                                         local_first=False,
                                         sortkey=None)
     info = {"listitems": listitems,
             "results_per_page": response["total_pages"],
             "total_results": response["total_results"]}
     return info
 def fetch_data(self, force=False):  # TODO: rewrite
     sort_by = self.sort + "." + self.order
     temp = "tv" if self.type == "tv" else "movies"
     if self.mode == "search":
         params = {
             "query": self.search_str,
             "include_adult": include_adult,
             "page": self.page
         }
         url = "search/multi"
         self.filter_label = addon.LANG(
             32146) % self.search_str if self.search_str else ""
     elif self.mode == "list":
         params = {"language": addon.setting("LanguageID")}
         url = "list/%s" % (self.list_id)
         # self.filter_label = addon.LANG(32036)
     elif self.mode == "favorites":
         params = {
             "sort_by": sort_by,
             "language": addon.setting("LanguageID"),
             "page": self.page,
             "session_id": tmdb.Login.get_session_id()
         }
         url = "account/%s/favorite/%s" % (tmdb.Login.get_account_id(),
                                           temp)
         self.filter_label = addon.LANG(
             32144) if self.type == "tv" else addon.LANG(32134)
     elif self.mode == "rating":
         force = True  # workaround, should be updated after setting rating
         if self.logged_in:
             session_id = tmdb.Login.get_session_id()
             if not session_id:
                 utils.notify("Could not get session id")
                 return {
                     "listitems": [],
                     "results_per_page": 0,
                     "total_results": 0
                 }
             params = {
                 "sort_by": sort_by,
                 "language": addon.setting("LanguageID"),
                 "page": self.page,
                 "session_id": session_id
             }
             url = "account/%s/rated/%s" % (tmdb.Login.get_account_id(),
                                            temp)
         else:
             session_id = tmdb.Login.get_guest_session_id()
             if not session_id:
                 utils.notify("Could not get session id")
                 return {
                     "listitems": [],
                     "results_per_page": 0,
                     "total_results": 0
                 }
             params = {"language": addon.setting("LanguageID")}
             url = "guest_session/%s/rated_movies" % (session_id)
         self.filter_label = addon.LANG(
             32145) if self.type == "tv" else addon.LANG(32135)
     else:
         self.set_filter_label()
         params = {
             "sort_by": sort_by,
             "language": addon.setting("LanguageID"),
             "page": self.page,
             "include_adult": include_adult
         }
         filters = {item["type"]: item["id"] for item in self.filters}
         params = utils.merge_dicts(params, filters)
         url = "discover/%s" % (self.type)
     response = tmdb.get_data(url=url,
                              params=params,
                              cache_days=0 if force else 2)
     if not response:
         return None
     if self.mode == "list":
         info = {
             "listitems":
             tmdb.handle_movies(results=response["items"],
                                local_first=True,
                                sortkey=None),
             "results_per_page":
             1,
             "total_results":
             len(response["items"])
         }
         return info
     if "results" not in response:
         # self.close()
         return {
             "listitems": [],
             "results_per_page": 0,
             "total_results": 0
         }
     if not response["results"]:
         utils.notify(addon.LANG(284))
     if self.mode == "search":
         listitems = tmdb.handle_multi_search(response["results"])
     elif self.type == "movie":
         listitems = tmdb.handle_movies(results=response["results"],
                                        local_first=False,
                                        sortkey=None)
     else:
         listitems = tmdb.handle_tvshows(results=response["results"],
                                         local_first=False,
                                         sortkey=None)
     info = {
         "listitems": listitems,
         "results_per_page": response["total_pages"],
         "total_results": response["total_results"]
     }
     return info
Ejemplo n.º 33
0
                   # "Release Date": "primary_release_date",
                   "original_title": addon.LANG(20376),
                   "vote_average": addon.LANG(32112),
                   "vote_count": addon.LANG(32111)},
         "tv": {"popularity": addon.LANG(32110),
                "first_air_date": addon.LANG(20416),
                "vote_average": addon.LANG(32112),
                "vote_count": addon.LANG(32111)},
         "favorites": {"created_at": addon.LANG(32157)},
         "list": {"created_at": addon.LANG(32157)},
         "rating": {"created_at": addon.LANG(32157)}}
TRANSLATIONS = {"movie": addon.LANG(20338),
                "tv": addon.LANG(20364),
                "person": addon.LANG(32156)}

include_adult = addon.setting("include_adults").lower()


def get_window(window_type):

    class DialogVideoList(DialogBaseList, window_type):

        @utils.busy_dialog
        def __init__(self, *args, **kwargs):
            super(DialogVideoList, self).__init__(*args, **kwargs)
            self.type = kwargs.get('type', "movie")
            self.list_id = kwargs.get("list_id", False)
            self.sort = kwargs.get('sort', "popularity")
            self.sort_label = kwargs.get('sort_label', addon.LANG(32110))
            self.order = kwargs.get('order', "desc")
            self.logged_in = tmdb.Login.check_login()
Ejemplo n.º 34
0
def start_info_actions(info, params):
    if "artistname" in params:
        params["artistname"] = params.get("artistname",
                                          "").split(" feat. ")[0].strip()
        if not params.get("artist_mbid"):
            params["artist_mbid"] = utils.fetch_musicbrainz_id(
                params["artistname"])
    utils.log(info)
    utils.pp(params)
    if "prefix" in params and not params["prefix"].endswith('.'):
        params["prefix"] = params["prefix"] + '.'

    # Audio
    if info == 'discography':
        discography = AudioDB.get_artist_discography(params["artistname"])
        if not discography:
            discography = LastFM.get_artist_albums(params.get("artist_mbid"))
        return discography
    elif info == 'mostlovedtracks':
        return AudioDB.get_most_loved_tracks(params["artistname"])
    elif info == 'trackdetails':
        return AudioDB.get_track_details(params.get("id", ""))
    elif info == 'topartists':
        return LastFM.get_top_artists()
    #  The MovieDB
    elif info == 'incinemamovies':
        return tmdb.get_movies("now_playing")
    elif info == 'upcomingmovies':
        return tmdb.get_movies("upcoming")
    elif info == 'topratedmovies':
        return tmdb.get_movies("top_rated")
    elif info == 'popularmovies':
        return tmdb.get_movies("popular")
    elif info == 'ratedmovies':
        return tmdb.get_rated_media_items("movies")
    elif info == 'starredmovies':
        return tmdb.get_fav_items("movies")
    elif info == 'accountlists':
        account_lists = tmdb.handle_lists(tmdb.get_account_lists())
        for item in account_lists:
            item.set_property("directory", True)
        return account_lists
    elif info == 'listmovies':
        return tmdb.get_movies_from_list(params["id"])
    elif info == 'airingtodaytvshows':
        return tmdb.get_tvshows("airing_today")
    elif info == 'onairtvshows':
        return tmdb.get_tvshows("on_the_air")
    elif info == 'topratedtvshows':
        return tmdb.get_tvshows("top_rated")
    elif info == 'populartvshows':
        return tmdb.get_tvshows("popular")
    elif info == 'ratedtvshows':
        return tmdb.get_rated_media_items("tv")
    elif info == 'ratedepisodes':
        return tmdb.get_rated_media_items("tv/episodes")
    elif info == 'starredtvshows':
        return tmdb.get_fav_items("tv")
    elif info == 'similarmovies':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_similar_movies(movie_id)
    elif info == 'similartvshows':
        tvshow_id = None
        dbid = params.get("dbid")
        name = params.get("name")
        tmdb_id = params.get("tmdb_id")
        tvdb_id = params.get("tvdb_id")
        imdb_id = params.get("imdb_id")
        if tmdb_id:
            tvshow_id = tmdb_id
        elif dbid and int(dbid) > 0:
            tvdb_id = local_db.get_imdb_id("tvshow", dbid)
            if tvdb_id:
                tvshow_id = tmdb.get_show_tmdb_id(tvdb_id)
        elif tvdb_id:
            tvshow_id = tmdb.get_show_tmdb_id(tvdb_id)
        elif imdb_id:
            tvshow_id = tmdb.get_show_tmdb_id(imdb_id, "imdb_id")
        elif name:
            tvshow_id = tmdb.search_media(media_name=name,
                                          year="",
                                          media_type="tv")
        if tvshow_id:
            return tmdb.get_similar_tvshows(tvshow_id)
    elif info == 'studio':
        if params.get("id"):
            return tmdb.get_company_data(params["id"])
        elif params.get("studio"):
            company_data = tmdb.search_companies(params["studio"])
            if company_data:
                return tmdb.get_company_data(company_data[0]["id"])
    elif info == 'set':
        if params.get("dbid"):
            name = local_db.get_set_name(params["dbid"])
            if name:
                params["setid"] = tmdb.get_set_id(name)
        if params.get("setid"):
            set_data, _ = tmdb.get_set_movies(params["setid"])
            return set_data
    elif info == 'movielists':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_movie_lists(movie_id)
    elif info == 'keywords':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.get_keywords(movie_id)
    elif info == 'trailers':
        movie_id = params.get("id")
        if not movie_id:
            movie_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                              dbid=params.get("dbid"))
        if movie_id:
            return tmdb.handle_videos(tmdb.get_movie_videos(movie_id))
    elif info == 'popularpeople':
        return tmdb.get_popular_actors()
    elif info == 'personmovies':
        person = tmdb.get_person_info(person_label=params.get("person"),
                                      skip_dialog=True)
        if person and person.get("id"):
            movies = tmdb.get_person_movies(person["id"])
            if not movies:
                return None
            for item in movies:
                del item["credit_id"]
            return movies.reduce(key="department")
    elif info == 'traktsimilarmovies':
        if params.get("id") or params.get("dbid"):
            if params.get("dbid"):
                movie_id = local_db.get_imdb_id("movie", params["dbid"])
            else:
                movie_id = params["id"]
            return Trakt.get_similar("movie", movie_id)
    elif info == 'traktsimilartvshows':
        if params.get("id") or params.get("dbid"):
            if params.get("dbid"):
                if params.get("type") == "episode":
                    tvshow_id = local_db.get_tvshow_id_by_episode(
                        params["dbid"])
                else:
                    tvshow_id = local_db.get_imdb_id(media_type="tvshow",
                                                     dbid=params["dbid"])
            else:
                tvshow_id = params["id"]
            return Trakt.get_similar("show", tvshow_id)
    elif info == 'airingepisodes':
        return Trakt.get_episodes("shows")
    elif info == 'premiereepisodes':
        return Trakt.get_episodes("premieres")
    elif info == 'trendingshows':
        return Trakt.get_shows("trending")
    elif info == 'popularshows':
        return Trakt.get_shows("popular")
    elif info == 'anticipatedshows':
        return Trakt.get_shows("anticipated")
    elif info == 'mostcollectedshows':
        return Trakt.get_shows_from_time("collected")
    elif info == 'mostplayedshows':
        return Trakt.get_shows_from_time("played")
    elif info == 'mostwatchedshows':
        return Trakt.get_shows_from_time("watched")
    elif info == 'trendingmovies':
        return Trakt.get_movies("trending")
    elif info == 'traktpopularmovies':
        return Trakt.get_movies("popular")
    elif info == 'mostplayedmovies':
        return Trakt.get_movies_from_time("played")
    elif info == 'mostwatchedmovies':
        return Trakt.get_movies_from_time("watched")
    elif info == 'mostcollectedmovies':
        return Trakt.get_movies_from_time("collected")
    elif info == 'mostanticipatedmovies':
        return Trakt.get_movies("anticipated")
    elif info == 'traktboxofficemovies':
        return Trakt.get_movies("boxoffice")
    elif info == 'similarartistsinlibrary':
        return local_db.get_similar_artists(params.get("artist_mbid"))
    elif info == 'trackinfo':
        addon.clear_global('%sSummary' % params.get("prefix", ""))
        if params["artistname"] and params["trackname"]:
            track_info = LastFM.get_track_info(
                artist_name=params["artistname"], track=params["trackname"])
            addon.set_global('%sSummary' % params.get("prefix", ""),
                             track_info["summary"])
    elif info == 'topartistsnearevents':
        artists = local_db.get_artists()
        from . import BandsInTown
        return BandsInTown.get_near_events(artists[0:49])
    elif info == 'youtubesearchvideos':
        addon.set_global('%sSearchValue' % params.get("prefix", ""),
                         params.get("id", ""))
        user_key = addon.setting("Youtube API Key")
        if params.get("id"):
            return youtube.search(search_str=params.get("id", ""),
                                  hd=params.get("hd"),
                                  orderby=params.get("orderby", "relevance"),
                                  api_key=user_key)
    elif info == 'youtubeplaylistvideos':
        return youtube.get_playlist_videos(params.get("id", ""))
    elif info == 'youtubeusersearchvideos':
        user_name = params.get("id")
        if user_name:
            playlists = youtube.get_user_playlists(user_name)
            return youtube.get_playlist_videos(playlists["uploads"])
    elif info == 'favourites':
        if params.get("id"):
            items = favs.get_favs_by_type(params["id"])
        else:
            items = favs.get_favs()
            addon.set_global('favourite.count', str(len(items)))
            if items:
                addon.set_global('favourite.1.name', items[-1]["label"])
        return items
    elif info == "addonsbyauthor":
        items = favs.get_addons_by_author(params.get("id"))
    elif info == 'similarlocalmovies' and "dbid" in params:
        return local_db.get_similar_movies(params["dbid"])
    elif info == 'iconpanel':
        return favs.get_icon_panel(int(
            params["id"])), "IconPanel" + str(params["id"])
    # ACTIONS
    if params.get("handle"):
        xbmcplugin.setResolvedUrl(handle=int(params.get("handle")),
                                  succeeded=False,
                                  listitem=xbmcgui.ListItem())
    if info in [
            'playmovie', 'playepisode', 'playmusicvideo', 'playalbum',
            'playsong'
    ]:
        kodijson.play_media(media_type=info.replace("play", ""),
                            dbid=params.get("dbid"),
                            resume=params.get("resume", "true"))
    elif info == "openinfodialog":
        if xbmc.getCondVisibility("System.HasActiveModalDialog"):
            container_id = ""
        else:
            container_id = "Container(%s)" % utils.get_infolabel(
                "System.CurrentControlId")
        dbid = utils.get_infolabel("%sListItem.DBID" % container_id)
        db_type = utils.get_infolabel("%sListItem.DBType" % container_id)
        if db_type == "movie":
            params = {
                "dbid": dbid,
                "id":
                utils.get_infolabel("%sListItem.Property(id)" % container_id),
                "name": utils.get_infolabel("%sListItem.Title" % container_id)
            }
            start_info_actions("extendedinfo", params)
        elif db_type == "tvshow":
            params = {
                "dbid":
                dbid,
                "tvdb_id":
                utils.get_infolabel("%sListItem.Property(tvdb_id)" %
                                    container_id),
                "id":
                utils.get_infolabel("%sListItem.Property(id)" % container_id),
                "name":
                utils.get_infolabel("%sListItem.Title" % container_id)
            }
            start_info_actions("extendedtvinfo", params)
        elif db_type == "season":
            params = {
                "tvshow":
                utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                "season":
                utils.get_infolabel("%sListItem.Season" % container_id)
            }
            start_info_actions("seasoninfo", params)
        elif db_type == "episode":
            params = {
                "tvshow":
                utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                "season":
                utils.get_infolabel("%sListItem.Season" % container_id),
                "episode":
                utils.get_infolabel("%sListItem.Episode" % container_id)
            }
            start_info_actions("extendedepisodeinfo", params)
        elif db_type in ["actor", "director"]:
            params = {
                "name": utils.get_infolabel("%sListItem.Label" % container_id)
            }
            start_info_actions("extendedactorinfo", params)
        else:
            utils.notify("Error", "Could not find valid content type")
    elif info == "ratedialog":
        if xbmc.getCondVisibility("System.HasModalDialog"):
            container_id = ""
        else:
            container_id = "Container(%s)" % utils.get_infolabel(
                "System.CurrentControlId")
        dbid = utils.get_infolabel("%sListItem.DBID" % container_id)
        db_type = utils.get_infolabel("%sListItem.DBType" % container_id)
        if db_type == "movie":
            params = {
                "dbid": dbid,
                "id":
                utils.get_infolabel("%sListItem.Property(id)" % container_id),
                "type": "movie"
            }
            start_info_actions("ratemedia", params)
        elif db_type == "tvshow":
            params = {
                "dbid": dbid,
                "id":
                utils.get_infolabel("%sListItem.Property(id)" % container_id),
                "type": "tv"
            }
            start_info_actions("ratemedia", params)
        if db_type == "episode":
            params = {
                "tvshow":
                utils.get_infolabel("%sListItem.TVShowTitle" % container_id),
                "season":
                utils.get_infolabel("%sListItem.Season" % container_id),
                "type":
                "episode"
            }
            start_info_actions("ratemedia", params)
    elif info == 'youtubebrowser':
        wm.open_youtube_list(search_str=params.get("id", ""))
    elif info == 'moviedbbrowser':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        search_str = params.get("id", "")
        if not search_str and params.get("search"):
            result = xbmcgui.Dialog().input(heading=addon.LANG(16017),
                                            type=xbmcgui.INPUT_ALPHANUM)
            if result and result > -1:
                search_str = result
            else:
                addon.clear_global('infodialogs.active')
                return None
        wm.open_video_list(search_str=search_str, mode="search")
        addon.clear_global('infodialogs.active')
    elif info == 'extendedinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_movie_info(movie_id=params.get("id"),
                           dbid=params.get("dbid"),
                           imdb_id=params.get("imdb_id"),
                           name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedactorinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_actor_info(actor_id=params.get("id"), name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedtvinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_tvshow_info(tmdb_id=params.get("id"),
                            tvdb_id=params.get("tvdb_id"),
                            dbid=params.get("dbid"),
                            imdb_id=params.get("imdb_id"),
                            name=params.get("name"))
        addon.clear_global('infodialogs.active')
    elif info == 'seasoninfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_season_info(tvshow=params.get("tvshow"),
                            dbid=params.get("dbid"),
                            season=params.get("season"))
        addon.clear_global('infodialogs.active')
    elif info == 'extendedepisodeinfo':
        if addon.get_global('infodialogs.active'):
            return None
        addon.set_global('infodialogs.active', "true")
        wm.open_episode_info(tvshow=params.get("tvshow"),
                             tvshow_id=params.get("tvshow_id"),
                             dbid=params.get("dbid"),
                             episode=params.get("episode"),
                             season=params.get("season"))
        addon.clear_global('infodialogs.active')
    elif info == 'albuminfo':
        if params.get("id"):
            album_details = AudioDB.get_album_details(params.get("id"))
            utils.dict_to_windowprops(album_details, params.get("prefix", ""))
    elif info == 'artistdetails':
        artist_details = AudioDB.get_artist_details(params["artistname"])
        utils.dict_to_windowprops(artist_details, params.get("prefix", ""))
    elif info == 'ratemedia':
        media_type = params.get("type")
        if not media_type:
            return None
        if params.get("id"):
            tmdb_id = params["id"]
        elif media_type == "movie":
            tmdb_id = tmdb.get_movie_tmdb_id(imdb_id=params.get("imdb_id"),
                                             dbid=params.get("dbid"),
                                             name=params.get("name"))
        elif media_type == "tv" and params.get("dbid"):
            tvdb_id = local_db.get_imdb_id(media_type="tvshow",
                                           dbid=params["dbid"])
            tmdb_id = tmdb.get_show_tmdb_id(tvdb_id=tvdb_id)
        else:
            return False
        rating = utils.input_userrating()
        if rating == -1:
            return None
        tmdb.set_rating(media_type=media_type,
                        media_id=tmdb_id,
                        rating=rating,
                        dbid=params.get("dbid"))
    elif info == 'action':
        for builtin in params.get("id", "").split("$$"):
            xbmc.executebuiltin(builtin)
    elif info == "youtubevideo":
        xbmc.executebuiltin("Dialog.Close(all,true)")
        wm.play_youtube_video(params.get("id", ""))
    elif info == 'playtrailer':
        busy.show_busy()
        if params.get("id"):
            movie_id = params["id"]
        elif int(params.get("dbid", -1)) > 0:
            movie_id = local_db.get_imdb_id(media_type="movie",
                                            dbid=params["dbid"])
        elif params.get("imdb_id"):
            movie_id = tmdb.get_movie_tmdb_id(params["imdb_id"])
        else:
            movie_id = ""
        if movie_id:
            trailers = tmdb.get_movie_videos(movie_id)
            busy.hide_busy()
            time.sleep(0.1)
            if trailers:
                wm.play_youtube_video(trailers[0]["key"])
            elif params.get("title"):
                wm.open_youtube_list(search_str=params["title"])
            else:
                busy.hide_busy()
    elif info == 'deletecache':
        addon.clear_globals()
        for rel_path in os.listdir(addon.DATA_PATH):
            path = os.path.join(addon.DATA_PATH, rel_path)
            try:
                if os.path.isdir(path):
                    shutil.rmtree(path)
            except Exception as e:
                utils.log(e)
        utils.notify("Cache deleted")
    elif info == 'tmdbpassword':
        addon.set_password_prompt("tmdb_password")
    elif info == 'syncwatchlist':
        pass
Ejemplo n.º 35
0
import xbmcvfs

from . import TheMovieDB as tmdb

from kodi65 import windows
from kodi65 import addon
from kodi65 import utils
from kodi65 import busy
from kodi65 import player
from kodi65 import local_db

INFO_XML_CLASSIC = 'script-%s-DialogVideoInfo.xml' % (addon.ID)
LIST_XML_CLASSIC = 'script-%s-VideoList.xml' % (addon.ID)
ACTOR_XML_CLASSIC = 'script-%s-DialogInfo.xml' % (addon.ID)
if addon.bool_setting("force_native_layout"
                      ) and addon.setting("xml_version") != addon.VERSION:
    addon.set_setting("xml_version", addon.VERSION)
    INFO_XML = 'script-%s-DialogVideoInfo-classic.xml' % (addon.ID)
    LIST_XML = 'script-%s-VideoList-classic.xml' % (addon.ID)
    ACTOR_XML = 'script-%s-DialogInfo-classic.xml' % (addon.ID)
    path = os.path.join(addon.PATH, "resources", "skins", "Default", "1080i")
    xbmcvfs.copy(strSource=os.path.join(path, INFO_XML_CLASSIC),
                 strDestination=os.path.join(path, INFO_XML))
    xbmcvfs.copy(strSource=os.path.join(path, LIST_XML_CLASSIC),
                 strDestination=os.path.join(path, LIST_XML))
    xbmcvfs.copy(strSource=os.path.join(path, ACTOR_XML_CLASSIC),
                 strDestination=os.path.join(path, ACTOR_XML))
else:
    INFO_XML = INFO_XML_CLASSIC
    LIST_XML = LIST_XML_CLASSIC
    ACTOR_XML = ACTOR_XML_CLASSIC
Ejemplo n.º 36
0
import xbmcgui
import xbmcvfs

import TheMovieDB as tmdb

from kodi65 import windows
from kodi65 import addon
from kodi65 import utils
from kodi65 import busy
from kodi65 import player
from kodi65 import local_db

INFO_XML_CLASSIC = u'script-%s-DialogVideoInfo.xml' % (addon.ID)
LIST_XML_CLASSIC = u'script-%s-VideoList.xml' % (addon.ID)
ACTOR_XML_CLASSIC = u'script-%s-DialogInfo.xml' % (addon.ID)
if addon.bool_setting("force_native_layout") and addon.setting("xml_version") != addon.VERSION:
    addon.set_setting("xml_version", addon.VERSION)
    INFO_XML = u'script-%s-DialogVideoInfo-classic.xml' % (addon.ID)
    LIST_XML = u'script-%s-VideoList-classic.xml' % (addon.ID)
    ACTOR_XML = u'script-%s-DialogInfo-classic.xml' % (addon.ID)
    path = os.path.join(addon.PATH, "resources", "skins", "Default", "1080i")
    xbmcvfs.copy(strSource=os.path.join(path, INFO_XML_CLASSIC),
                 strDestnation=os.path.join(path, INFO_XML))
    xbmcvfs.copy(strSource=os.path.join(path, LIST_XML_CLASSIC),
                 strDestnation=os.path.join(path, LIST_XML))
    xbmcvfs.copy(strSource=os.path.join(path, ACTOR_XML_CLASSIC),
                 strDestnation=os.path.join(path, ACTOR_XML))
else:
    INFO_XML = INFO_XML_CLASSIC
    LIST_XML = LIST_XML_CLASSIC
    ACTOR_XML = ACTOR_XML_CLASSIC
Ejemplo n.º 37
0
ID_BUTTON_SORT = 5001
ID_BUTTON_GENREFILTER = 5002
ID_BUTTON_YEARFILTER = 5003
ID_BUTTON_ORDER = 5004
ID_BUTTON_CERTFILTER = 5006
ID_BUTTON_ACTORFILTER = 5008
ID_BUTTON_KEYWORDFILTER = 5009
ID_BUTTON_COMPANYFILTER = 5010
ID_BUTTON_RUNTIMEFILTER = 5011
ID_BUTTON_VOTECOUNTFILTER = 5012
ID_BUTTON_ACCOUNT = 7000

ch = ActionHandler()

include_adult = addon.setting("include_adults").lower()


def get_window(window_type):
    class DialogVideoList(DialogBaseList, window_type):

        TYPES = ["movie", "tv"]

        FILTERS = {
            "certification_country": addon.LANG(32153),
            "certification": addon.LANG(32127),
            "year": addon.LANG(562),
            "with_genres": addon.LANG(135),
            "with_people": addon.LANG(32156),
            "with_companies": addon.LANG(20388),
            "with_networks": addon.LANG(32152),