| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { NextResponse } from "next/server";
- import { startRenderJob } from "@/lib/run-render";
- export async function POST(request: Request) {
- const body = await request.json();
- const { input, options } = body as {
- input: {
- text?: string;
- source?: string;
- sourceArgs?: Record<string, string>;
- template: string;
- platform?: string;
- platforms?: string[];
- ttsProvider: string;
- voiceId?: string;
- };
- options?: {
- noTts?: boolean;
- };
- };
- const platforms: string[] = input.platforms
- ?? (input.platform ? input.platform.split(",").map(p => p.trim()) : ["bilibili"]);
- if (!input.text && !input.source) {
- return NextResponse.json({ error: "text or source is required" }, { status: 400 });
- }
- const { jobId } = startRenderJob({
- template: input.template,
- platforms,
- ttsProvider: input.ttsProvider,
- source: input.source,
- sourceArgs: input.sourceArgs,
- text: input.text,
- voiceId: input.voiceId,
- noTts: options?.noTts,
- });
- return NextResponse.json({ jobId, status: "started" });
- }
|