本文整理汇总了Python中xbmc.executeJSONRPC函数的典型用法代码示例。如果您正苦于以下问题:Python executeJSONRPC函数的具体用法?Python executeJSONRPC怎么用?Python executeJSONRPC使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了executeJSONRPC函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _get_episode_url
def _get_episode_url(self, show_url, video):
params = urlparse.parse_qs(show_url)
cmd = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"tvshowid": %s, "season": %s, "filter": {"field": "%s", "operator": "is", "value": "%s"}, \
"limits": { "start" : 0, "end": 25 }, "properties" : ["title", "season", "episode", "file", "streamdetails"], "sort": { "order": "ascending", "method": "label", "ignorearticle": true }}, "id": "libTvShows"}'
base_url = 'video_type=%s&id=%s'
episodes = []
force_title = self._force_title(video)
if not force_title:
run = cmd % (params['id'][0], video.season, 'episode', video.episode)
meta = xbmc.executeJSONRPC(run)
meta = json.loads(meta)
log_utils.log('Episode Meta: %s' % (meta), log_utils.LOGDEBUG)
if 'result' in meta and 'episodes' in meta['result']:
episodes = meta['result']['episodes']
else:
log_utils.log('Skipping S&E matching as title search is forced on: %s' % (video.trakt_id), log_utils.LOGDEBUG)
if (force_title or kodi.get_setting('title-fallback') == 'true') and video.ep_title and not episodes:
run = cmd % (params['id'][0], video.season, 'title', video.ep_title)
meta = xbmc.executeJSONRPC(run)
meta = json.loads(meta)
log_utils.log('Episode Title Meta: %s' % (meta), log_utils.LOGDEBUG)
if 'result' in meta and 'episodes' in meta['result']:
episodes = meta['result']['episodes']
for episode in episodes:
if episode['file'].endswith('.strm'):
continue
return base_url % (video.video_type, episode['episodeid'])
示例2: updateVideoRefreshRate
def updateVideoRefreshRate(self, themePlayList):
# Check if the setting is enabled to switch the refresh rate
if not Settings.blockRefreshRateChange():
self.original_refreshrate = 0
return
log("ThemePlayer: Checking for update of refresh rate")
try:
# Check if we have any videos in the PlayList
hasVideoFiles = True
i = 0
while i < themePlayList.size():
if Settings.isVideoFile(themePlayList[i].getfilename()):
hasVideoFiles = True
break
i = i + 1
if hasVideoFiles:
# Save off the existing refresh setting
jsonresponse = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "Settings.GetSettingValue", "params": { "setting": "videoplayer.adjustrefreshrate" }, "id": 1}')
data = simplejson.loads(jsonresponse)
if 'result' in data:
if 'value' in data['result']:
self.original_refreshrate = data['result']['value']
# Check if the refresh rate is currently set
log("ThemePlayer: Video refresh rate currently set to %d" % self.original_refreshrate)
# Check if the refresh rate is currently set, if it is, then we need
if self.original_refreshrate != 0:
# Disable the refresh rate setting
log("ThemePlayer: Disabling refresh rate")
xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "Settings.SetSettingValue", "params": { "setting": "videoplayer.adjustrefreshrate", "value": 0 }, "id": 1}')
except:
log("ThemePlayer: Failed to process video refresh")
示例3: AddArtToLibrary
def AddArtToLibrary(type, media, folder, limit, silent=False):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.Get%ss", "params": {"properties": ["art", "file"], "sort": { "method": "label" } }, "id": 1}' % media.lower())
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if (json_response['result'] is not None) and ('%ss' % (media.lower()) in json_response['result']):
# iterate through the results
if not silent:
progressDialog = xbmcgui.DialogProgress(ADDON_LANGUAGE(32016))
progressDialog.create(ADDON_LANGUAGE(32016))
for count, item in enumerate(json_response['result']['%ss' % media.lower()]):
if not silent:
if progressDialog.iscanceled():
return
path = os.path.join(media_path(item['file']).encode("utf-8"), folder)
file_list = xbmcvfs.listdir(path)[1]
for i, file in enumerate(file_list):
if i + 1 > limit:
break
if not silent:
progressDialog.update((count * 100) / json_response['result']['limits']['total'], ADDON_LANGUAGE(32011) + ' %s: %s %i' % (item["label"], type, i + 1))
if progressDialog.iscanceled():
return
# just in case someone uses backslahes in the path
# fixes problems mentioned on some german forum
file_path = os.path.join(path, file).encode('string-escape')
if xbmcvfs.exists(file_path) and item['art'].get('%s%i' % (type, i), '') == "":
xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.Set%sDetails", "params": { "%sid": %i, "art": { "%s%i": "%s" }}, "id": 1 }' %
(media, media.lower(), item.get('%sid' % media.lower()), type, i + 1, file_path))
示例4: getNowPlaying
def getNowPlaying(self):
# Get the active player
result = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "id": 1, "method": "Player.GetActivePlayers"}')
result = unicode(result, 'utf-8', errors='ignore')
self.logMsg("Got active player " + result, 2)
result = json.loads(result)
# Seems to work too fast loop whilst waiting for it to become active
while not result["result"]:
result = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "id": 1, "method": "Player.GetActivePlayers"}')
result = unicode(result, 'utf-8', errors='ignore')
self.logMsg("Got active player " + result, 2)
result = json.loads(result)
if 'result' in result and result["result"][0] is not None:
playerid = result["result"][0]["playerid"]
# Get details of the playing media
self.logMsg("Getting details of now playing media", 1)
result = xbmc.executeJSONRPC(
'{"jsonrpc": "2.0", "id": 1, "method": "Player.GetItem", "params": {"playerid": ' + str(
playerid) + ', "properties": ["showtitle", "tvshowid", "episode", "season", "playcount","genre"] } }')
result = unicode(result, 'utf-8', errors='ignore')
self.logMsg("Got details of now playing media" + result, 2)
result = json.loads(result)
return result
示例5: first_step
def first_step():
which_way = xbmcgui.Dialog().select(__language__(33901), ["TVShow Time > Kodi", "Kodi > TVShow Time"])
if which_way < 0: return
tvshows = []
tvshowsid = []
command = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"sort": { "order": "ascending", "method": "label" }}, "id": 1}'
result = json.loads(xbmc.executeJSONRPC(command))
for i in range(0, result['result']['limits']['total']):
tvshows.append(result['result']['tvshows'][i]['label'])
tvshowsid.append(result['result']['tvshows'][i]['tvshowid'])
tvshows.insert(0, __language__(33902))
tvshowsid.insert(0, "0")
whattvshow = xbmcgui.Dialog().select(__language__(33903), tvshows)
if whattvshow < 0: return
elif whattvshow == 0:
scan(which_way)
else:
seasons = []
command = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params":{"tvshowid": %s, "properties": ["season"], "sort": { "order": "ascending", "method": "season" }}, "id": 1}' % tvshowsid[whattvshow]
result = json.loads(xbmc.executeJSONRPC(command))
for i in range(0, result['result']['limits']['total']):
seasons.append(str(result['result']['episodes'][i]['season']))
seasons = remove_duplicates(seasons)
seasons.insert(0, __language__(33904))
whatseason = xbmcgui.Dialog().select(__language__(33905), seasons)
if whatseason < 0: return
elif whatseason == 0:
scan(which_way, tvshowsid[whattvshow])
else:
scan(which_way, tvshowsid[whattvshow], whatseason)
示例6: getRecentEpisodes
def getRecentEpisodes(tagname,limit):
#if the addon is called with recentepisodes parameter, we return the recentepisodes list of the given tagname
xbmcplugin.setContent(int(sys.argv[1]), 'episodes')
# First we get a list of all the TV shows - filtered by tag
json_query_string = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": { "sort": { "order": "descending", "method": "dateadded" }, "properties": [ "title","sorttitle" ], "filter": {"operator": "contains", "field": "tag", "value": "%s"} }, "id": "libTvShows"}' %tagname)
json_result = json.loads(json_query_string)
# If we found any, put all tv show id's in a list
if json_result.has_key('result') and json_result['result'].has_key('tvshows'):
alltvshowIds = list()
for tvshow in json_result['result']['tvshows']:
alltvshowIds.append(tvshow["tvshowid"])
alltvshowIds = set(alltvshowIds)
#get all recently added episodes
json_query2 = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": { "sort": {"order": "descending", "method": "dateadded"}, "filter": {"field": "playcount", "operator": "lessthan", "value":"1"}, "properties": [ "title", "playcount", "season", "episode", "showtitle", "plot", "file", "rating", "resume", "tvshowid", "art", "streamdetails", "firstaired", "runtime", "cast", "writer", "dateadded", "lastplayed" ]}, "limits":{"end":%d}, "id": "1"}' %limit)
count = 0
if json_query2:
json_query2 = json.loads(json_query2)
if json_query2.has_key('result') and json_query2['result'].has_key('episodes'):
for item in json_query2['result']['episodes']:
if item["tvshowid"] in alltvshowIds:
liz = createListItem(item)
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=item['file'], listitem=liz)
count += 1
if count == limit:
break
xbmcplugin.endOfDirectory(handle=int(sys.argv[1]))
示例7: _fetch_song
def _fetch_song(self, request):
if not xbmc.abortRequested:
json_string = '{"jsonrpc": "2.0", "id": 1, "method": "AudioLibrary.GetSongs", "params": {"properties": ["title", "playcount", "artist", "album", "year", "file", "thumbnail", "fanart", "rating"], "filter": {"field": "playcount", "operator": "lessthan", "value": "1"}, "limits": {"end": %d},' %self.LIMIT
if request == 'RandomSong' and self.RANDOMITEMS_UNPLAYED == "True":
json_query = xbmc.executeJSONRPC('%s "sort": {"method": "random"}}}' %json_string)
else:
json_query = xbmc.executeJSONRPC('%s "sort": {"method": "random"}}}' %json_string)
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_query = simplejson.loads(json_query)
if json_query.has_key('result') and json_query['result'].has_key('songs'):
self._clear_properties(request)
count = 0
for item in json_query['result']['songs']:
count += 1
play = 'XBMC.RunScript(' + __addonid__ + ',songid=' + str(item.get('songid')) + ')'
path = media_path(item['file'])
self.WINDOW.setProperty("%s.%d.Title" % (request, count), item['title'])
self.WINDOW.setProperty("%s.%d.Artist" % (request, count), " / ".join(item['artist']))
self.WINDOW.setProperty("%s.%d.Year" % (request, count), str(item['year']))
self.WINDOW.setProperty("%s.%d.Rating" % (request, count), str(int(item['rating'])-48))
self.WINDOW.setProperty("%s.%d.Album" % (request, count), item['album'])
self.WINDOW.setProperty("%s.%d.Thumb" % (request, count), item['thumbnail']) #remove
self.WINDOW.setProperty("%s.%d.Fanart" % (request, count), item['fanart']) #remove
self.WINDOW.setProperty("%s.%d.Art(thumb)" % (request, count), item['thumbnail'])
self.WINDOW.setProperty("%s.%d.Art(fanart)" % (request, count), item['fanart'])
self.WINDOW.setProperty("%s.%d.File" % (request, count), item['file'])
self.WINDOW.setProperty("%s.%d.Path" % (request, count), path)
self.WINDOW.setProperty("%s.%d.Play" % (request, count), play)
del json_query
示例8: getKodiMusicVideos
def getKodiMusicVideos(self,fullInfo = False):
#returns all musicvideos in Kodi db inserted by MB
xbmc.sleep(sleepVal)
if fullInfo:
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": { "properties" : ["art", "thumbnail", "fanart", "resume", "runtime", "year", "genre", "studio", "artist", "album", "track", "lastplayed", "plot", "director", "playcount", "tag", "file"] }, "id": "libMusicVideos"}')
else:
json_response = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMusicVideos", "params": { "properties" : ["resume", "playcount", "lastplayed", "file", "track"] }, "id": "libMusicVideos"}')
jsonobject = json.loads(json_response.decode('utf-8','replace'))
musicvideos = None
if(jsonobject.has_key('result')):
result = jsonobject['result']
if(result.has_key('musicvideos')):
musicvideos = result['musicvideos']
kodiMusicVideoMap = None
if(musicvideos != None and len(musicvideos) > 0):
kodiMusicVideoMap = {}
connection = utils.KodiSQL()
cursor = connection.cursor()
for kodivideo in musicvideos:
cursor.execute("SELECT c23 as MBid FROM musicvideo WHERE idMVideo = ?",(kodivideo["musicvideoid"],))
result = cursor.fetchone()
if result != None:
key = result[0]
kodiMusicVideoMap[key] = kodivideo
cursor.close()
return kodiMusicVideoMap
示例9: RefreshPVR
def RefreshPVR(m3uPath, epgPath, logoPath, forceUpdate=False, forceUpdateIPTV=False):
if forceUpdateIPTV or common.getAutoIPTV():
UpdateIPTVSimpleSettings(m3uPath, epgPath, logoPath)
kodi16 = True if common.GetKodiVer() < 17 else False
if Addon.getSetting("autoPVR") == "true":
if (not json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Addons.GetAddonDetails","params":{"addonid":"pvr.iptvsimple", "properties": ["enabled"]},"id":1}'))['result']['addon']['enabled'] or (kodi16 and not json.loads(xbmc.executeJSONRPC('{"jsonrpc":"2.0", "method":"Settings.GetSettingValue", "params":{"setting":"pvrmanager.enabled"},"id":1}'))['result']['value'])):
tvOption = common.GetMenuSelected(localizedString(30317).encode('utf-8'), [localizedString(30318).encode('utf-8'), localizedString(30319).encode('utf-8')])
if tvOption != 0:
if tvOption == 1:
Addon.setSetting("useIPTV", "False")
return False
isIPTVnotRestarted = not EnableIptvClient() and not kodi16
isPVRnotRestarted = kodi16 and not EnablePVR()
if isIPTVnotRestarted and forceUpdate:
xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.iptvsimple","enabled":false},"id":1}')
xbmc.executeJSONRPC('{"jsonrpc":"2.0","method":"Addons.SetAddonEnabled","params":{"addonid":"pvr.iptvsimple","enabled":true},"id":1}')
#iptvAddon = GetIptvAddon()
#if iptvAddon is None:
# return False
#iptvAddon.setSetting("m3uPathType", iptvAddon.getSetting("m3uPathType"))
if isPVRnotRestarted:
xbmc.executebuiltin('StopPVRManager')
xbmc.executebuiltin('StartPVRManager')
return True
else:
return False
示例10: getEpisodeDetailsFromXbmc
def getEpisodeDetailsFromXbmc(libraryId, fields):
rpccmd = json.dumps({'jsonrpc': '2.0', 'method': 'VideoLibrary.GetEpisodeDetails', 'params':{'episodeid': libraryId, 'properties': fields}, 'id': 1})
result = xbmc.executeJSONRPC(rpccmd)
Debug('[VideoLibrary.GetEpisodeDetails] ' + result)
result = json.loads(result)
# check for error
try:
error = result['error']
Debug("getEpisodeDetailsFromXbmc: " + str(error))
return None
except KeyError:
pass # no error
try:
# get tvdb id
rpccmd_show = json.dumps({'jsonrpc': '2.0', 'method': 'VideoLibrary.GetTVShowDetails', 'params':{'tvshowid': result['result']['episodedetails']['tvshowid'], 'properties': ['year', 'imdbnumber']}, 'id': 1})
result_show = xbmc.executeJSONRPC(rpccmd_show)
Debug('[VideoLibrary.GetTVShowDetails] ' + result_show)
result_show = json.loads(result_show)
# add to episode data
result['result']['episodedetails']['tvdb_id'] = result_show['result']['tvshowdetails']['imdbnumber']
result['result']['episodedetails']['year'] = result_show['result']['tvshowdetails']['year']
return result['result']['episodedetails']
except KeyError:
Debug("getEpisodeDetailsFromXbmc: KeyError: result['result']['episodedetails']")
return None
示例11: _fetch_albums
def _fetch_albums(self, request):
if not xbmc.abortRequested:
json_string = '{"jsonrpc": "2.0", "id": 1, "method": "AudioLibrary.GetAlbums", "params": {"properties": ["title", "description", "albumlabel", "artist", "genre", "year", "thumbnail", "fanart", "rating", "playcount"], "limits": {"end": %d},' %self.LIMIT
if request == 'RecommendedAlbum':
json_query = xbmc.executeJSONRPC('%s "sort": {"order": "descending", "method": "playcount" }}}' %json_string)
elif request == 'RecentAlbum':
json_query = xbmc.executeJSONRPC('%s "sort": {"order": "descending", "method": "dateadded" }}}' %json_string)
else:
json_query = xbmc.executeJSONRPC('%s "sort": {"method": "random"}}}' %json_string)
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_query = simplejson.loads(json_query)
if json_query['result'].has_key('albums'):
self._clear_properties(request)
count = 0
for item in json_query['result']['albums']:
count += 1
rating = str(item['rating'])
if rating == '48':
rating = ''
play = 'XBMC.RunScript(' + __addonid__ + ',albumid=' + str(item.get('albumid')) + ')'
self.WINDOW.setProperty("%s.%d.Title" % (request, count), item['title'])
self.WINDOW.setProperty("%s.%d.Label" % (request, count), item['title']) #needs to be removed
self.WINDOW.setProperty("%s.%d.Artist" % (request, count), " / ".join(item['artist']))
self.WINDOW.setProperty("%s.%d.Genre" % (request, count), " / ".join(item['genre']))
self.WINDOW.setProperty("%s.%d.Year" % (request, count), str(item['year']))
self.WINDOW.setProperty("%s.%d.RecordLabel" % (request, count), item['albumlabel'])
self.WINDOW.setProperty("%s.%d.Description" % (request, count), item['description'])
self.WINDOW.setProperty("%s.%d.Rating" % (request, count), rating)
self.WINDOW.setProperty("%s.%d.Thumb" % (request, count), item['thumbnail']) #remove
self.WINDOW.setProperty("%s.%d.Fanart" % (request, count), item['fanart']) #remove
self.WINDOW.setProperty("%s.%d.Art(thumb)" % (request, count), item['thumbnail'])
self.WINDOW.setProperty("%s.%d.Art(fanart)" % (request, count), item['fanart'])
self.WINDOW.setProperty("%s.%d.Play" % (request, count), play)
del json_query
示例12: setXBMCMoviePlaycount
def setXBMCMoviePlaycount(movieid, playcount, imdb_id):
if getXBMCMajorVersion() >= 12:
time.sleep(0.2)
xbmc.executeJSONRPC(
json.dumps(
{
"jsonrpc": "2.0",
"method": "VideoLibrary.SetMovieDetails",
"params": {"movieid": movieid, "playcount": playcount},
"id": 1,
}
)
)
time.sleep(0.2)
else:
match = raw_xbmc_database.RawXbmcDb.query(
"SELECT movie.idFile FROM movie" + " WHERE movie.c09='%(imdb_id)s'" % {"imdb_id": xcp(imdb_id)}
)
if not match:
# add error message here
return
try:
match[0][0]
except KeyError:
return
raw_xbmc_database.RawXbmcDb.execute(
"UPDATE files"
+ " SET playcount=%(playcount)d" % {"playcount": int(playcount)}
+ " WHERE idFile=%(idFile)s" % {"idFile": xcp(match[0][0])}
)
示例13: _get_info
def _get_info( self, episodeid, playcount, playstatus ):
try:
tvshow_query = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"episodeid": ' + str(episodeid) + ', "properties": ["tvshowid", "showtitle", "season", "episode"]}, "id": 1}'
tvshow = json.loads(xbmc.executeJSONRPC (tvshow_query))['result']['episodedetails']
tvdbid_query = '{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShowDetails", "params": {"tvshowid": ' + str(tvshow['tvshowid']) + ', "properties": ["imdbnumber"]}, "id": 1}'
tvdbid = json.loads(xbmc.executeJSONRPC (tvdbid_query))['result']['tvshowdetails']['imdbnumber']
showtitle = tvshow['showtitle'].encode("utf-8")
epname = str(tvshow['season']) + 'x' + str(tvshow['episode'])
except:
log("could not get tvshow/episode details", xbmc.LOGNOTICE)
if not tvdbid:
url = self.service[1] + '/shows/search'
urldata = '?v=2.2&key=' + self.service[2] + '&title=' + showtitle
try:
tvdbid_query = get_urldata(url + urldata, '', "GET")
tvdbid_query = json.loads(tvdbid_query)
tvdbid = tvdbid_query['shows'][0]['thetvdb_id']
except:
log("could not fetch tvshow's thetvdb_id", xbmc.LOGNOTICE)
return False
url = self.service[1] + '/shows/episodes'
urldata = '?v=2.2&key=' + self.service[2] + '&thetvdb_id=' + str(tvdbid) + '&season=' + str(tvshow['season']) + '&episode=' + str(tvshow['episode'])
try:
tvdbepid_query = get_urldata(url + urldata, '', "GET")
tvdbepid_query = json.loads(tvdbepid_query)
tvdbepid = tvdbepid_query['episodes'][0]['thetvdb_id']
except:
log("could not fetch episode's thetvdb_id", xbmc.LOGNOTICE)
return False
epinfo = [int(tvdbid), int(tvdbepid), int(playcount), bool(playstatus), showtitle, epname]
return epinfo
示例14: getDetails
def getDetails(self):
details_query_string = '{"jsonrpc": "2.0", "method": "Player.GetProperties", "params":' \
'{ "properties": ["currentaudiostream", "audiostreams", "subtitleenabled", "currentsubtitle", "subtitles" ], "playerid": 1 },' \
'"id": 1}'
json_query = xbmc.executeJSONRPC(details_query_string)
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if json_response.has_key('result') and json_response['result'] != None:
self.selected_audio_stream = json_response['result']['currentaudiostream']
self.selected_sub = json_response['result']['currentsubtitle']
self.selected_sub_enabled = json_response['result']['subtitleenabled']
self.audiostreams = json_response['result']['audiostreams']
self.subtitles = json_response['result']['subtitles']
log(LOG_DEBUG, json_response )
genre_tags_query_string = '{"jsonrpc": "2.0", "method": "Player.GetItem", "params": { "properties": ["genre", "tag"], "playerid": 1 }, "id": 1}'
json_query = xbmc.executeJSONRPC(genre_tags_query_string)
json_query = unicode(json_query, 'utf-8', errors='ignore')
json_response = simplejson.loads(json_query)
if json_response.has_key('result') and json_response['result'] != None:
gt = []
if json_response['result']['item'].has_key('genre'):
gt = json_response['result']['item']['genre']
if json_response['result']['item'].has_key('tag'):
gt.extend(json_response['result']['item']['tag'])
self.genres_and_tags = set(map(lambda x:x.lower(), gt))
log(LOG_DEBUG, 'Video tags/genres: {0}'.format(self.genres_and_tags))
log(LOG_DEBUG, json_response )
示例15: getLibraryMeta
def getLibraryMeta(self):
try:
if self.content == 'movie':
meta = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovies", "params": {"filter":{"or": [{"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}]}, "properties" : ["title", "originaltitle", "year", "genre", "studio", "country", "runtime", "rating", "votes", "mpaa", "director", "writer", "plot", "plotoutline", "tagline", "thumbnail", "file"]}, "id": 1}' % (self.year, str(int(self.year)+1), str(int(self.year)-1)))
meta = unicode(meta, 'utf-8', errors='ignore')
meta = json.loads(meta)['result']['movies']
meta = [i for i in meta if i['file'].endswith(self.file)][0]
self.DBID = meta['movieid'] ; poster = thumb = meta['thumbnail']
meta = {'title': meta['title'], 'originaltitle': meta['originaltitle'], 'year': meta['year'], 'genre': str(' / '.join(meta['genre'])), 'studio' : str(' / '.join(meta['studio'])), 'country' : str(' / '.join(meta['country'])), 'duration' : meta['runtime'], 'rating': meta['rating'], 'votes': meta['votes'], 'mpaa': meta['mpaa'], 'director': str(' / '.join(meta['director'])), 'writer': str(' / '.join(meta['writer'])), 'plot': meta['plot'], 'plotoutline': meta['plotoutline'], 'tagline': meta['tagline']}
elif self.content == 'episode':
meta = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"filter":{"and": [{"field": "season", "operator": "is", "value": "%s"}, {"field": "episode", "operator": "is", "value": "%s"}]}, "properties": ["title", "season", "episode", "showtitle", "firstaired", "runtime", "rating", "director", "writer", "plot", "thumbnail", "file"]}, "id": 1}' % (self.season, self.episode))
meta = unicode(meta, 'utf-8', errors='ignore')
meta = json.loads(meta)['result']['episodes']
meta = [i for i in meta if i['file'].endswith(self.file)][0]
self.DBID = meta['episodeid'] ; thumb = meta['thumbnail'] ; showtitle = meta['showtitle']
meta = {'title': meta['title'], 'season' : meta['season'], 'episode': meta['episode'], 'tvshowtitle': meta['showtitle'], 'premiered' : meta['firstaired'], 'duration' : meta['runtime'], 'rating': meta['rating'], 'director': str(' / '.join(meta['director'])), 'writer': str(' / '.join(meta['writer'])), 'plot': meta['plot']}
poster = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"filter": {"field": "title", "operator": "is", "value": "%s"}, "properties": ["thumbnail"]}, "id": 1}' % showtitle)
poster = unicode(poster, 'utf-8', errors='ignore')
poster = json.loads(poster)['result']['tvshows'][0]['thumbnail']
return (poster, thumb, meta)
except:
poster, thumb, meta = '', '', {'title': self.name}
return (poster, thumb, meta)