Преглед изворни кода

新增生成视频(全能模式)接口

lh пре 1 месец
родитељ
комит
1e99d479f0
1 измењених фајлова са 19 додато и 6 уклоњено
  1. 19 6
      app/Services/Anime/AnimeService.php

+ 19 - 6
app/Services/Anime/AnimeService.php

@@ -3998,8 +3998,10 @@ class AnimeService
         $tail_frame_url = getProp($data, 'tail_frame_url');
         $generate_audio = getProp($data, 'generate_audio', 1);
         $products = getProp($data, 'products', []);
-        // $reference_images = getProp($data, 'reference_images', []);
-        $reference_images = [];
+        $reference_images = getProp($data, 'reference_images', []);
+        if (!is_array($reference_images) || !is_array($products)) {
+            Utils::throwError('20003:传入的参考图或资产格式不正确');
+        }
         
         if (!$act_id) {
             Utils::throwError('1002:片段ID不能为空');
@@ -4026,7 +4028,7 @@ class AnimeService
         // 构建完整的提示词
         $processResult = $this->processActContentWithProducts($actContent, $products);
         $fullPrompt = $processResult['content'];
-        $reference_images = array_merge($reference_images, $processResult['reference_images']);
+        $reference_images = array_merge($processResult['reference_images'], $reference_images);
         dd($fullPrompt, $reference_images);
         
         // 去除多余的换行符(将连续多个换行符替换为单个换行符)
@@ -6138,15 +6140,12 @@ class AnimeService
             return mb_strlen($b) - mb_strlen($a);
         });
 
-        $count = 0;
         try {
             DB::beginTransaction();
             // 处理每个片段
             foreach ($acts as $act) {
                 $act_content = getProp($act, 'act_content');
                 if (!$act_content) continue;
-                $count++;
-                if ($count > 1) continue;
                 
                 $processed_content = $act_content;
                 
@@ -6194,6 +6193,17 @@ class AnimeService
                     }, $processed_content);
                 }
                 
+                // 处理【镜头X】或【分镜X】重新编号为从1开始的连续整数【镜头X】
+                $shot_counter = 0;
+                $processed_content = preg_replace_callback(
+                    '/【(?:镜头|分镜)(\d+)】/u',
+                    function($matches) use (&$shot_counter) {
+                        $shot_counter++;
+                        return '【镜头' . $shot_counter . '】';
+                    },
+                    $processed_content
+                );
+                
                 // 更新数据库
                 $boolen = DB::table('mp_episode_segments')
                     ->where('id', $act->id)
@@ -6221,6 +6231,9 @@ class AnimeService
 
         DB::commit();
 
+        // 重新查询更新后的片段数据
+        $acts = DB::table('mp_episode_segments')->where('episode_id', $episode_id)->orderBy('act_number')->get();
+
         // 合并角色和场景作为products,统一字段名为product_name
         $products = [];