Просмотр исходного кода

优化生成分镜内容接口中的继承角色和主体提示词

lh 1 неделя назад
Родитель
Сommit
cb56b8ea4d
3 измененных файлов с 292 добавлено и 53 удалено
  1. 9 0
      app/Libs/Helpers.php
  2. 3 2
      app/Services/Anime/AnimeService.php
  3. 280 51
      app/Services/DeepSeek/DeepSeekService.php

+ 9 - 0
app/Libs/Helpers.php

@@ -2568,6 +2568,15 @@ function handleEpisodeContent($originalContent) {
                 
                 // 如果有主体图片提示词,添加到数组中
                 if ($picPrompt) {
+                    // 检查是否包含"姿态:"或"姿态:"
+                    if (preg_match('/姿态[::]/u', $picPrompt)) {
+                        // 如果有姿态描述,统一替换为"姿态:站立"
+                        $picPrompt = preg_replace('/姿态[::][^.。\n]+/u', '姿态:站立', $picPrompt);
+                    } else {
+                        // 如果没有姿态描述,在末尾添加"姿态:站立"
+                        $picPrompt = rtrim($picPrompt, '。,, ') . '。姿态:站立。';
+                    }
+                    
                     $roleData['pic_prompt'] = $picPrompt;
                 }
                 

+ 3 - 2
app/Services/Anime/AnimeService.php

@@ -590,9 +590,10 @@ class AnimeService
             }
 
             // 获取分镜数据并准备插入
-            $segments_for_insert = DB::table('mp_episode_segments')->where('episode_id', $episode_id)->orderBy('segment_number')->get()->map(function($item) use ($new_episode_id) {
+            $segments_for_insert = DB::table('mp_episode_segments')
+            ->select('anime_id', 'episode_number', 'act_number', 'act_title', 'segment_number', 'segment_content', 'description', 'composition', 'camera_movement', 'voice_actor', 'dialogue', 'frame_type', 'scene', 'characters', 'tail_frame', 'voice_name', 'voice_type', 'voice_audio_url', 'emotion', 'emotion_type', 'gender', 'speed_ratio', 'loudness_ratio', 'emotion_scale', 'pitch')
+            ->where('episode_id', $episode_id)->orderBy('segment_number')->get()->map(function($item) use ($new_episode_id) {
                 $item = (array)$item;
-                unset($item['id']);
                 $item['episode_id'] = $new_episode_id;
                 $item['segment_id'] = date('YmdHis').mt_rand(1000,9999).str_pad($item['segment_number'], 3, "0", STR_PAD_LEFT);
                 $item['created_at'] = $item['updated_at'] = date('Y-m-d H:i:s');

Разница между файлами не показана из-за своего большого размера
+ 280 - 51
app/Services/DeepSeek/DeepSeekService.php