"use client"; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Card } from '@/components/ui/card'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { ArrowLeft, Loader2 } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { ModeEnum, ResolutionEnum } from "@/app/model/enums"; import { createScriptEpisode, CreateScriptEpisodeRequest, updateScriptEpisode, UpdateScriptEpisodeRequest } from "@/api/script_episode"; import { convertScriptToScene } from "@/api/video_flow"; export function ScriptToVideo() { const router = useRouter(); const [script, setScript] = useState(''); const [selectedMode, setSelectedMode] = useState(ModeEnum.AUTOMATIC); const [selectedResolution, setSelectedResolution] = useState(ResolutionEnum.HD_720P); const [isCreating, setIsCreating] = useState(false); const handleBack = () => { router.push('/create'); }; const handleCreate = async () => { if (!script.trim()) { alert('请输入剧本内容'); return; } try { setIsCreating(true); // Create episode const episodeData: CreateScriptEpisodeRequest = { title: "Script Episode", script_id: 0, // This should come from a project status: 1, summary: script }; const episodeResponse = await createScriptEpisode(episodeData); if (episodeResponse.code !== 0) { alert(`创建剧集失败: ${episodeResponse.message}`); return; } const episodeId = episodeResponse.data.id; // Convert script to scenes const convertResponse = await convertScriptToScene(script, episodeId, 0); if (convertResponse.code === 0) { // Update episode with generated data const updateEpisodeData: UpdateScriptEpisodeRequest = { id: episodeId, atmosphere: convertResponse.data.atmosphere, summary: convertResponse.data.summary, scene: convertResponse.data.scene, characters: convertResponse.data.characters, }; await updateScriptEpisode(updateEpisodeData); // Navigate to workflow router.push(`/create/work-flow?episodeId=${episodeId}`); } else { alert(`转换失败: ${convertResponse.message}`); } } catch (error) { console.error('创建过程出错:', error); alert("创建项目时发生错误,请稍后重试"); } finally { setIsCreating(false); } }; return (
{/* Header */}

Script to Video

{/* Main Content */}
{/* Script Input */}