浏览代码

上传系统提示音接口

zhangdongming 1 年之前
父节点
当前提交
b87452dc35
共有 1 个文件被更改,包括 46 次插入2 次删除
  1. 46 2
      Controller/VoicePromptController.py

+ 46 - 2
Controller/VoicePromptController.py

@@ -25,9 +25,9 @@ class VoicePromptView(View):
         request.encoding = 'utf-8'
         request_dict = request.POST
         operation = kwargs.get('operation', None)
-        return self.validate(request_dict, operation)
+        return self.validate(request, request_dict, operation)
 
-    def validate(self, request_dict, operation):
+    def validate(self, request, request_dict, operation):
         token = request_dict.get('token', None)
         print(token)
         lang = request_dict.get('lang', None)
@@ -56,6 +56,8 @@ class VoicePromptView(View):
             return self.do_admin_update(token.userID, request_dict, response)
         elif operation == 'adminDelete':
             return self.do_admin_delete(token.userID, request_dict, response)
+        elif operation == 'uploadSystemVoice':
+            return self.upload_system_voice(request, request_dict, response)
         else:
             return response.json(404)
 
@@ -291,6 +293,48 @@ class VoicePromptView(View):
         else:
             return response.json(444)
 
+    @classmethod
+    def upload_system_voice(cls, request, request_dict, response):
+        """
+        上传系统个性化语音(系统默认以及算法小店默认提示音)
+        个性化语音有两个功能涉及使用一个是设备个性化语音,一个是算法小店语音
+        此接口上传个性化语音文件
+        参数algorithmType不为空或者不等于99(默认值)则系统保存的是算法小店的个性化语音
+        """
+        voice_file = request.FILES.get('voiceFile', None)
+        algorithm_type = int(request_dict.get('algorithmType', 99))
+        voice_title = request_dict.get('voiceTitle', None)
+        language = request_dict.get('language', None)
+
+        if not all([voice_file, algorithm_type, voice_title, language]):
+            return response.json(444)
+        try:
+            filename = CommonService.createOrderID()  # 文件名时间+随机数生成
+            file_ext = '.' + voice_file.name.split('.')[-1]
+            now_time = int(time.time())
+            key = 'voice_prompt/system/' + filename + file_ext
+            # 上传文件到阿里云OSS
+            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
+            bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
+            bucket.put_object(key=key, data=voice_file)
+
+            voice_type = 1 if algorithm_type < 99 else 0  # 算法小店提示音默认判断type=1才会显示
+            voice_vo = {
+                'title': voice_title,
+                'filename': filename + file_ext,
+                'add_time': now_time,
+                'classification': 0,
+                'algorithm_type': algorithm_type,
+                'language': language,
+                'type': voice_type
+            }
+            VoicePromptModel.objects.create(**voice_vo)
+
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
     def do_admin_add(self, userID, request_dict, response):
         own_perm = ModelService.check_perm(userID, 10)
         if not own_perm: