feat: 添加语言参数支持以处理多语言场景
在播客生成流程中添加 lang 参数,用于支持多语言场景。修改包括: - 在请求接口中添加 lang 字段 - 在 API 调用中传递 lang 参数 - 在服务端处理中接收并使用 lang 参数 - 简化客户端请求参数结构
This commit is contained in:
@@ -212,6 +212,7 @@ async def _generate_podcast_task(
|
||||
callback_url: Optional[str] = None, # 新增回调地址参数
|
||||
output_language: Optional[str] = None,
|
||||
usetime: Optional[str] = None,
|
||||
lang: Optional[str] = None,
|
||||
):
|
||||
task_results[auth_id][task_id]["status"] = TaskStatus.RUNNING
|
||||
try:
|
||||
@@ -266,6 +267,7 @@ async def _generate_podcast_task(
|
||||
"timestamp": int(time.time()),
|
||||
"status": task_results[auth_id][task_id]["status"],
|
||||
"usetime": usetime,
|
||||
"lang": lang,
|
||||
}
|
||||
|
||||
MAX_RETRIES = 3 # 定义最大重试次数
|
||||
@@ -307,6 +309,7 @@ async def generate_podcast_submission(
|
||||
callback_url: Optional[str] = Form(None),
|
||||
output_language: Optional[str] = Form(None),
|
||||
usetime: Optional[str] = Form(None),
|
||||
lang: Optional[str] = Form(None),
|
||||
):
|
||||
# 1. 验证 tts_provider
|
||||
if tts_provider not in tts_provider_map:
|
||||
@@ -327,7 +330,6 @@ async def generate_podcast_submission(
|
||||
"timestamp": time.time(),
|
||||
"callback_url": callback_url, # 存储回调地址
|
||||
"auth_id": auth_id, # 存储 auth_id
|
||||
"usetime": usetime,
|
||||
}
|
||||
|
||||
background_tasks.add_task(
|
||||
@@ -344,7 +346,8 @@ async def generate_podcast_submission(
|
||||
tts_provider,
|
||||
callback_url,
|
||||
output_language,
|
||||
usetime
|
||||
usetime,
|
||||
lang,
|
||||
)
|
||||
|
||||
return {"message": "Podcast generation started.", "task_id": task_id}
|
||||
|
||||
@@ -30,8 +30,7 @@ export async function GET(request: NextRequest) { // GET 函数接收 request
|
||||
}
|
||||
|
||||
export async function PUT(request: NextRequest) {
|
||||
const { task_id, auth_id, timestamp, status, usetime } = await request.json();
|
||||
const lang = getLanguageFromRequest(request); // 获取语言
|
||||
const { task_id, auth_id, timestamp, status, usetime, lang } = await request.json();
|
||||
const { t } = await getTranslation(lang, 'errors'); // 初始化翻译
|
||||
try {
|
||||
if(status !== 'completed') {
|
||||
|
||||
@@ -10,7 +10,7 @@ const API_BASE_URL = process.env.NEXT_PUBLIC_PODCAST_API_BASE_URL || 'http://192
|
||||
* 启动播客生成任务
|
||||
*/
|
||||
export async function startPodcastGenerationTask(body: PodcastGenerationRequest, userId: string, lang: string): Promise<ApiResponse<PodcastGenerationResponse>> {
|
||||
|
||||
body.lang = lang;
|
||||
try {
|
||||
const response = await fetch(`${API_BASE_URL}/generate-podcast`, {
|
||||
method: 'POST',
|
||||
|
||||
@@ -10,6 +10,7 @@ export interface PodcastGenerationRequest {
|
||||
callback_url?: string; // 固定值
|
||||
usetime?: string; // 时长 来自选择
|
||||
output_language?: string; // 语言 来自设置
|
||||
lang?: string; // 子路径表示语言
|
||||
}
|
||||
|
||||
export interface PodcastGenerationResponse {
|
||||
|
||||
Reference in New Issue
Block a user