本文整理汇总了Python中resources.lib.modules.control.jsonrpc函数的典型用法代码示例。如果您正苦于以下问题:Python jsonrpc函数的具体用法?Python jsonrpc怎么用?Python jsonrpc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了jsonrpc函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add
def add(self, tvshowtitle, year, imdb, tvdb, range=False):
if not control.condVisibility('Window.IsVisible(infodialog)') and not control.condVisibility('Player.HasVideo'):
control.infoDialog(control.lang(32552).encode('utf-8'), time=10000000)
self.infoDialog = True
from resources.lib.indexers import episodes
items = episodes.episodes().get(tvshowtitle, year, imdb, tvdb, idx=False)
try: items = [{'title': i['title'], 'year': i['year'], 'imdb': i['imdb'], 'tvdb': i['tvdb'], 'season': i['season'], 'episode': i['episode'], 'tvshowtitle': i['tvshowtitle'], 'premiered': i['premiered']} for i in items]
except: items = []
try:
if not self.dupe_setting == 'true': raise Exception()
if items == []: raise Exception()
id = [items[0]['imdb'], items[0]['tvdb']]
lib = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties" : ["imdbnumber", "title", "year"]}, "id": 1}')
lib = unicode(lib, 'utf-8', errors='ignore')
lib = json.loads(lib)['result']['tvshows']
lib = [i['title'].encode('utf-8') for i in lib if str(i['imdbnumber']) in id or (i['title'].encode('utf-8') == items[0]['tvshowtitle'] and str(i['year']) == items[0]['year'])][0]
lib = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"filter":{"and": [{"field": "tvshow", "operator": "is", "value": "%s"}]}, "properties": ["season", "episode"]}, "id": 1}' % lib)
lib = unicode(lib, 'utf-8', errors='ignore')
lib = json.loads(lib)['result']['episodes']
lib = ['S%02dE%02d' % (int(i['season']), int(i['episode'])) for i in lib]
items = [i for i in items if not 'S%02dE%02d' % (int(i['season']), int(i['episode'])) in lib]
except:
pass
files_added = 0
for i in items:
try:
if xbmc.abortRequested == True: return sys.exit()
if self.check_setting == 'true':
if i['episode'] == '1':
self.block = True
src = lib_tools.check_sources(i['title'], i['year'], i['imdb'], i['tvdb'], i['season'], i['episode'], i['tvshowtitle'], i['premiered'])
if src: self.block = False
if self.block == True: raise Exception()
premiered = i.get('premiered', '0')
if (premiered != '0' and int(re.sub('[^0-9]', '', str(premiered))) > int(self.date)) or (premiered == '0' and not self.include_unknown):
continue
self.strmFile(i)
files_added += 1
except:
pass
if range == True: return
if self.infoDialog == True:
control.infoDialog(control.lang(32554).encode('utf-8'), time=1)
if self.library_setting == 'true' and not control.condVisibility('Library.IsScanningVideo') and files_added > 0:
control.execute('UpdateLibrary(video)')
示例2: libForPlayback
def libForPlayback(self):
try:
if self.DBID == None: raise Exception()
if self.content == 'movie':
rpc = '{"jsonrpc": "2.0", "method": "VideoLibrary.SetMovieDetails", "params": {"movieid" : %s, "playcount" : 1 }, "id": 1 }' % str(self.DBID)
elif self.content == 'episode':
rpc = '{"jsonrpc": "2.0", "method": "VideoLibrary.SetEpisodeDetails", "params": {"episodeid" : %s, "playcount" : 1 }, "id": 1 }' % str(self.DBID)
control.jsonrpc(rpc) ; control.refresh()
except:
pass
示例3: favorites
def favorites():
import json;
from resources.lib.modules import control;
try:
favs = control.jsonrpc('{"jsonrpc": "2.0", "method": "Favourites.GetFavourites", "params": { "properties": ["path", "windowparameter"] }, "id": "1"}');
favs = json.loads(favs);
favs = list(set([item for sublist in [[d.get('windowparameter', None), d.get('path', None)] for d in favs['result']['favourites']] for item in sublist if item is not None]));
return favs;
except Exception as inst:
logger.error(inst);
return [];
示例4: add
def add(self, name, title, year, imdb, range=False):
if not control.condVisibility("Window.IsVisible(infodialog)") and not control.condVisibility("Player.HasVideo"):
control.infoDialog(control.lang(30421).encode("utf-8"), time=10000000)
self.infoDialog = True
try:
if not self.dupe_setting == "true":
raise Exception()
id = imdb
lib = control.jsonrpc(
'{"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" : ["imdbnumber", "originaltitle", "year"]}, "id": 1}'
% (year, str(int(year) + 1), str(int(year) - 1))
)
lib = unicode(lib, "utf-8", errors="ignore")
lib = json.loads(lib)["result"]["movies"]
lib = [
i
for i in lib
if str(i["imdbnumber"]) in id
or (i["originaltitle"].encode("utf-8") == title and str(i["year"]) == year)
][0]
except:
lib = []
try:
if not lib == []:
raise Exception()
self.strmFile({"name": name, "title": title, "year": year, "imdb": imdb})
except:
pass
if range == True:
return
control.infoDialog(control.lang(30423).encode("utf-8"), time=1)
if self.library_setting == "true" and not control.condVisibility("Library.IsScanningVideo"):
control.execute("UpdateLibrary(video)")
示例5: sources
def sources(self, url, hostDict, hostprDict):
sources = []
try:
if url is None:
return sources
data = urlparse.parse_qs(url)
data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data])
content_type = 'episode' if 'tvshowtitle' in data else 'movie'
years = (data['year'], str(int(data['year'])+1), str(int(data['year'])-1))
if content_type == 'movie':
title = cleantitle.get(data['title'])
localtitle = cleantitle.get(data['localtitle'])
ids = [data['imdb']]
r = control.jsonrpc('{"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": ["imdbnumber", "title", "originaltitle", "file"]}, "id": 1}' % years)
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['movies']
r = [i for i in r if str(i['imdbnumber']) in ids or title in [cleantitle.get(i['title'].encode('utf-8')), cleantitle.get(i['originaltitle'].encode('utf-8'))]]
r = [i for i in r if not i['file'].encode('utf-8').endswith('.strm')][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovieDetails", "params": {"properties": ["streamdetails", "file"], "movieid": %s }, "id": 1}' % str(r['movieid']))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['moviedetails']
elif content_type == 'episode':
title = cleantitle.get(data['tvshowtitle'])
localtitle = cleantitle.get(data['localtvshowtitle'])
season, episode = data['season'], data['episode']
ids = [data['imdb'], data['tvdb']]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"filter":{"or": [{"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}]}, "properties": ["imdbnumber", "title"]}, "id": 1}' % years)
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['tvshows']
r = [i for i in r if str(i['imdbnumber']) in ids or title in [cleantitle.get(i['title'].encode('utf-8')), cleantitle.get(i['originaltitle'].encode('utf-8'))]][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"filter":{"and": [{"field": "season", "operator": "is", "value": "%s"}, {"field": "episode", "operator": "is", "value": "%s"}]}, "properties": ["file"], "tvshowid": %s }, "id": 1}' % (str(season), str(episode), str(r['tvshowid'])))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['episodes']
r = [i for i in r if not i['file'].encode('utf-8').endswith('.strm')][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"properties": ["streamdetails", "file"], "episodeid": %s }, "id": 1}' % str(r['episodeid']))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['episodedetails']
url = r['file'].encode('utf-8')
try: quality = int(r['streamdetails']['video'][0]['width'])
except: quality = -1
if quality >= 2160: quality = '4K'
if quality >= 1440: quality = '1440p'
if quality >= 1080: quality = '1080p'
if 720 <= quality < 1080: quality = 'HD'
if quality < 720: quality = 'SD'
info = []
try:
f = control.openFile(url) ; s = f.size() ; f.close()
s = '%.2f GB' % (float(s)/1024/1024/1024)
info.append(s)
except:
pass
try:
e = urlparse.urlparse(url).path.split('.')[-1].upper()
info.append(e)
except:
pass
info = ' | '.join(info)
info = info.encode('utf-8')
sources.append({'source': '0', 'quality': quality, 'language': 'en', 'url': url, 'info': info, 'local': True, 'direct': True, 'debridonly': False})
return sources
except:
return sources
示例6: sources
def sources(self, url, hostDict, hostprDict):
try:
sources = []
if url == None: return sources
data = urlparse.parse_qs(url)
data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data])
type = 'episode' if 'tvshowtitle' in data else 'movie'
years = (data['year'], str(int(data['year'])+1), str(int(data['year'])-1))
if type == 'movie':
title = cleantitle.get(data['title'])
ids = [data['imdb']]
r = control.jsonrpc('{"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": ["imdbnumber", "title", "originaltitle", "file"]}, "id": 1}' % years)
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['movies']
r = [i for i in r if str(i['imdbnumber']) in ids or title in [cleantitle.get(i['title'].encode('utf-8')), cleantitle.get(i['originaltitle'].encode('utf-8'))]]
r = [i for i in r if not i['file'].encode('utf-8').endswith('.strm')][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovieDetails", "params": {"properties": ["streamdetails", "file"], "movieid": %s }, "id": 1}' % str(r['movieid']))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['moviedetails']
elif type == 'episode':
title = cleantitle.get(data['tvshowtitle'])
season, episode = data['season'], data['episode']
ids = [data['imdb'], data['tvdb']]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"filter":{"or": [{"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}]}, "properties": ["imdbnumber", "title"]}, "id": 1}' % years)
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['tvshows']
r = [i for i in r if str(i['imdbnumber']) in ids or title == cleantitle.get(i['title'].encode('utf-8'))][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"filter":{"and": [{"field": "season", "operator": "is", "value": "%s"}, {"field": "episode", "operator": "is", "value": "%s"}]}, "properties": ["file"], "tvshowid": %s }, "id": 1}' % (str(season), str(episode), str(r['tvshowid'])))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['episodes']
r = [i for i in r if not i['file'].encode('utf-8').endswith('.strm')][0]
r = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"properties": ["streamdetails", "file"], "episodeid": %s }, "id": 1}' % str(r['episodeid']))
r = unicode(r, 'utf-8', errors='ignore')
r = json.loads(r)['result']['episodedetails']
url = r['file'].encode('utf-8')
try: quality = int(r['streamdetails']['video'][0]['width'])
except: quality = -1
if quality >= 1920: quality = '1080p'
elif 1280 <= quality < 1920: quality = 'HD'
elif 0 <= quality < 1280: quality = 'SD'
else: quality = 'SD'
info = 'LOCAL SOURCE'
sources.append({'source': '0', 'quality': quality, 'provider': 'Library', 'url': url, 'info': info, 'local': True, 'direct': True, 'debridonly': False})
return sources
except:
return sources
示例7: getMeta
def getMeta(self, meta):
try:
poster = meta['poster'] if 'poster' in meta else '0'
thumb = meta['thumb'] if 'thumb' in meta else poster
if poster == '0': poster = control.addonPoster()
return (poster, thumb, meta)
except:
pass
try:
if not self.content == 'movie': raise Exception()
meta = control.jsonrpc('{"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']
t = cleantitle.get(self.title)
meta = [i for i in meta if self.year == str(i['year']) and (t == cleantitle.get(i['title']) or t == cleantitle.get(i['originaltitle']))][0]
for k, v in meta.iteritems():
if type(v) == list:
try: meta[k] = str(' / '.join([i.encode('utf-8') for i in v]))
except: meta[k] = ''
else:
try: meta[k] = str(v.encode('utf-8'))
except: meta[k] = str(v)
if not 'plugin' in control.infoLabel('Container.PluginName'):
self.DBID = meta['movieid']
poster = thumb = meta['thumbnail']
return (poster, thumb, meta)
except:
pass
try:
if not self.content == 'episode': raise Exception()
meta = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"filter":{"or": [{"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}]}, "properties" : ["title", "year", "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']['tvshows']
t = cleantitle.get(self.title)
meta = [i for i in meta if self.year == str(i['year']) and t == cleantitle.get(i['title'])][0]
tvshowid = meta['tvshowid'] ; poster = meta['thumbnail']
meta = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params":{ "tvshowid": %d, "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}' % (tvshowid, self.season, self.episode))
meta = unicode(meta, 'utf-8', errors='ignore')
meta = json.loads(meta)['result']['episodes'][0]
for k, v in meta.iteritems():
if type(v) == list:
try: meta[k] = str(' / '.join([i.encode('utf-8') for i in v]))
except: meta[k] = ''
else:
try: meta[k] = str(v.encode('utf-8'))
except: meta[k] = str(v)
if not 'plugin' in control.infoLabel('Container.PluginName'):
self.DBID = meta['episodeid']
thumb = meta['thumbnail']
return (poster, thumb, meta)
except:
pass
poster, thumb, meta = '', '', {'title': self.name}
return (poster, thumb, meta)
示例8: execute_jsonrpc
def execute_jsonrpc(command):
if not isinstance(command, basestring):
command = json.dumps(command)
response = control.jsonrpc(command)
return json.loads(response)
示例9: update
def update(self, query=None, info='true'):
if not query == None: control.idle()
try:
items = []
season, episode = [], []
show = [os.path.join(self.library_folder, i) for i in control.listDir(self.library_folder)[0]]
for s in show:
try: season += [os.path.join(s, i) for i in control.listDir(s)[0]]
except: pass
for s in season:
try: episode.append([os.path.join(s, i) for i in control.listDir(s)[1] if i.endswith('.strm')][-1])
except: pass
for file in episode:
try:
file = control.openFile(file)
read = file.read()
read = read.encode('utf-8')
file.close()
if not read.startswith(sys.argv[0]): raise Exception()
params = dict(urlparse.parse_qsl(read.replace('?','')))
try: tvshowtitle = params['tvshowtitle']
except: tvshowtitle = None
try: tvshowtitle = params['show']
except: pass
if tvshowtitle == None or tvshowtitle == '': raise Exception()
year, imdb, tvdb = params['year'], params['imdb'], params['tvdb']
imdb = 'tt' + re.sub('[^0-9]', '', str(imdb))
try: tmdb = params['tmdb']
except: tmdb = '0'
items.append({'tvshowtitle': tvshowtitle, 'year': year, 'imdb': imdb, 'tmdb': tmdb, 'tvdb': tvdb})
except:
pass
items = [i for x, i in enumerate(items) if i not in items[x + 1:]]
if len(items) == 0: raise Exception()
except:
return
try:
lib = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties" : ["imdbnumber", "title", "year"]}, "id": 1}')
lib = unicode(lib, 'utf-8', errors='ignore')
lib = json.loads(lib)['result']['tvshows']
except:
return
if info == 'true' and not control.condVisibility('Window.IsVisible(infodialog)') and not control.condVisibility('Player.HasVideo'):
control.infoDialog(control.lang(32553).encode('utf-8'), time=10000000)
self.infoDialog = True
try:
control.makeFile(control.dataPath)
dbcon = database.connect(control.libcacheFile)
dbcur = dbcon.cursor()
dbcur.execute("CREATE TABLE IF NOT EXISTS tvshows (""id TEXT, ""items TEXT, ""UNIQUE(id)"");")
except:
return
try:
from resources.lib.indexers import episodes
except:
return
files_added = 0
# __init__ doesn't get called from services so self.date never gets updated and new episodes are not added to the library
self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours = 5))
self.date = (self.datetime - datetime.timedelta(hours = 24)).strftime('%Y%m%d')
for item in items:
it = None
if xbmc.abortRequested == True: return sys.exit()
try:
dbcur.execute("SELECT * FROM tvshows WHERE id = '%s'" % item['tvdb'])
fetch = dbcur.fetchone()
it = eval(fetch[1].encode('utf-8'))
except:
pass
try:
if not it == None: raise Exception()
it = episodes.episodes().get(item['tvshowtitle'], item['year'], item['imdb'], item['tvdb'], idx=False)
status = it[0]['status'].lower()
it = [{'title': i['title'], 'year': i['year'], 'imdb': i['imdb'], 'tvdb': i['tvdb'], 'season': i['season'], 'episode': i['episode'], 'tvshowtitle': i['tvshowtitle'], 'premiered': i['premiered']} for i in it]
if status == 'continuing': raise Exception()
#.........这里部分代码省略.........
示例10: sources
def sources(self, url, hostDict, hostprDict):
try:
sources = []
if url == None: return sources
data = urlparse.parse_qs(url)
data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data])
type = 'episode' if 'tvshowtitle' in data else 'movie'
years = (data['year'], str(int(data['year'])+1), str(int(data['year'])-1))
def add(result, title):
link = result['file'].encode('utf-8')
name = os.path.basename(link)
try: videoQuality = int(result['streamdetails']['video'][0]['width'])
except: videoQuality = -1
threshold = 20 # Some videos are a bit smaller.
if videoQuality >= 8192 - threshold: videoQuality = 'HD8K'
elif videoQuality >= 6144 - threshold: videoQuality = 'HD6K'
elif videoQuality >= 3840 - threshold: videoQuality = 'HD4K'
elif videoQuality >= 2048 - threshold: videoQuality = 'HD2K'
elif videoQuality >= 1920 - threshold: videoQuality = 'HD1080'
elif videoQuality >= 1280 - threshold: videoQuality = 'HD720'
else: videoQuality = 'SD'
try: videoCodec = result['streamdetails']['video'][0]['codec']
except: videoCodec = None
try: video3D = len(result['streamdetails']['video'][0]['stereomode']) > 0
except: video3D = None
try: audioChannels = result['streamdetails']['audio'][0]['channels']
except: audioChannels = None
try: audioCodec = result['streamdetails']['audio'][0]['codec']
except: audioCodec = None
try: subtitle = len(result['streamdetails']['subtitle']) > 0
except: subtitle = None
try:
file = control.openFile(link)
size = file.size()
file.close()
except:
size = None
try:
meta = metadata.Metadata(name = name, title = title, link = link, size = size)
meta.setVideoQuality(videoQuality)
meta.setVideoCodec(videoCodec)
meta.setVideo3D(video3D)
meta.setAudioChannels(audioChannels)
meta.setAudioCodec(audioCodec)
meta.setSubtitlesSoft(subtitle)
except:
pass
sources.append({'source': '0', 'quality': meta.videoQuality(), 'language' : self.language[0], 'url': link, 'file' : name, 'local': True, 'direct': True, 'debridonly': False, 'info' : meta.information()})
if type == 'movie':
title = cleantitle.get(data['title'])
ids = [data['imdb']]
results = control.jsonrpc('{"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": ["imdbnumber", "title", "originaltitle", "file"]}, "id": 1}' % years)
results = unicode(results, 'utf-8', errors='ignore')
results = json.loads(results)['result']['movies']
results = [i for i in results if str(i['imdbnumber']) in ids or title in [cleantitle.get(i['title'].encode('utf-8')), cleantitle.get(i['originaltitle'].encode('utf-8'))]]
results = [i for i in results if not i['file'].encode('utf-8').endswith('.strm')]
for result in results:
result = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetMovieDetails", "params": {"properties": ["streamdetails", "file"], "movieid": %s }, "id": 1}' % str(result['movieid']))
result = unicode(result, 'utf-8', errors='ignore')
result = json.loads(result)['result']['moviedetails']
add(result, title)
elif type == 'episode':
title = cleantitle.get(data['tvshowtitle'])
season, episode = data['season'], data['episode']
ids = [data['imdb'], data['tvdb']]
results = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"filter":{"or": [{"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}, {"field": "year", "operator": "is", "value": "%s"}]}, "properties": ["imdbnumber", "title"]}, "id": 1}' % years)
results = unicode(results, 'utf-8', errors='ignore')
results = json.loads(results)['result']['tvshows']
results = [i for i in results if str(i['imdbnumber']) in ids or title == cleantitle.get(i['title'].encode('utf-8'))][0]
results = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodes", "params": {"filter":{"and": [{"field": "season", "operator": "is", "value": "%s"}, {"field": "episode", "operator": "is", "value": "%s"}]}, "properties": ["file"], "tvshowid": %s }, "id": 1}' % (str(season), str(episode), str(results['tvshowid'])))
results = unicode(results, 'utf-8', errors='ignore')
results = json.loads(results)['result']['episodes']
results = [i for i in results if not i['file'].encode('utf-8').endswith('.strm')]
for result in results:
result = control.jsonrpc('{"jsonrpc": "2.0", "method": "VideoLibrary.GetEpisodeDetails", "params": {"properties": ["streamdetails", "file"], "episodeid": %s }, "id": 1}' % str(result['episodeid']))
#.........这里部分代码省略.........
示例11: updatefavorites
def updatefavorites(params):
import json;
from resources.lib.modules import control;
url = None;
title = None;
thumbnail = None;
isFolder = None;
try:
if 'action' in params:
params.pop('action');
if 'url' in params:
url = re.sub('/action', '/?action', params['url']);
params.pop('url');
if 'name' in params:
title = params['name'];
params.pop('name');
if 'posterart' in params:
thumbnail = params['posterart'];
params.pop('posterart');
if 'isFolder' in params:
isFolder = params['isFolder'];
params.pop('isFolder');
if url:
import json;
import xbmcgui;
from resources.lib.modules import control;
params = urllib.urlencode(params);
url += ('&' + params);
if isFolder == 'True':
wid = xbmcgui.getCurrentWindowId();
favs = control.jsonrpc('{"jsonrpc": "2.0", "method": "Favourites.AddFavourite", "params": {"title": "%s", "type": "window", "windowparameter": "%s", "thumbnail": "%s", "window": "%s"}, "id": 1}' % (title, url, thumbnail, 10025));
else:
favs = control.jsonrpc('{"jsonrpc": "2.0", "method": "Favourites.AddFavourite", "params": {"title": "%s", "type": "media", "path": "%s", "thumbnail": "%s"}, "id": 1}' % (title, url, thumbnail));
favs = json.loads(favs);
if 'result' in favs and favs['result'] != 'OK':
sendNotification(32506, 5000);
else:
control.refresh();
except Exception as inst:
logger.error(inst);
sendNotification(32506, 5000);
pass;
示例12: update
def update(self, query=None, info="true"):
if not query == None:
control.idle()
try:
items = []
season, episode = [], []
show = [os.path.join(self.library_folder, i) for i in control.listDir(self.library_folder)[0]]
for s in show:
try:
season += [os.path.join(s, i) for i in control.listDir(s)[0]]
except:
pass
for s in season:
try:
episode.append([os.path.join(s, i) for i in control.listDir(s)[1] if i.endswith(".strm")][-1])
except:
pass
for file in episode:
try:
file = control.openFile(file)
read = file.read()
read = read.encode("utf-8")
file.close()
if not read.startswith(sys.argv[0]):
raise Exception()
params = dict(urlparse.parse_qsl(read.replace("?", "")))
try:
tvshowtitle = params["tvshowtitle"]
except:
tvshowtitle = None
try:
tvshowtitle = params["show"]
except:
pass
if tvshowtitle == None or tvshowtitle == "":
raise Exception()
year, imdb, tvdb = params["year"], params["imdb"], params["tvdb"]
imdb = "tt" + re.sub("[^0-9]", "", str(imdb))
try:
tmdb = params["tmdb"]
except:
tmdb = "0"
try:
tvrage = params["tvrage"]
except:
tvrage = "0"
items.append(
{
"tvshowtitle": tvshowtitle,
"year": year,
"imdb": imdb,
"tmdb": tmdb,
"tvdb": tvdb,
"tvrage": tvrage,
}
)
except:
pass
items = [i for x, i in enumerate(items) if i not in items[x + 1 :]]
if len(items) == 0:
raise Exception()
except:
return
try:
lib = control.jsonrpc(
'{"jsonrpc": "2.0", "method": "VideoLibrary.GetTVShows", "params": {"properties" : ["imdbnumber", "title", "year"]}, "id": 1}'
)
lib = unicode(lib, "utf-8", errors="ignore")
lib = json.loads(lib)["result"]["tvshows"]
except:
return
if (
info == "true"
and not control.condVisibility("Window.IsVisible(infodialog)")
and not control.condVisibility("Player.HasVideo")
):
control.infoDialog(control.lang(30422).encode("utf-8"), time=10000000)
self.infoDialog = True
try:
control.makeFile(control.dataPath)
dbcon = database.connect(control.libcacheFile)
dbcur = dbcon.cursor()
dbcur.execute("CREATE TABLE IF NOT EXISTS tvshows (" "id TEXT, " "items TEXT, " "UNIQUE(id)" ");")
except:
return
#.........这里部分代码省略.........