# HG changeset patch # User Amine Sehili # Date 1570046666 -3600 # Node ID 7852e8eb43255b9b474569a57ee16a159e3a0220 # Parent 231fa912b8090f5da4b1b5de00207c7ad14758fe Refactor StreamSaverWorker - Shorten __init__ - Make sure temporary wav file doesn't exist - Remove code used for debugging diff -r 231fa912b809 -r 7852e8eb4325 auditok/workers.py --- a/auditok/workers.py Wed Oct 02 20:29:51 2019 +0100 +++ b/auditok/workers.py Wed Oct 02 21:04:26 2019 +0100 @@ -178,21 +178,30 @@ self._cache_size = cache_size_sec * self._reader.sr * sample_size_bytes self._output_filename = filename self._export_format = _guess_audio_format(export_format, filename) + self._init_output_stream() + self._exported = False + self._cache = [] + self._total_cached = 0 + Worker.__init__(self, timeout=timeout) + + def _get_non_existent_filename(self): + filename = self._output_filename + ".wav" + i = 0 + while os.path.exists(filename): + i += 1 + filename = self._output_filename + "({}).wav".format(i) + return filename + + def _init_output_stream(self): if self._export_format != "wav": - self._tmp_output_filename = self._output_filename + ".wav" + self._tmp_output_filename = self._get_non_existent_filename() else: self._tmp_output_filename = self._output_filename - self._wfp = wave.open(self._tmp_output_filename, "wb") self._wfp.setframerate(self._reader.sr) self._wfp.setsampwidth(self._reader.sw) self._wfp.setnchannels(self._reader.ch) - self._exported = False - self._cache = [] - self._total_cached = 0 - Worker.__init__(self, timeout=timeout) - @property def sr(self): return self._reader.sampling_rate @@ -256,7 +265,6 @@ def save_stream(self): if self._exported: return - if self._export_format == "wav": self._exported = True return @@ -265,11 +273,9 @@ self._exported = True return try: - raise AudioEncodingError self._export_with_ffmpeg_or_avconv() except AudioEncodingError: try: - raise AudioEncodingError self._export_with_sox() except AudioEncodingError: warn_msg = "Couldn't save audio data in the desired format "