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): 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)
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)
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)
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)
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)
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)
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)
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)
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)
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)