示例#1
0
    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()
示例#2
0
    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)
示例#3
0
    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)