|
|
@@ -1540,6 +1540,76 @@ class AnimeController extends BaseController
|
|
|
|
|
|
if ($count == 0) {
|
|
|
$completedCount = DB::table('mp_episode_segments')->where('anime_id', $animeId)->where('episode_id', $episodeId)->where('pic_task_id', '<>', '')->where('pic_task_status', '已完成')->count('id');
|
|
|
+
|
|
|
+ // 获取剧集信息
|
|
|
+ $episode = DB::table('mp_anime_episodes')
|
|
|
+ ->where('anime_id', $animeId)
|
|
|
+ ->where('id', $episodeId)
|
|
|
+ ->select('id as episode_id', 'anime_id', 'episode_number', 'title', 'intro', 'art_style', 'roles', 'scenes')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ if ($episode) {
|
|
|
+ $episode = (array)$episode;
|
|
|
+ $episode['roles'] = json_decode($episode['roles'], true);
|
|
|
+ $episode['scenes'] = json_decode($episode['scenes'], true);
|
|
|
+
|
|
|
+ // 获取所有分镜信息
|
|
|
+ $allSegments = DB::table('mp_episode_segments')
|
|
|
+ ->where('anime_id', $animeId)
|
|
|
+ ->where('episode_id', $episodeId)
|
|
|
+ ->orderBy('segment_number')
|
|
|
+ ->select('*')
|
|
|
+ ->get()
|
|
|
+ ->map(function ($value) {
|
|
|
+ return (array)$value;
|
|
|
+ })->toArray();
|
|
|
+
|
|
|
+ // 按照episodeInfo的格式组织数据
|
|
|
+ $acts = [];
|
|
|
+ foreach($allSegments as $segment) {
|
|
|
+ $segmentData = [
|
|
|
+ 'segment_id' => getProp($segment, 'segment_id'),
|
|
|
+ 'segment_number' => getProp($segment, 'segment_number'),
|
|
|
+ 'segment_content' => getProp($segment, 'segment_content'),
|
|
|
+ 'description' => getProp($segment, 'description'),
|
|
|
+ 'composition' => getProp($segment, 'composition'),
|
|
|
+ 'camera_movement' => getProp($segment, 'camera_movement'),
|
|
|
+ 'voice_actor' => getProp($segment, 'voice_actor'),
|
|
|
+ 'dialogue' => getProp($segment, 'dialogue'),
|
|
|
+ 'frame_type' => getProp($segment, 'frame_type'),
|
|
|
+ 'scene' => getProp($segment, 'scene'),
|
|
|
+ 'characters' => getProp($segment, 'characters'),
|
|
|
+ 'tail_frame' => getProp($segment, 'tail_frame'),
|
|
|
+ 'emotion' => getProp($segment, 'emotion'),
|
|
|
+ 'emotion_type' => getProp($segment, 'emotion_type'),
|
|
|
+ 'gender' => getProp($segment, 'gender'),
|
|
|
+ 'speed_ratio' => getProp($segment, 'speed_ratio'),
|
|
|
+ 'loudness_ratio' => getProp($segment, 'loudness_ratio'),
|
|
|
+ 'emotion_scale' => getProp($segment, 'emotion_scale'),
|
|
|
+ 'pitch' => getProp($segment, 'pitch'),
|
|
|
+ 'voice_name' => getProp($segment, 'voice_name'),
|
|
|
+ 'voice_type' => getProp($segment, 'voice_type'),
|
|
|
+ 'voice_audio_url' => getProp($segment, 'voice_audio_url'),
|
|
|
+ 'img_url' => getProp($segment, 'img_url'),
|
|
|
+ 'audio_url' => getProp($segment, 'audio_url'),
|
|
|
+ 'video_url' => getProp($segment, 'video_url'),
|
|
|
+ 'last_frame_url' => getProp($segment, 'last_frame_url'),
|
|
|
+ ];
|
|
|
+
|
|
|
+ $actNumber = getProp($segment, 'act_number');
|
|
|
+ if (isset($acts[$actNumber])) {
|
|
|
+ $acts[$actNumber]['segments'][] = $segmentData;
|
|
|
+ } else {
|
|
|
+ $acts[$actNumber] = [
|
|
|
+ 'act_number' => $actNumber,
|
|
|
+ 'act_title' => getProp($segment, 'act_title'),
|
|
|
+ 'segments' => [$segmentData]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $episode['acts'] = array_values($acts);
|
|
|
+ }
|
|
|
+
|
|
|
echo "data: " . json_encode([
|
|
|
'type' => 'completed',
|
|
|
'data' => [
|