# HG changeset patch # User Amine Sehili # Date 1559406533 -3600 # Node ID f3f8e2c9274d61c61d94d329e090a2f89ba65e6c # Parent a8a710547553febd17b50db228b2c59ffbc9d2a9 Raise AudioEncodingError if encoding command fails diff -r a8a710547553 -r f3f8e2c9274d auditok/workers.py --- a/auditok/workers.py Tue May 28 20:19:05 2019 +0100 +++ b/auditok/workers.py Sat Jun 01 17:28:53 2019 +0100 @@ -35,11 +35,15 @@ def _run_subprocess(command): - with subprocess.Popen( - command, stdin=open(os.devnull, "rb"), stdout=subprocess.PIPE - ) as proc: - stdout, stderr = proc.communicate() - return proc.returncode, stdout, stderr + try: + with subprocess.Popen( + command, stdin=open(os.devnull, "rb"), stdout=subprocess.PIPE + ) as proc: + stdout, stderr = proc.communicate() + return proc.returncode, stdout, stderr + except: + err_msg = "Can not export audio with command: {}".format(command) + raise AudioEncodingError(err_msg) class Worker(Thread): @@ -253,14 +257,17 @@ self._export_with_ffmpeg_or_avconv() except AudioEncodingError: try: - self._save_with_sox() + self._export_with_sox() except AudioEncodingError: warn_msg = "Couldn't save data in the required format '{}'" print(warn_msg.format(self._export_format), file=sys.stderr) print("Saving stream as a wave file...", file=sys.stderr) self._output_filename += ".wav" self._export_wave() - print("Audio data saved to '{}'".format(self._output_filename)) + print( + "Audio data saved to '{}'".format(self._output_filename), + file=sys.stderr, + ) finally: self._exported = True return self._output_filename @@ -318,7 +325,6 @@ self._tmp_output_filename, self._output_filename, ] - print(" ".join(command)) returncode, stdout, stderr = _run_subprocess(command) if returncode != 0: raise AudioEncodingError(stderr)