1.Refactor task.py to encapsulate separable functions.

2.Add a new subtitle API.
This commit is contained in:
yyhhyyyyyy
2024-07-23 17:00:23 +08:00
parent 6d520a4266
commit 17b4a61e64
3 changed files with 383 additions and 194 deletions

View File

@@ -1,12 +1,16 @@
import warnings
from enum import Enum
from typing import Any, Optional, List
from typing import Any, List, Optional
import pydantic
from pydantic import BaseModel
import warnings
# 忽略 Pydantic 的特定警告
warnings.filterwarnings("ignore", category=UserWarning, message="Field name.*shadows an attribute in parent.*")
warnings.filterwarnings(
"ignore",
category=UserWarning,
message="Field name.*shadows an attribute in parent.*",
)
class VideoConcatMode(str, Enum):
@@ -61,7 +65,6 @@ class MaterialInfo:
# # "male-zh-TW-YunJheNeural",
#
# # en-US
#
# "female-en-US-AnaNeural",
# "female-en-US-AriaNeural",
# "female-en-US-AvaNeural",
@@ -93,6 +96,7 @@ class VideoParams(BaseModel):
"stroke_width": 1.5
}
"""
video_subject: str
video_script: str = "" # 用于生成视频的脚本
video_terms: Optional[str | list] = None # 用于生成视频的关键词
@@ -126,6 +130,38 @@ class VideoParams(BaseModel):
paragraph_number: Optional[int] = 1
class SubtitleRequest(BaseModel):
video_script: str
video_language: Optional[str] = ""
voice_name: Optional[str] = "zh-CN-XiaoxiaoNeural-Female"
voice_volume: Optional[float] = 1.0
voice_rate: Optional[float] = 1.2
bgm_type: Optional[str] = "random"
bgm_file: Optional[str] = ""
bgm_volume: Optional[float] = 0.2
subtitle_position: Optional[str] = "bottom"
font_name: Optional[str] = "STHeitiMedium.ttc"
text_fore_color: Optional[str] = "#FFFFFF"
text_background_color: Optional[str] = "transparent"
font_size: int = 60
stroke_color: Optional[str] = "#000000"
stroke_width: float = 1.5
video_source: Optional[str] = "local"
subtitle_enabled: Optional[str] = "true"
class AudioRequest(BaseModel):
video_script: str
video_language: Optional[str] = ""
voice_name: Optional[str] = "zh-CN-XiaoxiaoNeural-Female"
voice_volume: Optional[float] = 1.0
voice_rate: Optional[float] = 1.2
bgm_type: Optional[str] = "random"
bgm_file: Optional[str] = ""
bgm_volume: Optional[float] = 0.2
video_source: Optional[str] = "local"
class VideoScriptParams:
"""
{
@@ -134,6 +170,7 @@ class VideoScriptParams:
"paragraph_number": 1
}
"""
video_subject: Optional[str] = "春天的花海"
video_language: Optional[str] = ""
paragraph_number: Optional[int] = 1
@@ -147,14 +184,17 @@ class VideoTermsParams:
"amount": 5
}
"""
video_subject: Optional[str] = "春天的花海"
video_script: Optional[str] = "春天的花海,如诗如画般展现在眼前。万物复苏的季节里,大地披上了一袭绚丽多彩的盛装。金黄的迎春、粉嫩的樱花、洁白的梨花、艳丽的郁金香……"
video_script: Optional[str] = (
"春天的花海,如诗如画般展现在眼前。万物复苏的季节里,大地披上了一袭绚丽多彩的盛装。金黄的迎春、粉嫩的樱花、洁白的梨花、艳丽的郁金香……"
)
amount: Optional[int] = 5
class BaseResponse(BaseModel):
status: int = 200
message: Optional[str] = 'success'
message: Optional[str] = "success"
data: Any = None
@@ -189,9 +229,7 @@ class TaskResponse(BaseResponse):
"example": {
"status": 200,
"message": "success",
"data": {
"task_id": "6c85c8cc-a77a-42b9-bc30-947815aa0558"
}
"data": {"task_id": "6c85c8cc-a77a-42b9-bc30-947815aa0558"},
},
}
@@ -210,8 +248,8 @@ class TaskQueryResponse(BaseResponse):
],
"combined_videos": [
"http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4"
]
}
],
},
},
}
@@ -230,8 +268,8 @@ class TaskDeletionResponse(BaseResponse):
],
"combined_videos": [
"http://127.0.0.1:8080/tasks/6c85c8cc-a77a-42b9-bc30-947815aa0558/combined-1.mp4"
]
}
],
},
},
}
@@ -244,7 +282,7 @@ class VideoScriptResponse(BaseResponse):
"message": "success",
"data": {
"video_script": "春天的花海,是大自然的一幅美丽画卷。在这个季节里,大地复苏,万物生长,花朵争相绽放,形成了一片五彩斑斓的花海..."
}
},
},
}
@@ -255,9 +293,7 @@ class VideoTermsResponse(BaseResponse):
"example": {
"status": 200,
"message": "success",
"data": {
"video_terms": ["sky", "tree"]
}
"data": {"video_terms": ["sky", "tree"]},
},
}
@@ -273,10 +309,10 @@ class BgmRetrieveResponse(BaseResponse):
{
"name": "output013.mp3",
"size": 1891269,
"file": "/MoneyPrinterTurbo/resource/songs/output013.mp3"
"file": "/MoneyPrinterTurbo/resource/songs/output013.mp3",
}
]
}
},
},
}
@@ -287,8 +323,6 @@ class BgmUploadResponse(BaseResponse):
"example": {
"status": 200,
"message": "success",
"data": {
"file": "/MoneyPrinterTurbo/resource/songs/example.mp3"
}
"data": {"file": "/MoneyPrinterTurbo/resource/songs/example.mp3"},
},
}