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)
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)
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 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))
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()
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
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
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))
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)
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
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
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])
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)
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)
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 {}
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])
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)
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 {}
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
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
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()
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)
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)
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
# "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()
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
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
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
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),