def settingsButtonClicked(self): if not self.video.mediaChoice: playerObject = plexplayer.PlexPlayer(self.video) playerObject.build() playersettings.showDialog(video=self.video, non_playback=True) self.setAudioAndSubtitleInfo()
def settingsButtonClicked(self): mli = self.episodeListControl.getSelectedItem() if not mli: return episode = mli.dataSource if not episode.mediaChoice: playerObject = plexplayer.PlexPlayer(episode) playerObject.build() playersettings.showDialog(video=episode, non_playback=True) self.setItemAudioAndSubtitleInfo(episode, mli)
def _playVideo(self, offset=0, seeking=0, force_update=False, playerObject=None): self.trigger('new.video', video=self.video) self.trigger('change.background', url=self.video.defaultArt.asTranscodedImageURL( 1920, 1080, opacity=60, background=colors.noAlpha.Background)) try: if not playerObject: self.playerObject = plexplayer.PlexPlayer( self.video, offset, forceUpdate=force_update) self.playerObject.build() self.playerObject = self.playerObject.getServerDecision() except plexplayer.DecisionFailure as e: util.showNotification(e.reason, header=util.T(32448, 'Playback Failed!')) return except: util.ERROR(notify=True) return meta = self.playerObject.metadata # Kodi 19 will try to look for subtitles in the directory containing the file. '/' and `/file.mkv` both point # to the file, and Kodi will happily try to read the whole file without recognizing it isn't a directory. # To get around that, we omit the filename here since it is unnecessary. url = meta.streamUrls[0].replace("file.mkv", "") bifURL = self.playerObject.getBifUrl() util.DEBUG_LOG('Playing URL(+{1}ms): {0}{2}'.format( plexnetUtil.cleanToken(url), offset, bifURL and ' - indexed' or '')) self.stopAndWait( ) # Stop before setting up the handler to prevent player events from causing havoc self.handler.setup(self.video.duration.asInt(), offset, bifURL, title=self.video.grandparentTitle, title2=self.video.title, seeking=seeking) if meta.isTranscoded: self.handler.mode = self.handler.MODE_RELATIVE else: if offset: self.handler.seekOnStart = meta.playStart * 1000 self.handler.mode = self.handler.MODE_ABSOLUTE url = util.addURLParams( url, { 'X-Plex-Client-Profile-Name': 'Chrome', 'X-Plex-Client-Identifier': plexapp.util.INTERFACE.getGlobal('clientIdentifier') }) li = xbmcgui.ListItem(self.video.title, path=url) vtype = self.video.type if self.video.type in ( 'movie', 'episode', 'musicvideo') else 'video' li.setInfo( 'video', { 'mediatype': vtype, 'title': self.video.title, 'originaltitle': self.video.title, 'tvshowtitle': self.video.grandparentTitle, 'episode': self.video.index.asInt(), 'season': self.video.parentIndex.asInt(), 'year': self.video.year.asInt(), 'plot': self.video.summary }) li.setArt({ 'poster': self.video.defaultThumb.asTranscodedImageURL(347, 518), 'fanart': self.video.defaultArt.asTranscodedImageURL(1920, 1080), 'thumb': self.video.defaultThumb.asTranscodedImageURL(256, 256), }) self.play(url, li)