import logging import os.path import subprocess import tempfile import api.base from service.tool import audio_normalize logger = logging.getLogger(__name__) # noinspection PyAbstractClass class AudioNormalizerHandler(api.base.ApiHandler): async def post(self): try: import uuid uploaded_file = self.request.files['srcaudio'][0] file_data = uploaded_file['body'] full_filename = uploaded_file['filename'] output_filename = await audio_normalize(full_filename=full_filename, file_data=file_data) if not output_filename: raise SystemError() with open(output_filename, 'rb') as f: self.set_header('Content-Type', 'audio/wav') self.set_header('Content-Disposition', 'attachment; filename="converted_audio.wav"') self.write(f.read()) await self.flush() os.remove(output_filename) except Exception as e: logger.exception(e) self.set_status(500) self.write({ "code": 500, "msg": "system_error", "data": None })