Example #1
0
    def Record(self, rec_prog):
        logger.log(9, 'Record(rec_prog=%r)', rec_prog)
        frequency = self.fc.chanSet(str(rec_prog.tunerid), False,
                                    'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)
        rec_prog.filename = os.path.splitext(
            tv_util.getProgFilename(rec_prog))[0] + '.mpeg'
        logger.debug('filename=%r', rec_prog.filename)

        self.vg = self.fc.getVideoGroup(rec_prog.tunerid, False)

        cl_options = {
            'channel': rec_prog.tunerid,
            'frequency': frequency,
            'frequencyMHz': float(frequency) / 1000,
            'filename': rec_prog.filename,
            'base_filename': os.path.basename(rec_prog.filename),
            'title': rec_prog.title,
            'sub-title': rec_prog.sub_title,
            'seconds': rec_prog.rec_duration,
            'start': rec_prog.start,
            'pdc-start': rec_prog.pdc_start,
        }

        logger.debug('cl_options=%r', cl_options)
        logger.debug('chan_index=%r', self.fc.chan_index)
        logger.debug('vg.vdev=%r', self.vg.vdev)
        logger.debug('vg.vvbi=%r', self.vg.vvbi)
        pagenum = None
        try:
            pagenum = int(config.TV_CHANNELS[self.fc.chan_index][5])
        except:
            pagenum = None
        logger.debug('pagenum=%r', pagenum)

        if pagenum:
            # there is a bug in vbi2srt that causes out of sync subtitles when VPS is used
            self.rec_command = \
                'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s --page=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start, pagenum)
        else:
            self.rec_command = \
                'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start)
        logger.debug('rec_command=%r', self.rec_command)

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.command = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()
Example #2
0
    def Record(self, rec_prog):
        logger.log( 9, 'Record(rec_prog=%r)', rec_prog)
        frequency = self.fc.chanSet(str(rec_prog.tunerid), False, 'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)
        rec_prog.filename = os.path.splitext(tv_util.getProgFilename(rec_prog))[0] + '.mpeg'
        logger.debug('filename=%r', rec_prog.filename)

        self.vg = self.fc.getVideoGroup(rec_prog.tunerid, False)

        cl_options = { 'channel'  : rec_prog.tunerid,
                       'frequency' : frequency,
                       'frequencyMHz' : float(frequency) / 1000,
                       'filename' : rec_prog.filename,
                       'base_filename' : os.path.basename(rec_prog.filename),
                       'title' : rec_prog.title,
                       'sub-title' : rec_prog.sub_title,
                       'seconds'  : rec_prog.rec_duration,
                       'start'  : rec_prog.start,
                       'pdc-start'  : rec_prog.pdc_start,
        }

        logger.debug('cl_options=%r', cl_options)
        logger.debug('chan_index=%r', self.fc.chan_index)
        logger.debug('vg.vdev=%r', self.vg.vdev)
        logger.debug('vg.vvbi=%r', self.vg.vvbi)
        pagenum = None;
        try:
            pagenum = int(config.TV_CHANNELS[self.fc.chan_index][5])
        except:
            pagenum = None;
        logger.debug('pagenum=%r', pagenum)

        if pagenum:
            # there is a bug in vbi2srt that causes out of sync subtitles when VPS is used
            self.rec_command = \
                'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s --page=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start, pagenum)
        else:
            self.rec_command = \
                'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start)
        logger.debug('rec_command=%r', self.rec_command)

        self.thread.mode     = 'record'
        self.thread.prog     = rec_prog
        self.thread.command  = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()
    def Record(self, rec_prog):
        frequency = self.fc.chanSet(str(rec_prog.tunerid), False,
                                    'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)
        rec_prog.filename = os.path.splitext(
            tv_util.getProgFilename(rec_prog))[0] + '.mpeg'
        if DEBUG: print('Recorder::Record:filename %s' % rec_prog.filename)

        cl_options = {
            'channel': rec_prog.tunerid,
            'frequency': frequency,
            'filename': rec_prog.filename,
            'base_filename': os.path.basename(rec_prog.filename),
            'title': rec_prog.title,
            'sub-title': rec_prog.sub_title,
            'seconds': rec_prog.rec_duration,
            'start': rec_prog.start,
            'pdc-start': rec_prog.pdc_start,
        }

        self.vg = self.fc.getVideoGroup(rec_prog.tunerid, False)
        if DEBUG: print('Recorder::Record:cl_options %s' % cl_options)
        if DEBUG: print('Recorder::Record:chan_index %s' % self.fc.chan_index)
        if DEBUG: print('Recorder::Record:vg.vdev %s' % self.vg.vdev)
        if DEBUG: print('Recorder::Record:vg.vvbi %s' % self.vg.vvbi)
        pagenum = None
        try:
            pagenum = int(config.TV_CHANNELS[self.fc.chan_index][5])
        except:
            pagenum = None
        if DEBUG: print('Recorder::Record:pagenum "%s"' % pagenum)
        self.rec_command = config.VCR_CMD % cl_options
        if pagenum == None:
            self.rec_command = 'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start)
        else:
            # there is a bug in vbi2srt that causes out of sync subtitles when VPS is used
            self.rec_command = 'vbi2srt --verbose --video-in=%s --video-out=%s --vbi-device=%s --seconds=%s --vps=%s --page=%s' % \
                (self.vg.vdev, rec_prog.filename, self.vg.vvbi, rec_prog.rec_duration, rec_prog.pdc_start, pagenum)

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.command = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()

        if DEBUG: print('Recorder::Record: %s' % self.rec_command)
Example #4
0
    def Record(self, rec_prog):
        logger.debug('Record(rec_prog=%r)', rec_prog)
        vg = self.fc.getVideoGroup(rec_prog.tunerid, False)

        frequency = self.fc.chanSet(str(rec_prog.tunerid), False, 'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)

        cl_options = { 'channel'  : rec_prog.tunerid,
                       'frequency' : frequency,
                       'frequencyMHz' : float(frequency) / 1000,
                       'filename' : rec_prog.filename,
                       'base_filename' : os.path.basename(rec_prog.filename),
                       'title' : rec_prog.title,
                       'sub-title' : rec_prog.sub_title,
                       'seconds'  : rec_prog.rec_duration,
                       'start'  : rec_prog.start,
                       'pdc-start'  : rec_prog.pdc_start,
                       'group-type' : vg.group_type
        }

        if isinstance(config.VCR_CMD, str) or isinstance(config.VCR_CMD, unicode):
            self.rec_command = config.VCR_CMD % cl_options
        elif isinstance(config.VCR_CMD, list) or isinstance(config.VCR_CMD, tuple):
            self.rec_command = []
            for arg in config.VCR_CMD:
                self.rec_command.append(arg % cl_options)

        self.thread.mode     = 'record'
        self.thread.prog     = rec_prog
        self.thread.command  = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()

        logger.debug('Recorder::Record: %s', self.rec_command)
Example #5
0
    def Record(self, rec_prog):
        logger.debug('Record(rec_prog=%r)', rec_prog)
        vg = self.fc.getVideoGroup(rec_prog.tunerid, False)

        frequency = self.fc.chanSet(str(rec_prog.tunerid), False, 'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)

        cl_options = { 'channel'  : rec_prog.tunerid,
                       'frequency' : frequency,
                       'frequencyMHz' : float(frequency) / 1000,
                       'filename' : rec_prog.filename,
                       'base_filename' : os.path.basename(rec_prog.filename),
                       'title' : rec_prog.title,
                       'sub-title' : rec_prog.sub_title,
                       'seconds'  : rec_prog.rec_duration,
                       'start'  : rec_prog.start,
                       'pdc-start'  : rec_prog.pdc_start,
                       'group-type' : vg.group_type
        }

        if isinstance(config.VCR_CMD, str) or isinstance(config.VCR_CMD, unicode):
            self.rec_command = config.VCR_CMD % cl_options
        elif isinstance(config.VCR_CMD, list) or isinstance(config.VCR_CMD, tuple):
            self.rec_command = []
            for arg in config.VCR_CMD:
                self.rec_command.append(arg % cl_options)

        self.thread.mode     = 'record'
        self.thread.prog     = rec_prog
        self.thread.command  = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()

        logger.debug('Recorder::Record: %s', self.rec_command)
Example #6
0
    def Record(self, rec_prog):
        frequency = self.fc.chanSet(str(rec_prog.tunerid), False,
                                    'record plugin')

        rec_prog.filename = tv_util.getProgFilename(rec_prog)

        cl_options = {
            'channel': rec_prog.tunerid,
            'frequency': frequency,
            'frequencyMHz': float(frequency) / 1000,
            'filename': rec_prog.filename,
            'base_filename': os.path.basename(rec_prog.filename),
            'title': rec_prog.title,
            'sub-title': rec_prog.sub_title,
            'seconds': rec_prog.rec_duration
        }

        self.rec_command = config.VCR_CMD % cl_options

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.command = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()

        if DEBUG: print('Recorder::Record: %s' % self.rec_command)
Example #7
0
    def Record(self, rec_prog):
        logger.log( 9, 'Record(rec_prog=%r)', rec_prog)
        # It is safe to ignore config.TV_RECORD_FILE_SUFFIX here.
        rec_prog.filename = os.path.splitext(tv_util.getProgFilename(rec_prog))[0] + '.mpeg'

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.mode_flag.set()
        logger.info('Recorder::Record: %s', rec_prog)
Example #8
0
    def Record(self, rec_prog):
        logger.log(9, 'Record(rec_prog=%r)', rec_prog)
        # It is safe to ignore config.TV_RECORD_FILE_SUFFIX here.
        rec_prog.filename = os.path.splitext(
            tv_util.getProgFilename(rec_prog))[0] + '.mpeg'

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.mode_flag.set()
        logger.info('Recorder::Record: %s', rec_prog)
Example #9
0
    def Record(self, rec_prog):
        _debug_('Record(rec_prog=%r)' % (rec_prog), 2)
        # It is safe to ignore config.TV_RECORD_FILE_SUFFIX here.
        rec_prog.filename = os.path.splitext(
            tv_util.getProgFilename(rec_prog))[0] + '.mpeg'

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.mode_flag.set()
        _debug_('Recorder::Record: %s' % rec_prog, DINFO)
Example #10
0
    def Record(self, rec_prog):
        # It is safe to ignore config.TV_RECORDFILE_SUFFIX here.
        rec_prog.filename = os.path.splitext(
            tv_util.getProgFilename(rec_prog))[0] + '.mpeg'

        self.thread.mode = 'record'
        self.thread.prog = rec_prog
        self.thread.mode_flag.set()

        if DEBUG: print('Recorder::Record: %s' % rec_prog)
Example #11
0
    def run(self):
        """
        Thread loop.
        """
        while 1:
            if DEBUG: print('Record_Thread::run: mode=%s' % self.mode)
            if self.mode == 'idle':
                self.mode_flag.wait()
                self.mode_flag.clear()

            elif self.mode == 'record':
                rc.post_event(Event('RECORD_START', arg=self.prog))
                if DEBUG: print('Record_Thread::run: started recording')

                prog = self.prog
                filename = tv_util.getProgFilename(prog)
                vg = self.fc.getVideoGroup(prog.channel_id, False)
                adapter = int(vg.vdev)
                seconds = prog.rec_duration
                # Select the channel and start streaming to the file.
                self.manager.select(adapter, prog.tunerid)
                self.manager.enable_file_output(adapter, filename)

                while (self.mode == 'record') and (seconds > 0):
                    seconds -= 0.5
                    time.sleep(0.5)

                # Close the file
                self.manager.disable_output(adapter)

                rc.post_event(Event('RECORD_STOP', arg=self.prog))
                if DEBUG: print('Record_Thread::run: finished recording')

                self.mode = 'idle'
            else:
                self.mode = 'idle'
            time.sleep(0.5)
Example #12
0
    def run(self):
        """
        Thread loop.
        """
        while 1:
            if DEBUG: print('Record_Thread::run: mode=%s' % self.mode)
            if self.mode == 'idle':
                self.mode_flag.wait()
                self.mode_flag.clear()

            elif self.mode == 'record':
                rc.post_event(Event('RECORD_START', arg=self.prog))
                if DEBUG: print('Record_Thread::run: started recording')

                prog = self.prog
                filename = tv_util.getProgFilename(prog)
                vg = self.fc.getVideoGroup(prog.tunerid, False)
                adapter = vg.vdev
                seconds = prog.rec_duration
                # Select the channel and start streaming to the file.
                self.manager.select(adapter, prog.tunerid)
                self.manager.enable_file_output(adapter,filename)

                while (self.mode == 'record') and (seconds > 0):
                    seconds -= 0.5
                    time.sleep(0.5)

                # Close the file
                self.manager.disable_output(adapter)

                rc.post_event(Event('RECORD_STOP', arg=self.prog))
                if DEBUG: print('Record_Thread::run: finished recording')

                self.mode = 'idle'
            else:
                self.mode = 'idle'
            time.sleep(0.5)
Example #13
0
    def Record(self, rec_prog):
        logger.debug("Record(rec_prog=%r)", rec_prog)
        vg = self.fc.getVideoGroup(rec_prog.tunerid, False)

        frequency = self.fc.chanSet(str(rec_prog.tunerid), False, "record plugin")

        rec_prog.filename = tv_util.getProgFilename(rec_prog)

        cl_options = {
            "channel": rec_prog.tunerid,
            "frequency": frequency,
            "frequencyMHz": float(frequency) / 1000,
            "filename": rec_prog.filename,
            "base_filename": os.path.basename(rec_prog.filename),
            "title": rec_prog.title,
            "sub-title": rec_prog.sub_title,
            "seconds": rec_prog.rec_duration,
            "start": rec_prog.start,
            "pdc-start": rec_prog.pdc_start,
            "group-type": vg.group_type,
        }

        if isinstance(config.VCR_CMD, str) or isinstance(config.VCR_CMD, unicode):
            self.rec_command = config.VCR_CMD % cl_options
        elif isinstance(config.VCR_CMD, list) or isinstance(config.VCR_CMD, tuple):
            self.rec_command = []
            for arg in config.VCR_CMD:
                self.rec_command.append(arg % cl_options)

        self.thread.mode = "record"
        self.thread.prog = rec_prog
        self.thread.command = self.rec_command
        self.thread.autokill = float(rec_prog.rec_duration + 10)
        self.thread.mode_flag.set()

        logger.debug("Recorder::Record: %s", self.rec_command)