def record(self, mp=None): self.dispatcher.emit("recorder-starting") self.logger.info("Recording (current status: {})".format(self.status)) if self.status == ERROR_STATUS: try: self.__prepare() self.recorder.preview_and_record() except Exception as exc: self.dispatcher.emit("recorder-error", str(exc)) return False else: if self.status == INIT_STATUS: self.logger.warning( "Cancel recording: status error (in {})".format( self.status)) return False if self.status != PREVIEW_STATUS and not self.overlap: self.logger.info( "Cancel recording: it is already recording and not allow overlap" ) return False if self.status == PAUSED_STATUS: self.resume() if self.status == RECORDING_STATUS: self.recorder.stop() self.__close_mp() try: self.__prepare() self.recorder.preview_and_record() except Exception as exc: self.dispatcher.emit("recorder-error", str(exc)) return False else: self.recorder and self.recorder.record() if not self.current_mediapackage: self.current_mediapackage = mp or self.create_mp() self.logger.info("Recording to MP {}".format( self.current_mediapackage.getIdentifier())) self.current_mediapackage.status = mediapackage.RECORDING now = round_microseconds(datetime.utcnow()) self.current_mediapackage.setDate(now) self.current_mediapackage.setProperty('origin', self.conf.get_hostname()) self.current_mediapackage.setSpatial(self.conf.get_hostname()) self.__set_status(RECORDING_STATUS) self.dispatcher.emit("recorder-started", self.current_mediapackage.getIdentifier()) # Save current tmp data self.repo.save_current_mp_data(self.current_mediapackage, self.recorder.get_bins_info()) return True
def record(self, mp=None): self.dispatcher.emit("recorder-starting") self.logger.info("Recording (current status: {})".format(self.status)) if self.status == ERROR_STATUS: try: self.__prepare() self.recorder.preview_and_record() except Exception as exc: self.dispatcher.emit("recorder-error", str(exc)) return False else: if self.status == INIT_STATUS: self.logger.warning("Cancel recording: status error (in {})".format(self.status)) return False if self.status != PREVIEW_STATUS and not self.overlap: self.logger.info("Cancel recording: it is already recording and not allow overlap") return False if self.status == PAUSED_STATUS: self.resume() if self.status == RECORDING_STATUS: self.stop() self.record(mp) return True else: self.recorder and self.recorder.record() if not self.current_mediapackage: self.current_mediapackage = mp or self.create_mp() self.logger.info("Recording to MP {}".format(self.current_mediapackage.getIdentifier())) self.current_mediapackage.status = mediapackage.RECORDING now = round_microseconds(datetime.utcnow()) self.current_mediapackage.setDate(now) self.current_mediapackage.setProperty('origin', self.conf.get_hostname()) self.current_mediapackage.setSpatial(self.conf.get_hostname()) self.__set_status(RECORDING_STATUS) self.dispatcher.emit("recorder-started", self.current_mediapackage.getIdentifier()) # Save current tmp data self.repo.save_current_mp_data(self.current_mediapackage, self.recorder.get_bins_info()) return True