我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用xbmc.getInfoLabel()。
def daynightthemes(self, dayornight): '''allow user to set a specific theme during day/night time''' if dayornight not in ["day", "night"]: log_msg("Invalid parameter for day/night theme - must be day or night") return # show listing with themes listitems = self.get_skin_colorthemes() listitems += self.get_user_colorthemes() header = self.addon.getLocalizedString(32031) curvalue = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.%s.theme)" % dayornight).decode("utf-8") dialog = DialogSelect("DialogSelect.xml", "", windowtitle=header, richlayout=True, listing=listitems, autofocus=curvalue) dialog.doModal() result = dialog.result del dialog if result: themefile = result.getfilename().decode("utf-8") themename = result.getLabel().decode("utf-8") self.set_day_night_theme(dayornight, themename, themefile)
def set_day_night_theme(self, dayornight, themename, themefile): ''' Sets a new daynight theme''' currenttimevalue = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.%s.time)" % dayornight) if not currenttimevalue: currenttimevalue = "20:00" if dayornight == "night" else "07:00" timevalue = xbmcgui.Dialog().input(self.addon.getLocalizedString(32017), currenttimevalue).decode("utf-8") try: # check if the time is valid check_date = datetime(*(time.strptime(timevalue, "%H:%M")[0:6])) del check_date base_setting = "SkinHelper.ColorTheme.%s" % dayornight xbmc.executebuiltin("Skin.SetString(%s.theme,%s)" % (base_setting, themename.encode("utf-8"))) xbmc.executebuiltin("Skin.SetString(%s.time,%s)" % (base_setting, timevalue)) label = "%s (%s %s)" % (themename.encode("utf-8"), self.addon.getLocalizedString(32019), timevalue) xbmc.executebuiltin("Skin.SetString(%s.label,%s)" % (base_setting, label)) xbmc.executebuiltin("Skin.SetString(%s.file,%s)" % (base_setting, themefile.encode("utf-8"))) except Exception as exc: log_exception(__name__, exc) xbmcgui.Dialog().ok(xbmc.getLocalizedString(329), self.addon.getLocalizedString(32018))
def check_daynighttheme(self): '''check if a specific day or night theme should be applied''' if xbmc.getCondVisibility( "Skin.HasSetting(SkinHelper.EnableDayNightThemes) + " "Skin.String(SkinHelper.ColorTheme.Day.time) + " "Skin.String(SkinHelper.ColorTheme.Night.time)"): try: daytime = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.Day.time)") daytime = datetime(*(time.strptime(daytime, "%H:%M")[0:6])).time() nighttime = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.Night.time)") nighttime = datetime(*(time.strptime(nighttime, "%H:%M")[0:6])).time() timestamp = datetime.now().time() if daytime <= timestamp <= nighttime: dayornight = "Day" else: dayornight = "Night" current_theme = xbmc.getInfoLabel("Skin.String(SkinHelper.LastColorTheme)") newtheme = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.%s.theme)" % dayornight) if current_theme != newtheme: themefile = xbmc.getInfoLabel("Skin.String(SkinHelper.ColorTheme.%s.file)" % dayornight) self.load_colortheme(themefile) except Exception as exc: log_exception(__name__, exc)
def get_curplayback(self): '''get current playback details - retry on error''' count = 5 while count and self.active: try: cur_playback = self.dialog.sp.current_playback() return cur_playback except Exception as exc: if "token expired" in str(exc): token = xbmc.getInfoLabel("Window(Home).Property(spotify-token)") self.sp._auth = token else: log_exception(__name__, exc) count -= 1 xbmc.sleep(500) self.dialog.close_dialog() return None
def __get_mac_address(cls, delay=1): """ Returns the users mac address :param delay: retry delay in sec :type delay: int :returns: string -- Devices MAC address """ mac_addr = xbmc.getInfoLabel('Network.MacAddress') # hack response busy i = 0 while ':' not in mac_addr and i < 3: i += 1 time.sleep(delay) mac_addr = xbmc.getInfoLabel('Network.MacAddress') return mac_addr
def get_current_view(): skinPath = translate_path('special://skin/') xml = os.path.join(skinPath, 'addon.xml') f = xbmcvfs.File(xml) read = f.read() f.close() try: src = re.search('defaultresolution="([^"]+)', read, re.DOTALL).group(1) except: src = re.search('<res.+?folder="([^"]+)', read, re.DOTALL).group(1) src = os.path.join(skinPath, src, 'MyVideoNav.xml') f = xbmcvfs.File(src) read = f.read() f.close() match = re.search('<views>([^<]+)', read, re.DOTALL) if match: views = match.group(1) for view in views.split(','): if xbmc.getInfoLabel('Control.GetLabel(%s)' % view): return view
def __get_mac_address(delay=1): """ Returns the users mac address :param delay: retry delay in sec :type delay: int :returns: string -- Devices MAC address """ mac_addr = xbmc.getInfoLabel('Network.MacAddress') # hack response busy i = 0 while ':' not in mac_addr and i < 3: i += 1 time.sleep(delay) mac_addr = xbmc.getInfoLabel('Network.MacAddress') return mac_addr
def timeRatio(self): if self.isPlayingVideo(): self.watchedTime = self.getTime() self.itemDuration = self.getTotalTime() try: util.debug("[SC] watched %f duration %f" % (self.watchedTime, self.itemDuration)) return float("%.3f" % (self.watchedTime / math.floor(self.itemDuration))) except Exception, e: util.debug("[SC] timeRatio error") util.debug(e) pass try: self.realFinishTime = xbmc.getInfoLabel('Player.FinishTime(hh:mm:ss)') return (self.get_sec(self.estimateFinishTime).seconds - \ self.get_sec(self.realFinishTime).seconds) / \ math.floor(self.itemDuration) except: return None
def add_list_items(self, items, content=None, end=True, withNextPage=False): TidalSession.add_list_items(self, items, content=content, end=end, withNextPage=withNextPage) if end: try: self.save_album_cache() kodiVersion = xbmc.getInfoLabel('System.BuildVersion').split()[0] kodiVersion = kodiVersion.split('.')[0] skinTheme = xbmc.getSkinDir().lower() if 'onfluence' in skinTheme: if kodiVersion <= '16': xbmc.executebuiltin('Container.SetViewMode(506)') elif content == 'musicvideos': xbmc.executebuiltin('Container.SetViewMode(511)') elif content == 'artists': xbmc.executebuiltin('Container.SetViewMode(512)') else: xbmc.executebuiltin('Container.SetViewMode(506)') elif 'estuary' in skinTheme: xbmc.executebuiltin('Container.SetViewMode(55)') except: pass
def get_page(url): logger.info() global krypton xbmc_version =xbmc.getInfoLabel( "System.BuildVersion" ) check_xbmc_version = scrapertools.get_match(xbmc_version,'(\d+).') if check_xbmc_version >=17: krypton=True data = httptools.downloadpage(url).data else: data = httptools.downloadpage("http://ssl-proxy.my-addr.org/myaddrproxy.php/"+url).data return data #Para la busqueda en bing evitando baneos
def getMediaType(): version = xbmcVersion() if xbmc.getInfoLabel('ListItem.DBTYPE'): # Seasons and calls from library will work return xbmc.getInfoLabel('ListItem.DBTYPE') elif version >= 18: # Will work on Kodi 17 and further return getVideoTag().getMediaType() else: # No other way, we query Kodi for information dbid = getDbId() response = getJSONResponse('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovieDetails", "params": { "movieid": %s }, "id": "0"}' % dbid) if 'error' not in response: return 'movie' response = getJSONResponse('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": { "episodeid": %s }, "id": "0"}' % dbid) if 'error' not in response: return 'episode' return None
def xbmcVersion(): build = xbmc.getInfoLabel('System.BuildVersion') methods = [ lambda b: float(b.split()[0]), lambda b: float(b.split()[0].split('-')[1]), lambda b: float(b.split()[0].split('-')[0]), lambda b: 0.0 ] for m in methods: try: version = m(build) break except ValueError: # parsing failed, try next method pass return version
def playstrm(params,url,category): '''Play para videos en ficheros strm ''' logger.info("[xbmctools.py] playstrm url="+url) title = unicode( xbmc.getInfoLabel( "ListItem.Title" ), "utf-8" ) thumbnail = urllib.unquote_plus( params.get("thumbnail") ) plot = unicode( xbmc.getInfoLabel( "ListItem.Plot" ), "utf-8" ) server = params["server"] if (params.has_key("Serie")): serie = params.get("Serie") else: serie = "" if (params.has_key("subtitle")): subtitle = params.get("subtitle") else: subtitle = "" from core.item import Item from platformcode.subtitletools import saveSubtitleName item = Item(title=title,show=serie) saveSubtitleName(item) play_video("Biblioteca streamondemand",server,url,category,title,thumbnail,plot,strmfile=True,Serie=serie,subtitle=subtitle)
def xbmcVersion(): #https://github.com/analogue/mythbox/blob/master/resources/src/mythbox/platform.py build = xbmc.getInfoLabel('System.BuildVersion') # TODO: regex'ify # methods to extract version as number given build string methods = [ lambda b: float(b.split()[0]), # sample input: 10.1 Git:Unknown lambda b: float(b.split()[0].split('-')[1]), # sample input: PRE-11.0 Git:Unknown lambda b: float(b.split()[0].split('-')[0]), # sample input: 11.0-BETA1 Git:20111222-22ad8e4 lambda b: 0.0 ] for m in methods: try: version = m(build) break except ValueError: # parsing failed, try next method pass return version
def getRoleItemDDPosition(self): y = 980 if xbmc.getCondVisibility('Control.IsVisible(500)'): y += 360 if xbmc.getCondVisibility('Control.IsVisible(501)'): y += 520 if xbmc.getCondVisibility('!IsEmpty(Window.Property(on.extras))'): y -= 300 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),0) + Control.IsVisible(500)'): y -= 500 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(501)'): y -= 500 focus = int(xbmc.getInfoLabel('Container(403).Position')) x = ((focus + 1) * 304) - 100 return x, y
def getRoleItemDDPosition(self): y = 1000 if xbmc.getCondVisibility('Control.IsVisible(500)'): y += 360 if xbmc.getCondVisibility('Control.IsVisible(501)'): y += 520 if xbmc.getCondVisibility('!IsEmpty(Window.Property(on.extras))'): y -= 300 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),0) + Control.IsVisible(500)'): y -= 500 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(501)'): y -= 500 focus = int(xbmc.getInfoLabel('Container(403).Position')) x = ((focus + 1) * 304) - 100 return x, y
def getRoleItemDDPosition(self): y = 980 if xbmc.getCondVisibility('Control.IsVisible(500)'): y += 360 if xbmc.getCondVisibility('Control.IsVisible(501)'): y += 360 if xbmc.getCondVisibility('Control.IsVisible(502)'): y += 520 if xbmc.getCondVisibility('!IsEmpty(Window.Property(on.extras))'): y -= 300 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),0) + Control.IsVisible(500)'): y -= 500 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(501)'): y -= 360 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(502)'): y -= 500 focus = int(xbmc.getInfoLabel('Container(403).Position')) x = ((focus + 1) * 304) - 100 return x, y
def getRoleItemDDPosition(self): y = 980 if xbmc.getCondVisibility('Control.IsVisible(500)'): y += 360 if xbmc.getCondVisibility('Control.IsVisible(501)'): y += 520 if xbmc.getCondVisibility('Control.IsVisible(502)'): y += 520 if xbmc.getCondVisibility('!IsEmpty(Window.Property(on.extras))'): y -= 125 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),0) + Control.IsVisible(500)'): y -= 500 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(501)'): y -= 500 if xbmc.getCondVisibility('IntegerGreaterThan(Window.Property(hub.focus),1) + Control.IsVisible(502)'): y -= 500 focus = int(xbmc.getInfoLabel('Container(403).Position')) x = ((focus + 1) * 304) - 100 return x, y
def getConnectTime(addon): # Get the connection time from the settings or use a default t = addon.getSetting("last_connect_time") if not t.isdigit(): # Return the Kodi build time or the time I just wrote this in Feb '17, whichever is more recent # Expecting a %m %d %Y format date here but will just grab the year and not do time # formatting because I don't know what Kodi will do to the month in different locales seconds = 0 try: build_date = xbmc.getInfoLabel("System.BuildDate") seconds = (int(build_date[-4:]) - 1970) * 31557600 except: # In case the formatting of the build date changess pass vpn_mgr_time = 1487116800 if seconds < vpn_mgr_time: seconds = vpn_mgr_time return seconds else: return int(t)
def getPlatform(): # Work out which platform is being used. build = xbmc.getInfoLabel('System.BuildVersion') build_number = int(build[0:2]) if sys.platform == "win32": return platforms.WINDOWS if sys.platform == "linux" or sys.platform == "linux2": if build_number == 15 and getAddonPath(True, "").startswith("/storage/.kodi/"): # For OE 6.0.0 (Kodi 15), openvpn is a separate install return platforms.RPI else: # Other OE versions and other Linux installs use the openvpn installed in usr/sbin return platforms.LINUX # **** ADD MORE PLATFORMS HERE **** #if sys.platform == "?": return platforms.ANDROID #if sys.platform == "darwin": return platforms.MAC return platforms.UNKNOWN
def get_activetheme(): '''get current active theme name''' return xbmc.getInfoLabel("$INFO[Skin.String(SkinHelper.LastColorTheme)]").decode("utf-8")
def get_skinsettings(filters=None): '''get all active skin settings''' all_skinsettings = [] guisettings_path = 'special://profile/addon_data/%s/settings.xml' % xbmc.getSkinDir() if xbmcvfs.exists(guisettings_path): doc = parse(xbmc.translatePath(guisettings_path).decode("utf-8")) skinsettings = doc.documentElement.getElementsByTagName('setting') for skinsetting in skinsettings: settingname = skinsetting.attributes['id'].nodeValue settingtype = skinsetting.attributes['type'].nodeValue if isinstance(settingname, unicode): settingname = settingname.encode("utf-8") # we must grab the actual values because the xml file only updates at restarts if settingtype == "bool": if "$INFO" not in settingname and xbmc.getCondVisibility("Skin.HasSetting(%s)" % settingname): settingvalue = "true" else: settingvalue = "false" else: settingvalue = xbmc.getInfoLabel("Skin.String(%s)" % settingname) if not filters: # no filter - just add all settings we can find all_skinsettings.append((settingtype, settingname, settingvalue)) else: # only select settings defined in our filters for filteritem in filters: if filteritem.lower() in settingname.lower(): all_skinsettings.append((settingtype, settingname, settingvalue)) return all_skinsettings
def active_playback_device(self): '''determine if we should use local playback or connect playback''' playback = self.addon.getSetting("playback_device") connect_id = "" if not playback: # set default to local playback if supported if self.win.getProperty("spotify.supportsplayback"): playback = "local" else: playback = "connect" self.addon.setSetting("playback_device", playback) # set device name if playback == "local": is_local = True devicename = self.addon.getLocalizedString(11037) elif playback == "remote": is_local = True connect_id = self.addon.getSetting("connect_id") devicename = self.addon.getLocalizedString(11063) % connect_id elif playback == "squeezebox": is_local = False devicename = xbmc.getInfoLabel("System.AddonTitle(plugin.audio.squeezebox)") else: is_local = False devicename = "Spotify Connect" # placeholder value for device in self.sp.devices()["devices"]: if device["is_active"]: devicename = device["name"] return is_local, devicename, connect_id
def add_track_to_playlist(self): xbmc.executebuiltin("ActivateWindow(busydialog)") if not self.trackid and xbmc.getInfoLabel("MusicPlayer.(1).Property(spotifytrackid)"): self.trackid = xbmc.getInfoLabel("MusicPlayer.(1).Property(spotifytrackid)") playlists = self.sp.user_playlists(self.userid, limit=50, offset=0) ownplaylists = [] ownplaylistnames = [] for playlist in playlists['items']: if playlist["owner"]["id"] == self.userid: ownplaylists.append(playlist) ownplaylistnames.append(playlist["name"]) ownplaylistnames.append(xbmc.getLocalizedString(525)) xbmc.executebuiltin("Dialog.Close(busydialog)") select = xbmcgui.Dialog().select(xbmc.getLocalizedString(524), ownplaylistnames) if select != -1 and ownplaylistnames[select] == xbmc.getLocalizedString(525): # create new playlist... kb = xbmc.Keyboard('', xbmc.getLocalizedString(21381)) kb.setHiddenInput(False) kb.doModal() if kb.isConfirmed(): name = kb.getText() playlist = self.sp.user_playlist_create(self.userid, name, False) self.sp.user_playlist_add_tracks(self.userid, playlist["id"], [self.trackid]) elif select != -1: playlist = ownplaylists[select] self.sp.user_playlist_add_tracks(self.userid, playlist["id"], [self.trackid])
def get_playername(): playername = xbmc.getInfoLabel("System.FriendlyName").decode("utf-8") if playername == "Kodi": import socket playername = "Kodi (%s)" % socket.gethostname() return playername
def start(twitterhash=None, standalone=False): if not twitterhash: userInput = True if os.path.exists(tweet_file): twitter_data = json.loads(FileIO.fileread(tweet_file)) twitterhash = twitter_data["hash"] twitter_mediafile = twitter_data["file"] if twitter_mediafile == xbmc.getInfoLabel('Player.Filenameandpath'): userInput = False else: userInput = False if userInput: dialog = xbmcgui.Dialog() twitterhash = dialog.input(translate(32046), type=xbmcgui.INPUT_ALPHANUM) if len(twitterhash) != 0: twitterhash = twitterhash.replace("#","") else: xbmcgui.Dialog().ok(translate(32000), translate(32047)) mainmenu.start() if twitterhash: #Save twitter hashtag if twitter_history_enabled == 'true': tweet.add_hashtag_to_twitter_history(twitterhash) if xbmc.getCondVisibility("Player.HasMedia") and save_hashes_during_playback == 'true': tweet.savecurrenthash(twitterhash) main = TwitterDialog('script-matchcenter-Twitter.xml', addon_path, getskinfolder(), '', hash=twitterhash, standalone=standalone) main.doModal() del main
def onInit(self): self.getControl(1).setLabel(translate(32003)) self.getControl(3).setVisible(False) leagues = api.Search().Leagues(sport="Soccer") ignored_through_context_menu = self.already_ignored if leagues: items = [] for league in leagues: if removeNonAscii(league.strLeague) in self.already_ignored: item = xbmcgui.ListItem("[COLOR selected]" + league.strLeague + "[/COLOR]") item.setProperty("isIgnored","true") ignored_through_context_menu.remove(removeNonAscii(league.strLeague)) else: item = xbmcgui.ListItem(league.strLeague) item.setProperty("isIgnored","false") item.setArt({"thumb":league.strBadge}) items.append(item) #ignore the ones ignored through context menu if ignored_through_context_menu: for league_ign in ignored_through_context_menu: item = xbmcgui.ListItem("[COLOR selected]" + league_ign + "[/COLOR]") item.setProperty("isIgnored","true") item.setArt({"thumb":os.path.join(addon_path,"resources","img","nobadge_placeholder.png")}) items.append(item) self.getControl(6).addItems(items) self.setFocusId(6) #Krypton if int(xbmc.getInfoLabel("System.BuildVersion")[0:2]) >= 17: self.getControl(5).setLabel(translate(32052)) self.getControl(7).setLabel(translate(32053))
def savecurrenthash(_hash): media_file = xbmc.getInfoLabel('Player.Filenameandpath') media_dict = {"file" : media_file, "hash":_hash} if not os.path.exists(tweet_file): if not os.path.exists(addon_userdata): os.mkdir(addon_userdata) FileIO.filewrite(tweet_file,json.dumps(media_dict)) return
def get_info_label(name): return xbmc.getInfoLabel('%s') % name
def Kodi17(): xbmc_version = re.search('^(\d+)', xbmc.getInfoLabel( "System.BuildVersion" )) if xbmc_version: xbmc_version = int(xbmc_version.group(1)) else: xbmc_version = 1 if xbmc_version >= 16.9: dependencies = [] import glob folder = xbmc.translatePath('special://home/addons/') for DEPEND in glob.glob(folder+'*.*'): try:dependencies.append(DEPEND.rsplit('\\', 1)[1]) except:dependencies.append(DEPEND.rsplit('/', 1)[1]) for THEPLUGIN in dependencies: query = '{"jsonrpc":"2.0", "method":"Addons.SetAddonEnabled","params":{"addonid":"%s","enabled":true}, "id":1}' % (THEPLUGIN) xbmc.executeJSONRPC(query) xbmc.executebuiltin('UpdateLocalAddons') xbmc.executebuiltin("UpdateAddonRepos")
def waitForChange(self): scutils.KODISCLib.sleep(200) while True: if xbmc.abortRequested or not self.isPlayingVideo(): return pom = xbmc.getInfoLabel('Player.FinishTime(hh:mm:ss)') if pom != self.estimateFinishTime: self.estimateFinishTime = pom break scutils.KODISCLib.sleep(100)
def onClick(self, controlId): if controlId == self.C_CAT_CATEGORY: cList = self.getControl(self.C_CAT_CATEGORY) item = cList.getSelectedItem() if item: self.selected_category = item.getLabel() self.category = self.selected_category self.buttonClicked = controlId self.close() elif controlId == 80005: kodi = float(xbmc.getInfoLabel("System.BuildVersion")[:4]) dialog = xbmcgui.Dialog() if kodi < 16: dialog.ok('TV Guide Fullscreen', 'Editing categories in Kodi %s is currently not supported.' % kodi) else: cat = dialog.input('Add Category', type=xbmcgui.INPUT_ALPHANUM) if cat: categories = set(self.categories) categories.add(cat) self.categories = list(set(categories)) items = list() categories = ["All Channels"] + list(self.categories) for label in categories: item = xbmcgui.ListItem(label) items.append(item) listControl = self.getControl(self.C_CAT_CATEGORY) listControl.reset() listControl.addItems(items) else: self.buttonClicked = controlId self.close()
def create_list_item(item): """ Create an :class:`xbmcgui.ListItem` instance from an item dict :param item: a dict of ListItem properties :type item: dict :return: ListItem instance :rtype: xbmcgui.ListItem """ list_item = xbmcgui.ListItem(label=item.get('label', ''), label2=item.get('label2', ''), path=item.get('path', '')) if int(xbmc.getInfoLabel('System.BuildVersion')[:2]) >= 16: art = item.get('art', {}) art['thumb'] = item.get('thumb', '') art['icon'] = item.get('icon', '') art['fanart'] = item.get('fanart', '') item['art'] = art else: list_item.setThumbnailImage(item.get('thumb', '')) list_item.setIconImage(item.get('icon', '')) list_item.setProperty('fanart_image', item.get('fanart', '')) if item.get('art'): list_item.setArt(item['art']) if item.get('stream_info'): for stream, stream_info in item['stream_info'].iteritems(): list_item.addStreamInfo(stream, stream_info) if item.get('info'): for media, info in item['info'].iteritems(): list_item.setInfo(media, info) if item.get('context_menu') is not None: list_item.addContextMenuItems(item['context_menu']) if item.get('subtitles'): list_item.setSubtitles(item['subtitles']) if item.get('mime'): list_item.setMimeType(item['mime']) if item.get('properties'): for key, value in item['properties'].iteritems(): list_item.setProperty(key, value) return list_item
def get_platform(full_version=False): """ Devuelve la información la version de xbmc o kodi sobre el que se ejecuta el plugin @param full_version: indica si queremos toda la informacion o no @type full_version: bool @rtype: str o dict @return: Si el paramentro full_version es True se retorna un diccionario con las siguientes claves: 'num_version': (float) numero de version en formato XX.X 'name_version': (str) nombre clave de cada version 'video_db': (str) nombre del archivo que contiene la base de datos de videos 'plaform': (str) esta compuesto por "kodi-" o "xbmc-" mas el nombre de la version segun corresponda. Si el parametro full_version es False (por defecto) se retorna el valor de la clave 'plaform' del diccionario anterior. """ ret = {} codename = {"10": "dharma", "11": "eden", "12": "frodo", "13": "gotham", "14": "helix", "15": "isengard", "16": "jarvis", "17": "krypton", "18": "leia"} code_db = {'10': 'MyVideos37.db', '11': 'MyVideos60.db', '12': 'MyVideos75.db', '13': 'MyVideos78.db', '14': 'MyVideos90.db', '15': 'MyVideos93.db', '16': 'MyVideos99.db', '17': 'MyVideos107.db', '18': 'MyVideos108.db'} num_version = xbmc.getInfoLabel('System.BuildVersion') num_version = re.match("\d+\.\d+", num_version).group(0) ret['name_version'] = codename.get(num_version.split('.')[0], num_version) ret['video_db'] = code_db.get(num_version.split('.')[0], "") ret['num_version'] = float(num_version) if ret['num_version'] < 14: ret['platform'] = "xbmc-" + ret['name_version'] else: ret['platform'] = "kodi-" + ret['name_version'] if full_version: return ret else: return ret['platform']
def getDbId(): infolabel = xbmc.getInfoLabel('ListItem.Label') truelabel = sys.listitem.getLabel() if infolabel == truelabel: dbid = xbmc.getInfoLabel('ListItem.DBID') else: dbid = sys.listitem.getfilename().split('?')[0].rstrip('/').split('/')[-1] return dbid
def dltMovie(id, path, video): kodiJsonRequest({'jsonrpc': '2.0', 'method': 'VideoLibrary.RemoveMovie', 'params': {'movieid': int(id)}, 'id': 1}) if separate_movies == "true": xdir, xfil = xbmcvfs.listdir(path) for fl in xfil: xbmcvfs.delete(path + fl) deleteDir(path) else: deleteVideo(path, video) xbmc.executebuiltin('Notification(' + xbmc.getInfoLabel('ListItem.Label').replace(",",";") + ',' + lang(30002) + ')')
def dltEpisode(id, path, video): kodiJsonRequest({'jsonrpc': '2.0', 'method': 'VideoLibrary.RemoveEpisode', 'params': {'episodeid': int(id)}, 'id': 1}) deleteVideo(path, video) xbmc.executebuiltin('Notification(' + xbmc.getInfoLabel('ListItem.Label').replace(",",";") + ',' + lang(30003) + ')')
def dltMusicVideos(id, path, video): kodiJsonRequest({'jsonrpc': '2.0', 'method': 'VideoLibrary.RemoveMusicVideo', 'params': {'musicvideoid': int(id)}, 'id': 1}) deleteVideo(path, video) xbmc.executebuiltin('Notification(' + xbmc.getInfoLabel('ListItem.Label').replace(",",";") + ',' + lang(30004) + ')')
def dltVideos(path, video): deleteVideo(path, video) xbmc.executebuiltin('Notification(' + xbmc.getInfoLabel('ListItem.Label').replace(",",";") + ',' + lang(30005) + ')')
def dlt(): if xbmcgui.Dialog().yesno(lang(30006),xbmc.getInfoLabel('ListItem.Label')): path=xbmc.getInfoLabel('ListItem.Path') video = xbmc.getInfoLabel('ListItem.FileName') if xbmc.getInfoLabel('Container.Content')=='files': dltVideos(path, video) else: id=int(xbmc.getInfoLabel('ListItem.DBID')) if id<0: id=int(xbmc.getInfoLabel('ListItem.Top250')); if id>0: dbtype = xbmc.getInfoLabel('ListItem.DBTYPE') if dbtype=='movie': dltMovie(id, path, video) elif dbtype=='episode': dltEpisode(id, path, video) elif dbtype=='musicvideo': dltMusicVideos(id, path, video)
def get_kversion(): full_version_info = xbmc.getInfoLabel('System.BuildVersion') baseversion = full_version_info.split(".") # intbase = int(baseversion[0]) return baseversion[0]
def system_info(): systime = xbmc.getInfoLabel('System.Time ') dns1 = xbmc.getInfoLabel('Network.DNS1Address') gateway = xbmc.getInfoLabel('Network.GatewayAddress') ipaddy = xbmc.getInfoLabel('Network.IPAddress') linkstate = xbmc.getInfoLabel('Network.LinkState').replace("Link:", "") freespace, totalspace = maintool.get_free_space_mb(os.path.join(xbmc.translatePath('special://home'))) freespace = maintool.convert_size(freespace) + ' Free' totalspace = maintool.convert_size(totalspace) + ' Total' screenres = xbmc.getInfoLabel('system.screenresolution') freemem = xbmc.getInfoLabel('System.FreeMemory') # FIND WHAT VERSION OF KODI IS RUNNING xbmc_version = xbmc.getInfoLabel("System.BuildVersion") versioni = xbmc_version[:4] VERSIONS = {10: 'Dharma', 11: 'Eden', 12: 'Frodo', 13: 'Gotham', 14: 'Helix', 15: 'Isengard', 16: 'Jarvis', 17: 'Krypton'} codename = VERSIONS.get(int(xbmc_version[:2])) f = urllib.urlopen("http://www.canyouseeme.org/") html_doc = f.read() f.close() m = re.search('IP"\svalue="([^"]*)', html_doc) # Get Python Version pv = sys.version_info # System Information Menu kodi.addItem('[COLOR ghostwhite]Version: [/COLOR][COLOR lime]%s' % codename + " " + str(versioni) + "[/COLOR]", '', 100, artwork+'icon.png',"", description=" ") kodi.addItem('[COLOR ghostwhite]System Time: [/COLOR][COLOR lime]' + systime + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Gateway: [/COLOR][COLOR blue]' + gateway + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Local IP: [/COLOR][COLOR blue]' + ipaddy + '[/COLOR]', '', 100, artwork+'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]External IP: [/COLOR][COLOR blue]' + m.group(1) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]DNS 1: [/COLOR][COLOR blue]' + dns1 + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Network: [/COLOR][COLOR gold]'+linkstate + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Disc Space: [/COLOR][COLOR gold]'+str(totalspace) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Disc Space: [/COLOR][COLOR gold]'+str(freespace) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Free Memory: [/COLOR][COLOR gold]'+str(freemem) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Resolution: [/COLOR][COLOR gold]' + str(screenres) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") kodi.addItem('[COLOR ghostwhite]Python Version: [/COLOR][COLOR lime]%d.%d.%d' % (pv[0], pv[1], pv[2]) + '[/COLOR]', '', 100, artwork + 'icon.png', "", description=" ") viewsetter.set_view("files")
def get_kversion(): full_version_info = xbmc.getInfoLabel('System.BuildVersion') baseversion = full_version_info.split(".") intbase = int(baseversion[0]) # if intbase > 16.5: # log('HIGHER THAN 16.5') # if intbase < 16.5: # log('LOWER THAN 16.5') return intbase
def getXBMCVersion(): log("", 3) version = xbmc.getInfoLabel( "System.BuildVersion" ) log(version, 3) for key in ["-", " "]: if version.find(key) -1: version = version[:version.find(key)] version = float(version) log(repr(version)) return version # Converts the request url passed on by xbmc to the plugin into a dict of key-value pairs
def getViewPosition(self): try: return int(xbmc.getInfoLabel('Container({0}).Position'.format(self.controlID))) except: return 0
def defaultUserAgent(): """Return a string representing the default user agent.""" _implementation = platform.python_implementation() if _implementation == 'CPython': _implementation_version = platform.python_version() elif _implementation == 'PyPy': _implementation_version = '%s.%s.%s' % (sys.pypy_version_info.major, sys.pypy_version_info.minor, sys.pypy_version_info.micro) if sys.pypy_version_info.releaselevel != 'final': _implementation_version = ''.join([_implementation_version, sys.pypy_version_info.releaselevel]) elif _implementation == 'Jython': _implementation_version = platform.python_version() # Complete Guess elif _implementation == 'IronPython': _implementation_version = platform.python_version() # Complete Guess else: _implementation_version = 'Unknown' try: p_system = platform.system() p_release = platform.release() except IOError: p_system = 'Unknown' p_release = 'Unknown' return " ".join(['%s/%s' % ('Plex-for-Kodi', util.ADDON.getAddonInfo('version')), '%s/%s' % ('Kodi', xbmc.getInfoLabel('System.BuildVersion').replace(' ', '-')), '%s/%s' % (_implementation, _implementation_version), '%s/%s' % (p_system, p_release)])
def getGlobalProperty(key): return xbmc.getInfoLabel('Window(10000).Property(script.plex.{0})'.format(key))
def main(): if xbmc.getInfoLabel('Window(10000).Property(script.plex.service.started)'): # Prevent add-on updates from starting a new version of the addon return xbmcgui.Window(10000).setProperty('script.plex.service.started', '1') if xbmcaddon.Addon().getSetting('kiosk.mode') == 'true': xbmc.log('script.plex: Starting from service (Kiosk Mode)', xbmc.LOGNOTICE) xbmc.executebuiltin('RunScript(script.plex)')
def _request(self, url, params=None): xbmc.log('{0}: REQUEST: {1} {2}'.format(ADDONID, url, params)) self._cookies_init() req = urllib2.Request(self.HOST + url) req.add_header('User-Agent', 'Kodi: plugin.soap4me-proxy v{0}'.format(ADDONVERSION)) req.add_header('Accept-encoding', 'gzip') req.add_header('Kodi-Debug', '{0}'.format(xbmc.getInfoLabel('System.BuildVersion'))) if self.token is not None: self._cookies_load(req) req.add_header('X-API-TOKEN', self.token) post_data = self._post_data(params) if params is not None: req.add_header('Content-Type', 'application/x-www-form-urlencoded') response = urllib2.urlopen(req, post_data) self._cookies_save() text = None if response.info().get('Content-Encoding') == 'gzip': buffer = StringIO.StringIO(response.read()) fstream = gzip.GzipFile(fileobj=buffer) text = fstream.read() else: text = response.read() response.close() return text
def get_view_id(): listlabel = xbmc.getInfoLabel("ListItem.Label") viewid = "" for x in range(50, 5000): label = xbmc.getInfoLabel('Control.GetLabel(%s)' % (x)) if listlabel in label: viewid = x break return viewid