changeset 284:7852e8eb4325

Refactor StreamSaverWorker - Shorten __init__ - Make sure temporary wav file doesn't exist - Remove code used for debugging
author Amine Sehili <amine.sehili@gmail.com>
date Wed, 02 Oct 2019 21:04:26 +0100
parents 231fa912b809
children 5515a3fb85d4
files auditok/workers.py
diffstat 1 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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 "