Fix widget navigating to entire TV show not working
This commit is contained in:
parent
79d87c5b01
commit
bb15f62648
5 changed files with 45 additions and 2 deletions
|
@ -4,7 +4,7 @@
|
|||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
<import addon="script.module.requests" version="2.9.1" />
|
||||
<import addon="plugin.video.plexkodiconnect.movies" version="2.0.0" />
|
||||
<import addon="plugin.video.plexkodiconnect.tvshows" version="2.0.0" />
|
||||
<import addon="plugin.video.plexkodiconnect.tvshows" version="2.0.1" />
|
||||
</requires>
|
||||
<extension point="xbmc.python.pluginsource" library="default.py">
|
||||
<provides>video audio image</provides>
|
||||
|
|
|
@ -57,6 +57,8 @@ class Monitor_Window(Thread):
|
|||
elif value.startswith('CONTEXT_menu?'):
|
||||
queue.put('dummy?mode=context_menu&%s'
|
||||
% value.replace('CONTEXT_menu?', ''))
|
||||
elif value.startswith('NAVIGATE'):
|
||||
queue.put(value.replace('NAVIGATE-', ''))
|
||||
else:
|
||||
raise NotImplementedError('%s not implemented' % value)
|
||||
else:
|
||||
|
|
|
@ -496,3 +496,11 @@ def ping():
|
|||
Pings the JSON RPC interface
|
||||
"""
|
||||
return JsonRPC('JSONRPC.Ping').execute()
|
||||
|
||||
|
||||
def activate_window(window, parameters):
|
||||
"""
|
||||
Pass the parameters as str/unicode to open the corresponding window
|
||||
"""
|
||||
return JsonRPC('GUI.ActivateWindow').execute({'window': window,
|
||||
'parameters': [parameters]})
|
||||
|
|
|
@ -223,6 +223,24 @@ class KodiDBMethods(object):
|
|||
self.cursor.execute('DELETE FROM stacktimes WHERE idFile = ?',
|
||||
(file[0],))
|
||||
|
||||
def show_id_from_path(self, path):
|
||||
"""
|
||||
Returns the idShow for path [unicode] or None
|
||||
"""
|
||||
self.cursor.execute('SELECT idPath FROM path WHERE strPath = ? LIMIT 1',
|
||||
(path, ))
|
||||
try:
|
||||
path_id = self.cursor.fetchone()[0]
|
||||
except TypeError:
|
||||
return
|
||||
query = 'SELECT idShow FROM tvshowlinkpath WHERE idPath = ? LIMIT 1'
|
||||
self.cursor.execute(query, (path_id, ))
|
||||
try:
|
||||
show_id = self.cursor.fetchone()[0]
|
||||
except TypeError:
|
||||
show_id = None
|
||||
return show_id
|
||||
|
||||
def remove_file(self, file_id):
|
||||
"""
|
||||
Removes the entry for file_id from the files table. Will also delete
|
||||
|
|
|
@ -7,6 +7,9 @@ from urlparse import parse_qsl
|
|||
import playback
|
||||
from context_entry import ContextMenu
|
||||
import state
|
||||
import json_rpc as js
|
||||
from pickler import pickle_me, Playback_Successful
|
||||
import kodidb_functions as kodidb
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
@ -20,7 +23,19 @@ class Playback_Starter(Thread):
|
|||
Processes new plays
|
||||
"""
|
||||
def triage(self, item):
|
||||
_, params = item.split('?', 1)
|
||||
try:
|
||||
_, params = item.split('?', 1)
|
||||
except ValueError:
|
||||
# e.g. when plugin://...tvshows is called for entire season
|
||||
with kodidb.GetKodiDB('video') as kodi_db:
|
||||
show_id = kodi_db.show_id_from_path(item)
|
||||
if show_id:
|
||||
js.activate_window('videos',
|
||||
'videodb://tvshows/titles/%s' % show_id)
|
||||
else:
|
||||
LOG.error('Could not find tv show id for %s', item)
|
||||
pickle_me(Playback_Successful())
|
||||
return
|
||||
params = dict(parse_qsl(params))
|
||||
mode = params.get('mode')
|
||||
LOG.debug('Received mode: %s, params: %s', mode, params)
|
||||
|
|
Loading…
Reference in a new issue