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)
python类getInfoLabel()的实例源码
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