|
|
@@ -494,7 +494,13 @@ class AnimeService
|
|
|
if (!$episode) Utils::throwError('20003:该剧集不存在!');
|
|
|
$episode = (array)$episode;
|
|
|
$episode['roles'] = json_decode($episode['roles'], true);
|
|
|
+ foreach($episode['roles'] as &$item) {
|
|
|
+ if (isset($item['pic_prompt']) && mb_substr($item['pic_prompt'], 0, 11) != '写实。全景,正面拍摄。') $item['pic_prompt'] = '写实。全景,正面拍摄。'.$item['pic_prompt'];
|
|
|
+ }
|
|
|
$episode['scenes'] = json_decode($episode['scenes'], true);
|
|
|
+ foreach($episode['scenes'] as &$item) {
|
|
|
+ if (isset($item['pic_prompt']) && mb_substr($item['pic_prompt'], 0, 3) != '写实。') $item['pic_prompt'] = '写实。'.$item['pic_prompt'];
|
|
|
+ }
|
|
|
|
|
|
// 获取分镜信息
|
|
|
$segments = DB::table('mp_episode_segments')->where('anime_id', $anime_id)->where('episode_id', getProp($episode, 'episode_id'))->orderBy('segment_number')
|
|
|
@@ -1149,24 +1155,27 @@ class AnimeService
|
|
|
->where('anime_id', $anime_id)
|
|
|
->where('id', $episode_id)
|
|
|
->where('is_default', 1)
|
|
|
- ->select('id as episode_id', 'anime_id', 'episode_number')
|
|
|
+ ->select('id as episode_id', 'anime_id', 'episode_number', 'roles', 'scenes', 'image_model')
|
|
|
->first();
|
|
|
|
|
|
if (!$episode) {
|
|
|
Utils::throwError('20003:该剧集不存在');
|
|
|
}
|
|
|
|
|
|
- // 获取动漫的角色信息(包含参考图)
|
|
|
- $anime = DB::table('mp_animes')
|
|
|
- ->where('id', $anime_id)
|
|
|
- ->select('roles', 'scenes')
|
|
|
- ->first();
|
|
|
-
|
|
|
- if (!$anime || !$anime->roles) {
|
|
|
- Utils::throwError('20003:未找到角色信息');
|
|
|
+ $model = getProp($data, 'model');
|
|
|
+ if (!$model) {
|
|
|
+ $model = getProp($episode, 'image_model');
|
|
|
+ if (!$model) {
|
|
|
+ // episode表也没有,使用默认值
|
|
|
+ $model = 'doubao-seedream-5-0-lite-260128';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 验证模型是否在可用模型表中
|
|
|
+ if (!DB::table('mp_image_models')->where('model', $model)->where('is_enabled', 1)->exists()) {
|
|
|
+ $model = 'doubao-seedream-5-0-lite-260128';
|
|
|
}
|
|
|
|
|
|
- $roles = json_decode($anime->roles, true);
|
|
|
+ $roles = json_decode(getProp($episode, 'roles'), true);
|
|
|
if (!$roles) {
|
|
|
Utils::throwError('20003:角色信息格式错误');
|
|
|
}
|
|
|
@@ -1184,9 +1193,9 @@ class AnimeService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $scenes = json_decode($anime->scenes, true);
|
|
|
+ $scenes = json_decode(getProp($episode, 'roles'), true);
|
|
|
if (!$scenes) {
|
|
|
- Utils::throwError('20003:角色信息格式错误');
|
|
|
+ Utils::throwError('20003:场景信息格式错误');
|
|
|
}
|
|
|
// 构建角色名称到参考图的映射
|
|
|
$scene_map = [];
|
|
|
@@ -1270,6 +1279,7 @@ class AnimeService
|
|
|
|
|
|
// 准备生成任务参数
|
|
|
$params = [
|
|
|
+ 'model' => $model,
|
|
|
'alias_segment_id' => $segment_id,
|
|
|
'prompt' => $prompt,
|
|
|
'ref_img_urls' => $ref_img_urls,
|