diff --git a/resources/lib/entrypoint/context.py b/resources/lib/entrypoint/context.py index 8dc7a3e9..1ff2238e 100644 --- a/resources/lib/entrypoint/context.py +++ b/resources/lib/entrypoint/context.py @@ -36,7 +36,7 @@ class Context(object): _selected_option = None def __init__(self, transcode=False, delete=False): - + try: self.kodi_id = sys.listitem.getVideoInfoTag().getDbId() or None self.media = self.get_media_type() @@ -51,7 +51,7 @@ class Context(object): self.kodi_id = xbmc.getInfoLabel('ListItem.DBID') self.media = xbmc.getInfoLabel('ListItem.DBTYPE') item_id = None - + if self.server or item_id: self.item = TheVoid('GetItem', {'ServerId': self.server, 'Id': item_id}).get() else: @@ -171,6 +171,6 @@ class Context(object): TheVoid('DeleteItem', {'ServerId': self.server, 'Id': self.item['Id']}) def transcode(self): - - item = TheVoid('GetItem', {'Id': self.item['Id'], 'ServerId': self.server}).get() - Actions(self.server).play(item, self.kodi_id, True) + filename = xbmc.getInfoLabel("ListItem.Filenameandpath") + filename += "&transcode=True" + xbmc.executebuiltin("PlayMedia(%s)" % filename) diff --git a/resources/lib/entrypoint/default.py b/resources/lib/entrypoint/default.py index 72253257..bf90f7e2 100644 --- a/resources/lib/entrypoint/default.py +++ b/resources/lib/entrypoint/default.py @@ -69,7 +69,7 @@ class Events(object): elif mode =='play': item = TheVoid('GetItem', {'Id': params['id'], 'ServerId': server}).get() - Actions(server).play(item, params.get('dbid'), playlist=params.get('playlist') == 'true') + Actions(server).play(item, params.get('dbid'), True if params.get('transcode') == 'True' else False, playlist=params.get('playlist') == 'true') elif mode == 'playlist': event('PlayPlaylist', {'Id': params['id'], 'ServerId': server}) @@ -163,7 +163,7 @@ def listing(): context.append((_(33133), "RunPlugin(plugin://plugin.video.emby/?mode=removelib&id=%s)" % view_id)) LOG.debug("--[ listing/%s/%s ] %s", node, label, path) - + if path: if xbmc.getCondVisibility('Window.IsActive(Pictures)') and node in ('photos', 'homevideos'): directory(label, path, artwork=artwork) @@ -259,7 +259,7 @@ def browse(media, view_id=None, folder=None, server_id=None): if folder is None and media in ('homevideos', 'movies', 'books', 'audiobooks'): return browse_subfolders(media, view_id, server_id) - + if folder and folder == 'firstletter': return browse_letters(media, view_id, server_id) @@ -486,7 +486,7 @@ def get_media_type(media): return "MusicArtist,MusicAlbum,Audio" def get_fanart(item_id, path, server_id=None): - + ''' Get extra fanart for listitems. This is called by skinhelper. Images are stored locally, due to the Kodi caching system. ''' @@ -571,7 +571,7 @@ def get_video_extras(item_id, path, server_id=None): """ def get_next_episodes(item_id, limit): - + ''' Only for synced content. ''' with Database('emby') as embydb: @@ -658,7 +658,7 @@ def create_listitem(item): label2 = "" li = xbmcgui.ListItem(title) li.setProperty('IsPlayable', "true") - + metadata = { 'Title': title, 'duration': str(item['runtime']/60), @@ -712,7 +712,7 @@ def create_listitem(item): metadata['CastAndRole'] = castandrole li.setLabel2(label2) - li.setInfo(type="Video", infoLabels=metadata) + li.setInfo(type="Video", infoLabels=metadata) li.setProperty('resumetime', str(item['resume']['position'])) li.setProperty('totaltime', str(item['resume']['total'])) li.setArt(item['art']) @@ -794,7 +794,7 @@ def get_themes(): items = {} server = TheVoid('GetServerAddress', {'ServerId': None}).get() - token = TheVoid('GetToken', {'ServerId': None}).get() + token = TheVoid('GetToken', {'ServerId': None}).get() for view in views: result = TheVoid('GetThemes', {'Type': "Video", 'Id': view}).get() diff --git a/resources/lib/webservice.py b/resources/lib/webservice.py index 9e338e28..e89a2803 100644 --- a/resources/lib/webservice.py +++ b/resources/lib/webservice.py @@ -84,11 +84,11 @@ class Request(object): class StoppableHttpServer(BaseHTTPServer.HTTPServer): - + ''' Http server that reacts to self.stop flag. ''' def serve_forever(self): - + ''' Handle one request at a time until stopped. ''' self.stop = False @@ -100,7 +100,7 @@ class StoppableHttpServer(BaseHTTPServer.HTTPServer): class StoppableHttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): - + ''' http request handler with QUIT stopping the server ''' raw_requestline = "" @@ -120,16 +120,16 @@ class StoppableHttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): self.server.stop = True def parse_request(self): - + ''' Modify here to workaround unencoded requests. - ''' + ''' retval = SimpleHTTPServer.SimpleHTTPRequestHandler.parse_request(self) self.request = Request(self.path, self.headers, self.rfile) - + return retval def do_HEAD(self): - + ''' Called on HEAD requests ''' self.handle_request(True) @@ -137,7 +137,7 @@ class StoppableHttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): return def get_params(self): - + ''' Get the params ''' try: @@ -153,15 +153,14 @@ class StoppableHttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): return params def handle_request(self, headers_only=False): - + ''' Send headers and reponse ''' try: params = self.get_params() LOG.info("Webservice called with params: %s", params) - - path = ("plugin://plugin.video.emby?mode=play&id=%s&dbid=%s&filename=%s" - % (params.get('Id'), params.get('KodiId'), params.get('Name'))) + path = ("plugin://plugin.video.emby?mode=play&id=%s&dbid=%s&filename=%s&transcode=%s" + % (params.get('Id'), params.get('KodiId'), params.get('Name'), params.get('transcode') or False)) self.send_response(200) self.send_header('Content-type', 'text/html') self.send_header('Content-Length', len(path)) @@ -176,7 +175,7 @@ class StoppableHttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): return def do_GET(self): - + ''' Called on GET requests ''' self.handle_request()