80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
import type {
|
|
CreateVisualNovelBackgroundMusicRequest,
|
|
CreateVisualNovelSoundEffectRequest,
|
|
PublishVisualNovelGeneratedAudioAssetRequest,
|
|
VisualNovelAudioGenerationTaskResponse,
|
|
VisualNovelGeneratedAudioAssetResponse,
|
|
} from '../../../packages/shared/src/contracts/visualNovel';
|
|
import { type ApiRetryOptions, requestJson } from '../apiClient';
|
|
|
|
const VISUAL_NOVEL_AUDIO_API_BASE = '/api/creation/visual-novel/audio';
|
|
|
|
const VISUAL_NOVEL_AUDIO_RETRY: ApiRetryOptions = {
|
|
maxRetries: 1,
|
|
baseDelayMs: 500,
|
|
maxDelayMs: 1200,
|
|
retryUnsafeMethods: true,
|
|
};
|
|
|
|
export function createVisualNovelBackgroundMusicTask(
|
|
payload: CreateVisualNovelBackgroundMusicRequest,
|
|
) {
|
|
return requestJson<VisualNovelAudioGenerationTaskResponse>(
|
|
`${VISUAL_NOVEL_AUDIO_API_BASE}/background-music`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'提交背景音乐生成失败',
|
|
{ retry: VISUAL_NOVEL_AUDIO_RETRY, timeoutMs: 20000 },
|
|
);
|
|
}
|
|
|
|
export function publishVisualNovelBackgroundMusicAsset(
|
|
taskId: string,
|
|
payload: PublishVisualNovelGeneratedAudioAssetRequest,
|
|
) {
|
|
return requestJson<VisualNovelGeneratedAudioAssetResponse>(
|
|
`${VISUAL_NOVEL_AUDIO_API_BASE}/background-music/${encodeURIComponent(taskId)}/asset`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'生成背景音乐素材失败',
|
|
{ retry: VISUAL_NOVEL_AUDIO_RETRY, timeoutMs: 30000 },
|
|
);
|
|
}
|
|
|
|
export function createVisualNovelSoundEffectTask(
|
|
payload: CreateVisualNovelSoundEffectRequest,
|
|
) {
|
|
return requestJson<VisualNovelAudioGenerationTaskResponse>(
|
|
`${VISUAL_NOVEL_AUDIO_API_BASE}/sound-effect`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'提交音效生成失败',
|
|
{ retry: VISUAL_NOVEL_AUDIO_RETRY, timeoutMs: 20000 },
|
|
);
|
|
}
|
|
|
|
export function publishVisualNovelSoundEffectAsset(
|
|
taskId: string,
|
|
payload: PublishVisualNovelGeneratedAudioAssetRequest,
|
|
) {
|
|
return requestJson<VisualNovelGeneratedAudioAssetResponse>(
|
|
`${VISUAL_NOVEL_AUDIO_API_BASE}/sound-effect/${encodeURIComponent(taskId)}/asset`,
|
|
{
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload),
|
|
},
|
|
'生成音效素材失败',
|
|
{ retry: VISUAL_NOVEL_AUDIO_RETRY, timeoutMs: 30000 },
|
|
);
|
|
}
|