lh 1 месяц назад
Родитель
Сommit
de8298e814
2 измененных файлов с 38 добавлено и 13 удалено
  1. 25 0
      app/Libs/Helpers.php
  2. 13 13
      app/Services/DeepSeek/DeepSeekService.php

+ 25 - 0
app/Libs/Helpers.php

@@ -2969,6 +2969,31 @@ function handleEpisodeContentForAce($originalContent) {
                 
                 // 如果有主体图片提示词,添加到数组中
                 if ($picPrompt) {
+                    // 检查开头是否有"写实,全景,正面拍摄。"
+                    $prefix = '写实,全景,正面拍摄。';
+                    $prefixParts = ['写实', '全景', '正面拍摄'];
+                    
+                    // 检查是否包含完整前缀
+                    if (strpos($picPrompt, $prefix) !== 0) {
+                        // 检查是否包含部分前缀词汇
+                        $hasPartialPrefix = false;
+                        foreach ($prefixParts as $part) {
+                            if (mb_strpos($picPrompt, $part) === 0 || mb_strpos($picPrompt, $part . ',') === 0) {
+                                $hasPartialPrefix = true;
+                                break;
+                            }
+                        }
+                        
+                        if ($hasPartialPrefix) {
+                            // 如果有部分前缀,移除不完整的部分并补全
+                            $picPrompt = preg_replace('/^(写实[,,]?|全景[,,]?|正面拍摄[。.]?)+/u', '', $picPrompt);
+                            $picPrompt = $prefix . trim($picPrompt, '。,, ');
+                        } else {
+                            // 如果没有前缀,直接在开头添加
+                            $picPrompt = $prefix . $picPrompt;
+                        }
+                    }
+
                     // 检查是否包含"姿态:"或"姿态:"
                     if (preg_match('/姿态[::]/u', $picPrompt)) {
                         // 如果有姿态描述,统一替换为"姿态:站立"

+ 13 - 13
app/Services/DeepSeek/DeepSeekService.php

@@ -1,4 +1,4 @@
-<?php
+<?php
 
 namespace App\Services\DeepSeek;
 
@@ -2066,9 +2066,9 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
                 'highlights' => isset($script_arr['highlights']) ? $script_arr['highlights'] : '',
                 'role_relationship' => isset($script_arr['role_relationship']) ? $script_arr['role_relationship'] : '',
                 'core_contradiction' => isset($script_arr['core_contradiction']) ? $script_arr['core_contradiction'] : '',
-                'roles' => isset($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '',
+                'roles' => isset($script_arr['roles']) && is_array($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '[]',
                 'art_style' => isset($script_arr['art_style']) ? $script_arr['art_style'] : '',
-                'scenes' => isset($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '',
+                'scenes' => isset($script_arr['scenes']) && is_array($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '[]',
                 'status' => '解析完成',
                 'content' => $content,
                 'updated_at'            => date('Y-m-d H:i:s')
@@ -2309,9 +2309,9 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
                 'highlights' => isset($script_arr['highlights']) ? $script_arr['highlights'] : '',
                 'role_relationship' => isset($script_arr['role_relationship']) ? $script_arr['role_relationship'] : '',
                 'core_contradiction' => isset($script_arr['core_contradiction']) ? $script_arr['core_contradiction'] : '',
-                'roles' => isset($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '',
+                'roles' => isset($script_arr['roles']) && is_array($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '[]',
                 'art_style' => isset($script_arr['art_style']) ? $script_arr['art_style'] : '',
-                'scenes' => isset($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '',
+                'scenes' => isset($script_arr['scenes']) && is_array($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '[]',
                 'status' => 3,
                 'start_episode_sequence' => $start_episode_sequence,
                 'end_episode_sequence' => $start_episode_sequence + count($script_arr['episodes']) - 1,
@@ -3339,9 +3339,9 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
             'highlights' => isset($script_arr['highlights']) ? $script_arr['highlights'] : '',
             'role_relationship' => isset($script_arr['role_relationship']) ? $script_arr['role_relationship'] : '',
             'core_contradiction' => isset($script_arr['core_contradiction']) ? $script_arr['core_contradiction'] : '',
-            'roles' => isset($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '',
+            'roles' => isset($script_arr['roles']) && is_array($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '[]',
             'art_style' => isset($script_arr['art_style']) ? $script_arr['art_style'] : '',
-            'scenes' => isset($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '',
+            'scenes' => isset($script_arr['scenes']) && is_array($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '[]',
             'status' => '解析完成',
             'content' => $content,
             'is_multi' => $is_multi,
@@ -4107,9 +4107,9 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
             'highlights' => isset($script_arr['highlights']) ? $script_arr['highlights'] : '',
             'role_relationship' => isset($script_arr['role_relationship']) ? $script_arr['role_relationship'] : '',
             'core_contradiction' => isset($script_arr['core_contradiction']) ? $script_arr['core_contradiction'] : '',
-            'roles' => isset($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '',
+            'roles' => isset($script_arr['roles']) && is_array($script_arr['roles']) ? json_encode($script_arr['roles'], 256) : '[]',
             'art_style' => isset($script_arr['art_style']) ? $script_arr['art_style'] : '',
-            'scenes' => isset($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '',
+            'scenes' => isset($script_arr['scenes']) && is_array($script_arr['scenes']) ? json_encode($script_arr['scenes'], 256) : '[]',
             'status' => '解析完成',
             'generate_status' => '待执行',
             'updated_at' => date('Y-m-d H:i:s')
@@ -4349,7 +4349,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
 
         if ($roles_content) {
             $role_demo = "2.<主体列表>可在以下主体中选择多个(根据拆分出的分镜剧本来确认具体几个,不要出现旁白角色),不得自定义内容(必需带上冒号后的具体描述以及{}和{{}}中的内容,原样输出)。
-                        主体范围: {$roles_content}\n
+                        主体范围:\n {$roles_content}\n
                         2.1如果本集剧情内容中出现了和给出的<主体列表>中不存在的新主体(或原主体发生了比较大的年龄、服装或身体变化),则不用在上述主体中选择,而是按照相同的格式新增一个主体显示在<主体列表>中。(以下是格式要求和生成要求,仅适用新出现的主体):    
                         → 新主体分以下三部分:主体描述、人物提示词和音色,格式必须为:主体描述{人物提示词}{{音色}}
                         → 新主体的主体描述是分析人物在整部剧中的姓名、年龄、性格特征、社会身份或职业背景、个人成长经历或核心故事动机,以及在剧情中的目标与行为驱动力,不需要描述外貌、穿着或身体特征,重点突出心理结构、行为模式与叙事功能(缩略成一句话讲述完毕)。
@@ -4365,7 +4365,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
 
         if ($scenes_content) {
             $scene_demo = "3.<场景列表>可在以下场景中选择多个(需带上冒号后的具体描述),根据拆分出的分镜剧本来确认具体几个,不得自定义(必需带上冒号后的具体描述以及{}中的内容,原样输出)。
-                        场景范围: {$scenes_content}\n
+                        场景范围:\n {$scenes_content}\n
                         3.1如果本集剧情内容中出现了和给出的<场景列表>中不存在的新场景,则不用在上述场景中选择,而是按照相同的格式新增一个场景显示在<场景列表>中,必须严格注意不要出现任何角色和人物。(以下是格式要求和生成要求,仅适用新出现的场景):。
                         → 新场景分以下两部分:场景描述和场景提示词,格式必须为:场景描述{场景提示词}
                         → 新场景的场景描述是分析在整部剧中出现过的场景,场景描述尽量简洁贴合原文。
@@ -4918,7 +4918,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
 
         if ($roles_content) {
             $role_demo = "2.<主体列表>可在以下主体中选择多个(根据拆分出的分镜剧本来确认具体几个,不要出现旁白角色),不得自定义内容(必需带上冒号后的具体描述以及{}和{{}}中的内容,原样输出)。
-                        主体范围: {$roles_content}\n
+                        主体范围:\n {$roles_content}\n
                         2.1如果本集剧情内容中出现了和给出的<主体列表>中不存在的新主体(或原主体发生了比较大的年龄、服装或身体变化),则不用在上述主体中选择,而是按照相同的格式新增一个主体显示在<主体列表>中。(以下是格式要求和生成要求,仅适用新出现的主体):    
                         - 新主体分以下三部分:主体描述、人物提示词和音色提示词,格式必须为:主体描述{人物提示词}{{音色提示词}}
                         - 新主体的主体描述是分析人物在整部剧中的姓名、年龄、性格特征、社会身份或职业背景、个人成长经历或核心故事动机,以及在剧情中的目标与行为驱动力,不需要描述外貌、穿着或身体特征,重点突出心理结构、行为模式与叙事功能(缩略成一句话讲述完毕)。
@@ -4934,7 +4934,7 @@ Q版卡通风格,头大身小,造型圆润可爱,线条简单,色彩明
 
         if ($scenes_content) {
             $scene_demo = "3.<场景列表>可在以下场景中选择多个(需带上冒号后的具体描述),根据拆分出的分镜剧本来确认具体几个,不得自定义(必需带上冒号后的具体描述以及{}中的内容,原样输出)。
-                        场景范围: {$scenes_content}\n
+                        场景范围:\n {$scenes_content}\n
                         3.1如果本集剧情内容中出现了和给出的<场景列表>中不存在的新场景,则不用在上述场景中选择,而是按照相同的格式新增一个场景显示在<场景列表>中,必须严格注意不要出现任何角色和人物。(以下是格式要求和生成要求,仅适用新出现的场景):。
                         - 新场景分以下两部分:场景描述和场景提示词,格式必须为:场景描述{场景提示词}
                         - 新场景的场景描述是分析在整部剧中出现过的场景,场景描述尽量简洁贴合原文。