diff --git a/dsLightRag/Routes/SunoRoute.py b/dsLightRag/Routes/SunoRoute.py index 64dde133..3437c267 100644 --- a/dsLightRag/Routes/SunoRoute.py +++ b/dsLightRag/Routes/SunoRoute.py @@ -203,51 +203,53 @@ async def check_task_status(task_id: str = Query(..., description="音乐生成 task_info["audio_url"] = audio_url logger.info("音乐生成已完成!") logger.info(f"音频URL: {audio_url}") - - # 新增:下载音频文件并上传到OBS - try: - # 使用UUID生成唯一文件名 - unique_id = uuid.uuid4() - object_key = f"HuangHai/JiMeng/{unique_id}.mp3" + + # 新增:检查是否已经上传到OBS + if "obs_url" not in task_info or not task_info["obs_url"]: + # 新增:下载音频文件并上传到OBS + try: + # 使用UUID生成唯一文件名 + unique_id = uuid.uuid4() + object_key = f"HuangHai/JiMeng/{unique_id}.mp3" - # 临时文件保存路径 - temp_file_path = os.path.join(os.path.dirname(__file__), f"{unique_id}.mp3") + # 临时文件保存路径 + temp_file_path = os.path.join(os.path.dirname(__file__), f"{unique_id}.mp3") - # 下载URL内容到临时文件 - logger.info(f"开始下载URL内容: {audio_url}") - with requests.get(audio_url, stream=True, timeout=3600) as r: - r.raise_for_status() - with open(temp_file_path, 'wb') as f: - for chunk in r.iter_content(chunk_size=8192): - f.write(chunk) - logger.info(f"URL内容下载完成,保存至: {temp_file_path}") + # 下载URL内容到临时文件 + logger.info(f"开始下载URL内容: {audio_url}") + with requests.get(audio_url, stream=True, timeout=3600) as r: + r.raise_for_status() + with open(temp_file_path, 'wb') as f: + for chunk in r.iter_content(chunk_size=8192): + f.write(chunk) + logger.info(f"URL内容下载完成,保存至: {temp_file_path}") - # 上传文件到OBS - from Util.ObsUtil import ObsUploader # 导入ObsUploader - obs_uploader = ObsUploader() - logger.info(f"开始上传文件到OBS: {temp_file_path}\n对象键: {object_key}") + # 上传文件到OBS + from Util.ObsUtil import ObsUploader # 导入ObsUploader + obs_uploader = ObsUploader() + logger.info(f"开始上传文件到OBS: {temp_file_path}\n对象键: {object_key}") - # 正确处理元组返回值 - success, response_info = obs_uploader.upload_file( - file_path=temp_file_path, - object_key=object_key - ) + # 正确处理元组返回值 + success, response_info = obs_uploader.upload_file( + file_path=temp_file_path, + object_key=object_key + ) - if success: - # 构造OBS URL - from Config.Config import OBS_SERVER, OBS_BUCKET - obs_url = f"https://{OBS_BUCKET}.{OBS_SERVER}/{object_key}" - logger.info(f"文件上传成功,OBS URL: {obs_url}") - task_info["obs_url"] = obs_url - task_info["object_key"] = object_key - else: - error_msg = f"上传失败: {str(response_info)}" - logger.error(error_msg) - finally: - # 清理临时文件 - if os.path.exists(temp_file_path): - os.remove(temp_file_path) - logger.info(f"临时文件已删除: {temp_file_path}") + if success: + # 构造OBS URL + from Config.Config import OBS_SERVER, OBS_BUCKET + obs_url = f"https://{OBS_BUCKET}.{OBS_SERVER}/{object_key}" + logger.info(f"文件上传成功,OBS URL: {obs_url}") + task_info["obs_url"] = obs_url + task_info["object_key"] = object_key + else: + error_msg = f"上传失败: {str(response_info)}" + logger.error(error_msg) + finally: + # 清理临时文件 + if os.path.exists(temp_file_path): + os.remove(temp_file_path) + logger.info(f"临时文件已删除: {temp_file_path}") # 新增结束 else: diff --git a/dsLightRag/Routes/__pycache__/SunoRoute.cpython-310.pyc b/dsLightRag/Routes/__pycache__/SunoRoute.cpython-310.pyc index b4462c6f..46b5d8ce 100644 Binary files a/dsLightRag/Routes/__pycache__/SunoRoute.cpython-310.pyc and b/dsLightRag/Routes/__pycache__/SunoRoute.cpython-310.pyc differ diff --git a/dsLightRag/static/Suno/music_progress.html b/dsLightRag/static/Suno/music_progress.html index 91d3fc03..0a91ee28 100644 --- a/dsLightRag/static/Suno/music_progress.html +++ b/dsLightRag/static/Suno/music_progress.html @@ -22,6 +22,8 @@ .audio-player { width: 100%; margin-top: 20px; } .back-button { display: block; margin: 30px auto 0; padding: 12px 30px; background-color: #3498db; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 16px; transition: background 0.3s; text-align: center; text-decoration: none; max-width: 200px; } .back-button:hover { background-color: #2980b9; } + /* 添加按钮容器样式 */ + .button-container { display: flex; justify-content: center; gap: 15px; margin-top: 30px; } @@ -49,7 +51,9 @@ - 返回创作页 +