Ejemplo n.º 1
0
 def play(self):
     log.debug("Playing %s .." % safe_str(self.program.title()))
     deps = to_kwargs(self, ['program', 'mythThumbnailCache', 'translator', 'settings', 'platform'])
     
     if self.streaming:
         if not self.canStream():
             return
         # Play via myth://
         p = StreamingPlayer(**deps)
         p.playRecording(NoOpCommercialSkipper(p, self.program, self.translator))
     else:
         # Play via local fs
         p = MountedPlayer(**deps)
         p.playRecording(NoOpCommercialSkipper(p, self.program, self.translator))
         del p 
Ejemplo n.º 2
0
    def watchLiveTV(self, channel):
        """
        Starts watching LiveTV for the given channel. Blocks until stopped, LiveTV ends, or error occurs.
        
        @param channel: Channel the couch potato would like to watch
        @return: Tuner picked to watch live tv
        @raise ServerException: When tuner not available
        """
        liveBuffer = max(int(self.settings.get('mythtv_minlivebufsize')), 1024)
        liveTimeout = max(int(self.settings.get('mythtv_tunewait')), 60)

        progress = xbmcgui.DialogProgress()
        progress.create('Watch TV', 'Finding tuner...')
        self.tuner = self._findAvailableTunerWithChannel(channel)

        progress.update(20, '', 'Tuning channel...')
        self.tuner.startLiveTV(channel.getChannelNumber())

        try:
            progress.update(40, '', 'Starting recording...')
            self.tuner.waitForRecordingToStart(timeout=liveTimeout)

            # callback to update progress dialog
            def updateBuffered(kb):
                progress.update(70, '', 'Buffering %sKB ...' % kb)

            progress.update(60, '', 'Buffering...')
            self.tuner.waitForRecordingWritten(numKB=liveBuffer,
                                               timeout=liveTimeout,
                                               callback=updateBuffered)

            progress.update(80, '', 'Starting player...')
            whatsPlaying = self.tuner.getWhatsPlaying()
            log.debug('Currently playing = %s' % whatsPlaying.getLocalPath())

            progress.close()
            livePlayer = FileLiveTvPlayer()
            livePlayer.addListener(self)
            livePlayer.playRecording(
                whatsPlaying,
                NoOpCommercialSkipper(livePlayer, whatsPlaying, None))
            # del livePlayer # induce GC so on* callbacks unregistered
        except:
            # If things went south after starting livetv, attempt to stop livetv
            try:
                if self.tuner.isRecording():
                    log.info('Stopping LiveTV because start live TV failed...')
                    self.tuner.stopLiveTV()
            except:
                log.exception('Trying to clean up after start liveTV failed')
            raise  # propagate

        return self.tuner
Ejemplo n.º 3
0
 def goPlayRecording(self):
     program=self.recordings[self.coverFlow.getSelectedPosition()]
     
     if self.settings.getBoolean('streaming_enabled'):
         if not self.canStream():
             return 
         p = StreamingPlayer(program=program, **to_kwargs(self, ['settings', 'mythThumbnailCache', 'translator', 'platform']))
         p.playRecording(NoOpCommercialSkipper())
     else:    
         p = MountedPlayer(program=program, **to_kwargs(self, ['mythThumbnailCache', 'translator', 'platform']))
         p.playRecording(TrackingCommercialSkipper(p, program, self.translator))
     del p