markdown-ai-rewriter 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +135 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/rewriter.d.ts +9 -0
- package/dist/core/rewriter.d.ts.map +1 -1
- package/dist/core/rewriter.js +116 -11
- package/dist/core/rewriter.js.map +1 -1
- package/dist/core/text-providers/anthropic.d.ts +12 -0
- package/dist/core/text-providers/anthropic.d.ts.map +1 -0
- package/dist/core/text-providers/anthropic.js +78 -0
- package/dist/core/text-providers/anthropic.js.map +1 -0
- package/dist/core/text-providers/azure-openai.d.ts +15 -0
- package/dist/core/text-providers/azure-openai.d.ts.map +1 -0
- package/dist/core/text-providers/azure-openai.js +87 -0
- package/dist/core/text-providers/azure-openai.js.map +1 -0
- package/dist/core/text-providers/base.d.ts +12 -0
- package/dist/core/text-providers/base.d.ts.map +1 -0
- package/dist/core/text-providers/base.js +66 -0
- package/dist/core/text-providers/base.js.map +1 -0
- package/dist/core/text-providers/deepseek.d.ts +6 -0
- package/dist/core/text-providers/deepseek.d.ts.map +1 -0
- package/dist/core/text-providers/deepseek.js +12 -0
- package/dist/core/text-providers/deepseek.js.map +1 -0
- package/dist/core/text-providers/doubao.d.ts +6 -0
- package/dist/core/text-providers/doubao.d.ts.map +1 -0
- package/dist/core/text-providers/doubao.js +12 -0
- package/dist/core/text-providers/doubao.js.map +1 -0
- package/dist/core/text-providers/gemini.d.ts +6 -0
- package/dist/core/text-providers/gemini.d.ts.map +1 -0
- package/dist/core/text-providers/gemini.js +12 -0
- package/dist/core/text-providers/gemini.js.map +1 -0
- package/dist/core/text-providers/glm.d.ts +6 -0
- package/dist/core/text-providers/glm.d.ts.map +1 -0
- package/dist/core/text-providers/glm.js +12 -0
- package/dist/core/text-providers/glm.js.map +1 -0
- package/dist/core/text-providers/minimax.d.ts +20 -0
- package/dist/core/text-providers/minimax.d.ts.map +1 -0
- package/dist/core/text-providers/minimax.js +88 -0
- package/dist/core/text-providers/minimax.js.map +1 -0
- package/dist/core/text-providers/openai-compatible.d.ts +14 -0
- package/dist/core/text-providers/openai-compatible.d.ts.map +1 -0
- package/dist/core/text-providers/openai-compatible.js +82 -0
- package/dist/core/text-providers/openai-compatible.js.map +1 -0
- package/dist/core/text-providers/openai.d.ts +12 -0
- package/dist/core/text-providers/openai.d.ts.map +1 -0
- package/dist/core/text-providers/openai.js +77 -0
- package/dist/core/text-providers/openai.js.map +1 -0
- package/dist/core/text-providers/openrouter.d.ts +6 -0
- package/dist/core/text-providers/openrouter.d.ts.map +1 -0
- package/dist/core/text-providers/openrouter.js +12 -0
- package/dist/core/text-providers/openrouter.js.map +1 -0
- package/dist/core/text-providers/qwen.d.ts +6 -0
- package/dist/core/text-providers/qwen.d.ts.map +1 -0
- package/dist/core/text-providers/qwen.js +12 -0
- package/dist/core/text-providers/qwen.js.map +1 -0
- package/dist/core/text-providers/wenxin.d.ts +6 -0
- package/dist/core/text-providers/wenxin.d.ts.map +1 -0
- package/dist/core/text-providers/wenxin.js +12 -0
- package/dist/core/text-providers/wenxin.js.map +1 -0
- package/dist/core/video-generator.d.ts +65 -0
- package/dist/core/video-generator.d.ts.map +1 -0
- package/dist/core/video-generator.js +140 -0
- package/dist/core/video-generator.js.map +1 -0
- package/dist/core/video-providers/doubao.d.ts +52 -0
- package/dist/core/video-providers/doubao.d.ts.map +1 -0
- package/dist/core/video-providers/doubao.js +148 -0
- package/dist/core/video-providers/doubao.js.map +1 -0
- package/dist/core/video-providers/index.d.ts +6 -0
- package/dist/core/video-providers/index.d.ts.map +1 -0
- package/dist/core/video-providers/index.js +16 -0
- package/dist/core/video-providers/index.js.map +1 -0
- package/dist/core/video-providers/kling.d.ts +27 -0
- package/dist/core/video-providers/kling.d.ts.map +1 -0
- package/dist/core/video-providers/kling.js +113 -0
- package/dist/core/video-providers/kling.js.map +1 -0
- package/dist/core/video-providers/minimax.d.ts +30 -0
- package/dist/core/video-providers/minimax.d.ts.map +1 -0
- package/dist/core/video-providers/minimax.js +133 -0
- package/dist/core/video-providers/minimax.js.map +1 -0
- package/dist/core/video-providers/runway.d.ts +22 -0
- package/dist/core/video-providers/runway.d.ts.map +1 -0
- package/dist/core/video-providers/runway.js +121 -0
- package/dist/core/video-providers/runway.js.map +1 -0
- package/dist/core/video-providers/types.d.ts +41 -0
- package/dist/core/video-providers/types.d.ts.map +1 -0
- package/dist/core/video-providers/types.js +3 -0
- package/dist/core/video-providers/types.js.map +1 -0
- package/dist/index.d.ts +21 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -14
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +36 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wenxin.js","sourceRoot":"","sources":["../../../src/core/text-providers/wenxin.ts"],"names":[],"mappings":";;;AAAA,2DAA+D;AAElD,QAAA,uBAAuB,GAAG,iCAAiC,CAAC;AAEzE,MAAa,cAAe,SAAQ,4CAAwB;IAC1D,YAAY,MAAc,EAAE,QAAgB,qBAAqB,EAAE,OAAgB;QACjF,KAAK,CACH,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,+BAAuB,EACjE,qDAAqD,CACtD,CAAC;IACJ,CAAC;CACF;AAVD,wCAUC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { RewriteOptions } from '../types';
|
|
2
|
+
import { VideoGenerationResult } from './video-providers/types';
|
|
3
|
+
export { DEFAULT_MINIMAX_VIDEO_URL } from './video-providers/minimax';
|
|
4
|
+
export { DEFAULT_DOUBAO_VIDEO_URL } from './video-providers/doubao';
|
|
5
|
+
export { DEFAULT_KLING_VIDEO_URL } from './video-providers/kling';
|
|
6
|
+
export type { VideoGenerationResult } from './video-providers/types';
|
|
7
|
+
export interface VideoGenerationConfig {
|
|
8
|
+
/** 视频生成 Provider */
|
|
9
|
+
provider: 'minimax' | 'doubao' | 'kling' | 'runway';
|
|
10
|
+
/** API Key */
|
|
11
|
+
apiKey: string;
|
|
12
|
+
/** 视频模型 */
|
|
13
|
+
model?: string;
|
|
14
|
+
/** 视频时长(秒) */
|
|
15
|
+
duration?: number;
|
|
16
|
+
/** 视频分辨率 */
|
|
17
|
+
resolution?: string;
|
|
18
|
+
/** 宽高比 */
|
|
19
|
+
aspectRatio?: string;
|
|
20
|
+
/** 是否自动优化提示词,默认 true */
|
|
21
|
+
promptOptimizer?: boolean;
|
|
22
|
+
/** 轮询间隔(毫秒),默认 5000 */
|
|
23
|
+
pollInterval?: number;
|
|
24
|
+
/** 最大轮询次数,默认 120(10分钟) */
|
|
25
|
+
maxPollAttempts?: number;
|
|
26
|
+
/** 是否显示详细日志 */
|
|
27
|
+
verbose?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 视频生成器
|
|
31
|
+
*
|
|
32
|
+
* 支持的 Provider:
|
|
33
|
+
* - minimax: MiniMax Hailuo (默认)
|
|
34
|
+
* - doubao: 火山引擎豆包 Seedance
|
|
35
|
+
* - kling: 快手可灵
|
|
36
|
+
* - runway: Runway Gen-4.5
|
|
37
|
+
*/
|
|
38
|
+
export declare class VideoGenerator {
|
|
39
|
+
private config;
|
|
40
|
+
private provider;
|
|
41
|
+
constructor(config: VideoGenerationConfig);
|
|
42
|
+
/**
|
|
43
|
+
* 创建视频 Provider
|
|
44
|
+
*/
|
|
45
|
+
private createProvider;
|
|
46
|
+
/**
|
|
47
|
+
* 从 Markdown 生成视频
|
|
48
|
+
*/
|
|
49
|
+
generateFromMarkdown(markdown: string, summaryProvider?: {
|
|
50
|
+
rewrite: (text: string, options: RewriteOptions) => Promise<string>;
|
|
51
|
+
}): Promise<VideoGenerationResult>;
|
|
52
|
+
/**
|
|
53
|
+
* 使用 AI 生成视频脚本提示词
|
|
54
|
+
*/
|
|
55
|
+
private generateVideoPrompt;
|
|
56
|
+
/**
|
|
57
|
+
* 简单提取提示词(不使用 AI)
|
|
58
|
+
*/
|
|
59
|
+
private extractSimplePrompt;
|
|
60
|
+
/**
|
|
61
|
+
* 生成视频
|
|
62
|
+
*/
|
|
63
|
+
generateVideo(prompt: string): Promise<VideoGenerationResult>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=video-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-generator.d.ts","sourceRoot":"","sources":["../../src/core/video-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAiB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAM/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU;IACV,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,EAAE,qBAAqB;IAczC;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GACxF,OAAO,CAAC,qBAAqB,CAAC;IAyBjC;;OAEG;YACW,mBAAmB;IA2BjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAWpE"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VideoGenerator = exports.DEFAULT_KLING_VIDEO_URL = exports.DEFAULT_DOUBAO_VIDEO_URL = exports.DEFAULT_MINIMAX_VIDEO_URL = void 0;
|
|
4
|
+
const minimax_1 = require("./video-providers/minimax");
|
|
5
|
+
const doubao_1 = require("./video-providers/doubao");
|
|
6
|
+
const kling_1 = require("./video-providers/kling");
|
|
7
|
+
const runway_1 = require("./video-providers/runway");
|
|
8
|
+
var minimax_2 = require("./video-providers/minimax");
|
|
9
|
+
Object.defineProperty(exports, "DEFAULT_MINIMAX_VIDEO_URL", { enumerable: true, get: function () { return minimax_2.DEFAULT_MINIMAX_VIDEO_URL; } });
|
|
10
|
+
var doubao_2 = require("./video-providers/doubao");
|
|
11
|
+
Object.defineProperty(exports, "DEFAULT_DOUBAO_VIDEO_URL", { enumerable: true, get: function () { return doubao_2.DEFAULT_DOUBAO_VIDEO_URL; } });
|
|
12
|
+
var kling_2 = require("./video-providers/kling");
|
|
13
|
+
Object.defineProperty(exports, "DEFAULT_KLING_VIDEO_URL", { enumerable: true, get: function () { return kling_2.DEFAULT_KLING_VIDEO_URL; } });
|
|
14
|
+
/**
|
|
15
|
+
* 视频生成器
|
|
16
|
+
*
|
|
17
|
+
* 支持的 Provider:
|
|
18
|
+
* - minimax: MiniMax Hailuo (默认)
|
|
19
|
+
* - doubao: 火山引擎豆包 Seedance
|
|
20
|
+
* - kling: 快手可灵
|
|
21
|
+
* - runway: Runway Gen-4.5
|
|
22
|
+
*/
|
|
23
|
+
class VideoGenerator {
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = {
|
|
26
|
+
duration: 6,
|
|
27
|
+
resolution: '1080P',
|
|
28
|
+
aspectRatio: '16:9',
|
|
29
|
+
promptOptimizer: true,
|
|
30
|
+
pollInterval: 5000,
|
|
31
|
+
maxPollAttempts: 120,
|
|
32
|
+
...config,
|
|
33
|
+
};
|
|
34
|
+
this.provider = this.createProvider();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 创建视频 Provider
|
|
38
|
+
*/
|
|
39
|
+
createProvider() {
|
|
40
|
+
const { provider, apiKey, model, pollInterval, maxPollAttempts, verbose } = this.config;
|
|
41
|
+
const options = { pollInterval, maxPollAttempts, verbose };
|
|
42
|
+
switch (provider) {
|
|
43
|
+
case 'minimax':
|
|
44
|
+
return new minimax_1.MiniMaxVideoProvider(apiKey, model || 'MiniMax-Hailuo-2.3', options);
|
|
45
|
+
case 'doubao':
|
|
46
|
+
return new doubao_1.DoubaoVideoProvider(apiKey, model || 'seedance-2.0-lite-t2v-250428', options);
|
|
47
|
+
case 'kling':
|
|
48
|
+
return new kling_1.KlingVideoProvider(apiKey, model || 'kling-v1', options);
|
|
49
|
+
case 'runway':
|
|
50
|
+
return new runway_1.RunwayVideoProvider(apiKey, model || 'gen4.5', { verbose });
|
|
51
|
+
default:
|
|
52
|
+
throw new Error(`不支持的视频 Provider: ${provider}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 从 Markdown 生成视频
|
|
57
|
+
*/
|
|
58
|
+
async generateFromMarkdown(markdown, summaryProvider) {
|
|
59
|
+
try {
|
|
60
|
+
// 1. 生成视频脚本提示词
|
|
61
|
+
let videoPrompt;
|
|
62
|
+
if (summaryProvider) {
|
|
63
|
+
videoPrompt = await this.generateVideoPrompt(markdown, summaryProvider);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
videoPrompt = this.extractSimplePrompt(markdown);
|
|
67
|
+
}
|
|
68
|
+
if (this.config.verbose) {
|
|
69
|
+
console.log(`🎬 视频脚本提示词:\n${videoPrompt}\n`);
|
|
70
|
+
}
|
|
71
|
+
// 2. 调用 Provider 生成视频
|
|
72
|
+
return await this.generateVideo(videoPrompt);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
error: error.message,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 使用 AI 生成视频脚本提示词
|
|
83
|
+
*/
|
|
84
|
+
async generateVideoPrompt(markdown, provider) {
|
|
85
|
+
const duration = this.config.duration || 6;
|
|
86
|
+
const prompt = `请将以下文章内容转换为一个 ${duration} 秒短视频的脚本提示词。
|
|
87
|
+
|
|
88
|
+
要求:
|
|
89
|
+
1. 提取文章的核心主题和关键信息
|
|
90
|
+
2. 用生动、视觉化的语言描述场景
|
|
91
|
+
3. 适合 AI 视频生成,包含具体的画面描述
|
|
92
|
+
4. 可以添加镜头指令如 [Zoom in]、[Pan left]、[Static shot] 等
|
|
93
|
+
5. 输出长度控制在 200-500 字之间
|
|
94
|
+
6. 只输出视频脚本,不要其他解释
|
|
95
|
+
|
|
96
|
+
文章内容:
|
|
97
|
+
${markdown.slice(0, 3000)}`;
|
|
98
|
+
const result = await provider.rewrite(prompt, {
|
|
99
|
+
style: 'creative',
|
|
100
|
+
temperature: 0.8,
|
|
101
|
+
maxTokens: 1000,
|
|
102
|
+
});
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* 简单提取提示词(不使用 AI)
|
|
107
|
+
*/
|
|
108
|
+
extractSimplePrompt(markdown) {
|
|
109
|
+
let text = markdown
|
|
110
|
+
.replace(/^#+\s+/gm, '')
|
|
111
|
+
.replace(/!\[.*?\]\(.*?\)/g, '')
|
|
112
|
+
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
|
|
113
|
+
.replace(/```[\s\S]*?```/g, '')
|
|
114
|
+
.replace(/`[^`]+`/g, '')
|
|
115
|
+
.replace(/[*_~]+/g, '')
|
|
116
|
+
.replace(/>\s+/g, '')
|
|
117
|
+
.replace(/[-*+]\s+/g, '')
|
|
118
|
+
.replace(/\n{2,}/g, '\n')
|
|
119
|
+
.trim();
|
|
120
|
+
if (text.length > 500) {
|
|
121
|
+
text = text.slice(0, 500) + '...';
|
|
122
|
+
}
|
|
123
|
+
return `基于以下内容生成一个视觉化的场景 [Static shot]:\n${text}`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 生成视频
|
|
127
|
+
*/
|
|
128
|
+
async generateVideo(prompt) {
|
|
129
|
+
const { duration, resolution, aspectRatio, promptOptimizer } = this.config;
|
|
130
|
+
return this.provider.generateVideo({
|
|
131
|
+
prompt,
|
|
132
|
+
duration,
|
|
133
|
+
resolution,
|
|
134
|
+
aspectRatio,
|
|
135
|
+
promptOptimizer,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.VideoGenerator = VideoGenerator;
|
|
140
|
+
//# sourceMappingURL=video-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-generator.js","sourceRoot":"","sources":["../../src/core/video-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_DOUBAO_VIDEO_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks";
|
|
3
|
+
export declare const DEFAULT_DOUBAO_VIDEO_QUERY_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks";
|
|
4
|
+
/**
|
|
5
|
+
* Seedance 模型列表
|
|
6
|
+
*
|
|
7
|
+
* 文生视频 (T2V):
|
|
8
|
+
* - seedance-2.0-lite-t2v-250428 (Seedance 2.0 Lite)
|
|
9
|
+
* - seedance-1.5-pro-t2v-250328 (Seedance 1.5 Pro)
|
|
10
|
+
* - seedance-1.0-pro-t2v (Seedance 1.0 Pro)
|
|
11
|
+
* - seedance-1.0-lite-t2v (Seedance 1.0 Lite)
|
|
12
|
+
*
|
|
13
|
+
* 图生视频 (I2V):
|
|
14
|
+
* - seedance-2.0-lite-i2v-250428 (Seedance 2.0 Lite)
|
|
15
|
+
* - seedance-1.5-pro-i2v-250328 (Seedance 1.5 Pro)
|
|
16
|
+
* - seedance-1.0-pro-i2v (Seedance 1.0 Pro)
|
|
17
|
+
* - seedance-1.0-lite-i2v (Seedance 1.0 Lite)
|
|
18
|
+
*/
|
|
19
|
+
export declare const SEEDANCE_MODELS: {
|
|
20
|
+
'seedance-2.0-lite-t2v': string;
|
|
21
|
+
'seedance-2.0-lite-i2v': string;
|
|
22
|
+
'seedance-1.5-pro-t2v': string;
|
|
23
|
+
'seedance-1.5-pro-i2v': string;
|
|
24
|
+
'seedance-1.0-pro-t2v': string;
|
|
25
|
+
'seedance-1.0-pro-i2v': string;
|
|
26
|
+
'seedance-1.0-lite-t2v': string;
|
|
27
|
+
'seedance-1.0-lite-i2v': string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 火山引擎豆包视频生成 Provider (Seedance)
|
|
31
|
+
*
|
|
32
|
+
* 支持模型:
|
|
33
|
+
* - Seedance 2.0 Lite (默认,最新)
|
|
34
|
+
* - Seedance 1.5 Pro
|
|
35
|
+
* - Seedance 1.0 Pro / Lite
|
|
36
|
+
*/
|
|
37
|
+
export declare class DoubaoVideoProvider implements VideoProvider {
|
|
38
|
+
name: string;
|
|
39
|
+
private apiKey;
|
|
40
|
+
private model;
|
|
41
|
+
private pollInterval;
|
|
42
|
+
private maxPollAttempts;
|
|
43
|
+
private verbose;
|
|
44
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
45
|
+
pollInterval?: number;
|
|
46
|
+
maxPollAttempts?: number;
|
|
47
|
+
verbose?: boolean;
|
|
48
|
+
});
|
|
49
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
50
|
+
private sleep;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=doubao.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/doubao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF,eAAO,MAAM,wBAAwB,wEAAwE,CAAC;AAC9G,eAAO,MAAM,8BAA8B,wEAAwE,CAAC;AAEpH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CAY3B,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,IAAI,SAAkB;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAuC,EAC9C,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS5E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4HpF,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DoubaoVideoProvider = exports.SEEDANCE_MODELS = exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL = exports.DEFAULT_DOUBAO_VIDEO_URL = void 0;
|
|
4
|
+
exports.DEFAULT_DOUBAO_VIDEO_URL = 'https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks';
|
|
5
|
+
exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL = 'https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks';
|
|
6
|
+
/**
|
|
7
|
+
* Seedance 模型列表
|
|
8
|
+
*
|
|
9
|
+
* 文生视频 (T2V):
|
|
10
|
+
* - seedance-2.0-lite-t2v-250428 (Seedance 2.0 Lite)
|
|
11
|
+
* - seedance-1.5-pro-t2v-250328 (Seedance 1.5 Pro)
|
|
12
|
+
* - seedance-1.0-pro-t2v (Seedance 1.0 Pro)
|
|
13
|
+
* - seedance-1.0-lite-t2v (Seedance 1.0 Lite)
|
|
14
|
+
*
|
|
15
|
+
* 图生视频 (I2V):
|
|
16
|
+
* - seedance-2.0-lite-i2v-250428 (Seedance 2.0 Lite)
|
|
17
|
+
* - seedance-1.5-pro-i2v-250328 (Seedance 1.5 Pro)
|
|
18
|
+
* - seedance-1.0-pro-i2v (Seedance 1.0 Pro)
|
|
19
|
+
* - seedance-1.0-lite-i2v (Seedance 1.0 Lite)
|
|
20
|
+
*/
|
|
21
|
+
exports.SEEDANCE_MODELS = {
|
|
22
|
+
// Seedance 2.0
|
|
23
|
+
'seedance-2.0-lite-t2v': 'seedance-2.0-lite-t2v-250428',
|
|
24
|
+
'seedance-2.0-lite-i2v': 'seedance-2.0-lite-i2v-250428',
|
|
25
|
+
// Seedance 1.5
|
|
26
|
+
'seedance-1.5-pro-t2v': 'seedance-1.5-pro-t2v-250328',
|
|
27
|
+
'seedance-1.5-pro-i2v': 'seedance-1.5-pro-i2v-250328',
|
|
28
|
+
// Seedance 1.0
|
|
29
|
+
'seedance-1.0-pro-t2v': 'seedance-1.0-pro-t2v',
|
|
30
|
+
'seedance-1.0-pro-i2v': 'seedance-1.0-pro-i2v',
|
|
31
|
+
'seedance-1.0-lite-t2v': 'seedance-1.0-lite-t2v',
|
|
32
|
+
'seedance-1.0-lite-i2v': 'seedance-1.0-lite-i2v',
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* 火山引擎豆包视频生成 Provider (Seedance)
|
|
36
|
+
*
|
|
37
|
+
* 支持模型:
|
|
38
|
+
* - Seedance 2.0 Lite (默认,最新)
|
|
39
|
+
* - Seedance 1.5 Pro
|
|
40
|
+
* - Seedance 1.0 Pro / Lite
|
|
41
|
+
*/
|
|
42
|
+
class DoubaoVideoProvider {
|
|
43
|
+
constructor(apiKey, model = 'seedance-2.0-lite-t2v-250428', options) {
|
|
44
|
+
this.name = 'doubao-video';
|
|
45
|
+
this.apiKey = apiKey;
|
|
46
|
+
this.model = model;
|
|
47
|
+
this.pollInterval = options?.pollInterval || 5000;
|
|
48
|
+
this.maxPollAttempts = options?.maxPollAttempts || 120;
|
|
49
|
+
this.verbose = options?.verbose || false;
|
|
50
|
+
}
|
|
51
|
+
async generateVideo(options) {
|
|
52
|
+
const { prompt, duration = 5, aspectRatio = '16:9', } = options;
|
|
53
|
+
if (this.verbose) {
|
|
54
|
+
console.log(`🎬 [豆包] 开始生成视频...`);
|
|
55
|
+
console.log(` 模型: ${this.model}`);
|
|
56
|
+
console.log(` 时长: ${duration}s`);
|
|
57
|
+
console.log(` 宽高比: ${aspectRatio}`);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// 1. 创建视频生成任务
|
|
61
|
+
const createResponse = await fetch(exports.DEFAULT_DOUBAO_VIDEO_URL, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: {
|
|
64
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
65
|
+
'Content-Type': 'application/json',
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
model: this.model,
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: prompt,
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
video_gen_params: {
|
|
76
|
+
duration,
|
|
77
|
+
aspect_ratio: aspectRatio,
|
|
78
|
+
},
|
|
79
|
+
}),
|
|
80
|
+
});
|
|
81
|
+
if (!createResponse.ok) {
|
|
82
|
+
const errorText = await createResponse.text();
|
|
83
|
+
throw new Error(`创建视频任务失败: ${createResponse.status} - ${errorText}`);
|
|
84
|
+
}
|
|
85
|
+
const createResult = await createResponse.json();
|
|
86
|
+
if (createResult.error) {
|
|
87
|
+
throw new Error(`创建视频任务失败: ${createResult.error.message}`);
|
|
88
|
+
}
|
|
89
|
+
const taskId = createResult.id;
|
|
90
|
+
if (!taskId) {
|
|
91
|
+
throw new Error('未返回任务 ID');
|
|
92
|
+
}
|
|
93
|
+
if (this.verbose) {
|
|
94
|
+
console.log(` 任务 ID: ${taskId}`);
|
|
95
|
+
console.log(` 等待视频生成...`);
|
|
96
|
+
}
|
|
97
|
+
// 2. 轮询任务状态
|
|
98
|
+
let attempts = 0;
|
|
99
|
+
while (attempts < this.maxPollAttempts) {
|
|
100
|
+
await this.sleep(this.pollInterval);
|
|
101
|
+
attempts++;
|
|
102
|
+
const queryResponse = await fetch(`${exports.DEFAULT_DOUBAO_VIDEO_QUERY_URL}/${taskId}`, {
|
|
103
|
+
method: 'GET',
|
|
104
|
+
headers: {
|
|
105
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
if (!queryResponse.ok) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const queryResult = await queryResponse.json();
|
|
112
|
+
if (this.verbose && attempts % 6 === 0) {
|
|
113
|
+
console.log(` 状态: ${queryResult.status} (${attempts * this.pollInterval / 1000}s)`);
|
|
114
|
+
}
|
|
115
|
+
if (queryResult.status === 'succeeded') {
|
|
116
|
+
const videoContent = queryResult.content?.find(c => c.type === 'video_url');
|
|
117
|
+
const videoUrl = videoContent?.video_url;
|
|
118
|
+
if (!videoUrl) {
|
|
119
|
+
throw new Error('未返回视频 URL');
|
|
120
|
+
}
|
|
121
|
+
if (this.verbose) {
|
|
122
|
+
console.log(`✅ [豆包] 视频生成成功!`);
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
success: true,
|
|
126
|
+
videoUrl,
|
|
127
|
+
taskId,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
if (queryResult.status === 'failed') {
|
|
131
|
+
throw new Error(`视频生成失败: ${queryResult.error?.message || '未知错误'}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`视频生成超时(等待 ${this.maxPollAttempts * this.pollInterval / 1000}s)`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return {
|
|
138
|
+
success: false,
|
|
139
|
+
error: error.message,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
sleep(ms) {
|
|
144
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.DoubaoVideoProvider = DoubaoVideoProvider;
|
|
148
|
+
//# sourceMappingURL=doubao.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doubao.js","sourceRoot":"","sources":["../../../src/core/video-providers/doubao.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { MiniMaxVideoProvider, DEFAULT_MINIMAX_VIDEO_URL } from './minimax';
|
|
2
|
+
export { DoubaoVideoProvider, DEFAULT_DOUBAO_VIDEO_URL, SEEDANCE_MODELS } from './doubao';
|
|
3
|
+
export { KlingVideoProvider, DEFAULT_KLING_VIDEO_URL } from './kling';
|
|
4
|
+
export { RunwayVideoProvider } from './runway';
|
|
5
|
+
export type { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunwayVideoProvider = exports.DEFAULT_KLING_VIDEO_URL = exports.KlingVideoProvider = exports.SEEDANCE_MODELS = exports.DEFAULT_DOUBAO_VIDEO_URL = exports.DoubaoVideoProvider = exports.DEFAULT_MINIMAX_VIDEO_URL = exports.MiniMaxVideoProvider = void 0;
|
|
4
|
+
var minimax_1 = require("./minimax");
|
|
5
|
+
Object.defineProperty(exports, "MiniMaxVideoProvider", { enumerable: true, get: function () { return minimax_1.MiniMaxVideoProvider; } });
|
|
6
|
+
Object.defineProperty(exports, "DEFAULT_MINIMAX_VIDEO_URL", { enumerable: true, get: function () { return minimax_1.DEFAULT_MINIMAX_VIDEO_URL; } });
|
|
7
|
+
var doubao_1 = require("./doubao");
|
|
8
|
+
Object.defineProperty(exports, "DoubaoVideoProvider", { enumerable: true, get: function () { return doubao_1.DoubaoVideoProvider; } });
|
|
9
|
+
Object.defineProperty(exports, "DEFAULT_DOUBAO_VIDEO_URL", { enumerable: true, get: function () { return doubao_1.DEFAULT_DOUBAO_VIDEO_URL; } });
|
|
10
|
+
Object.defineProperty(exports, "SEEDANCE_MODELS", { enumerable: true, get: function () { return doubao_1.SEEDANCE_MODELS; } });
|
|
11
|
+
var kling_1 = require("./kling");
|
|
12
|
+
Object.defineProperty(exports, "KlingVideoProvider", { enumerable: true, get: function () { return kling_1.KlingVideoProvider; } });
|
|
13
|
+
Object.defineProperty(exports, "DEFAULT_KLING_VIDEO_URL", { enumerable: true, get: function () { return kling_1.DEFAULT_KLING_VIDEO_URL; } });
|
|
14
|
+
var runway_1 = require("./runway");
|
|
15
|
+
Object.defineProperty(exports, "RunwayVideoProvider", { enumerable: true, get: function () { return runway_1.RunwayVideoProvider; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/video-providers/index.ts"],"names":[],"mappings":";;;AAAA,qCAA4E;AAAnE,+GAAA,oBAAoB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AACxD,mCAA0F;AAAjF,6GAAA,mBAAmB,OAAA;AAAE,kHAAA,wBAAwB,OAAA;AAAE,yGAAA,eAAe,OAAA;AACvE,iCAAsE;AAA7D,2GAAA,kBAAkB,OAAA;AAAE,gHAAA,uBAAuB,OAAA;AACpD,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_KLING_VIDEO_URL = "https://api.klingai.com/v1/videos/text2video";
|
|
3
|
+
export declare const DEFAULT_KLING_VIDEO_QUERY_URL = "https://api.klingai.com/v1/videos/text2video";
|
|
4
|
+
/**
|
|
5
|
+
* 快手可灵视频生成 Provider (Kling)
|
|
6
|
+
*
|
|
7
|
+
* 支持模型:
|
|
8
|
+
* - kling-v1 (默认)
|
|
9
|
+
* - kling-v1-5
|
|
10
|
+
* - kling-v1-6
|
|
11
|
+
*/
|
|
12
|
+
export declare class KlingVideoProvider implements VideoProvider {
|
|
13
|
+
name: string;
|
|
14
|
+
private apiKey;
|
|
15
|
+
private model;
|
|
16
|
+
private pollInterval;
|
|
17
|
+
private maxPollAttempts;
|
|
18
|
+
private verbose;
|
|
19
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
20
|
+
pollInterval?: number;
|
|
21
|
+
maxPollAttempts?: number;
|
|
22
|
+
verbose?: boolean;
|
|
23
|
+
});
|
|
24
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
25
|
+
private sleep;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=kling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kling.d.ts","sourceRoot":"","sources":["../../../src/core/video-providers/kling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEvF,eAAO,MAAM,uBAAuB,iDAAiD,CAAC;AACtF,eAAO,MAAM,6BAA6B,iDAAiD,CAAC;AAE5F;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,IAAI,SAAiB;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAU;gBAGvB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAmB,EAC1B,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAS5E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwHpF,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KlingVideoProvider = exports.DEFAULT_KLING_VIDEO_QUERY_URL = exports.DEFAULT_KLING_VIDEO_URL = void 0;
|
|
4
|
+
exports.DEFAULT_KLING_VIDEO_URL = 'https://api.klingai.com/v1/videos/text2video';
|
|
5
|
+
exports.DEFAULT_KLING_VIDEO_QUERY_URL = 'https://api.klingai.com/v1/videos/text2video';
|
|
6
|
+
/**
|
|
7
|
+
* 快手可灵视频生成 Provider (Kling)
|
|
8
|
+
*
|
|
9
|
+
* 支持模型:
|
|
10
|
+
* - kling-v1 (默认)
|
|
11
|
+
* - kling-v1-5
|
|
12
|
+
* - kling-v1-6
|
|
13
|
+
*/
|
|
14
|
+
class KlingVideoProvider {
|
|
15
|
+
constructor(apiKey, model = 'kling-v1', options) {
|
|
16
|
+
this.name = 'kling-video';
|
|
17
|
+
this.apiKey = apiKey;
|
|
18
|
+
this.model = model;
|
|
19
|
+
this.pollInterval = options?.pollInterval || 5000;
|
|
20
|
+
this.maxPollAttempts = options?.maxPollAttempts || 120;
|
|
21
|
+
this.verbose = options?.verbose || false;
|
|
22
|
+
}
|
|
23
|
+
async generateVideo(options) {
|
|
24
|
+
const { prompt, duration = 5, aspectRatio = '16:9', } = options;
|
|
25
|
+
if (this.verbose) {
|
|
26
|
+
console.log(`🎬 [可灵] 开始生成视频...`);
|
|
27
|
+
console.log(` 模型: ${this.model}`);
|
|
28
|
+
console.log(` 时长: ${duration}s`);
|
|
29
|
+
console.log(` 宽高比: ${aspectRatio}`);
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
// 1. 创建视频生成任务
|
|
33
|
+
const createResponse = await fetch(exports.DEFAULT_KLING_VIDEO_URL, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: {
|
|
36
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
},
|
|
39
|
+
body: JSON.stringify({
|
|
40
|
+
model: this.model,
|
|
41
|
+
prompt,
|
|
42
|
+
duration: String(duration),
|
|
43
|
+
aspect_ratio: aspectRatio,
|
|
44
|
+
mode: 'std', // std 或 pro
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
47
|
+
if (!createResponse.ok) {
|
|
48
|
+
const errorText = await createResponse.text();
|
|
49
|
+
throw new Error(`创建视频任务失败: ${createResponse.status} - ${errorText}`);
|
|
50
|
+
}
|
|
51
|
+
const createResult = await createResponse.json();
|
|
52
|
+
if (createResult.code !== 0) {
|
|
53
|
+
throw new Error(`创建视频任务失败: ${createResult.message}`);
|
|
54
|
+
}
|
|
55
|
+
const taskId = createResult.data?.task_id;
|
|
56
|
+
if (!taskId) {
|
|
57
|
+
throw new Error('未返回任务 ID');
|
|
58
|
+
}
|
|
59
|
+
if (this.verbose) {
|
|
60
|
+
console.log(` 任务 ID: ${taskId}`);
|
|
61
|
+
console.log(` 等待视频生成...`);
|
|
62
|
+
}
|
|
63
|
+
// 2. 轮询任务状态
|
|
64
|
+
let attempts = 0;
|
|
65
|
+
while (attempts < this.maxPollAttempts) {
|
|
66
|
+
await this.sleep(this.pollInterval);
|
|
67
|
+
attempts++;
|
|
68
|
+
const queryResponse = await fetch(`${exports.DEFAULT_KLING_VIDEO_QUERY_URL}/${taskId}`, {
|
|
69
|
+
method: 'GET',
|
|
70
|
+
headers: {
|
|
71
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
if (!queryResponse.ok) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const queryResult = await queryResponse.json();
|
|
78
|
+
if (this.verbose && attempts % 6 === 0) {
|
|
79
|
+
console.log(` 状态: ${queryResult.data?.task_status} (${attempts * this.pollInterval / 1000}s)`);
|
|
80
|
+
}
|
|
81
|
+
if (queryResult.data?.task_status === 'succeed') {
|
|
82
|
+
const videoUrl = queryResult.data.task_result?.videos?.[0]?.url;
|
|
83
|
+
if (!videoUrl) {
|
|
84
|
+
throw new Error('未返回视频 URL');
|
|
85
|
+
}
|
|
86
|
+
if (this.verbose) {
|
|
87
|
+
console.log(`✅ [可灵] 视频生成成功!`);
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
success: true,
|
|
91
|
+
videoUrl,
|
|
92
|
+
taskId,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (queryResult.data?.task_status === 'failed') {
|
|
96
|
+
throw new Error(`视频生成失败: ${queryResult.message || '未知错误'}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new Error(`视频生成超时(等待 ${this.maxPollAttempts * this.pollInterval / 1000}s)`);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
error: error.message,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
sleep(ms) {
|
|
109
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.KlingVideoProvider = KlingVideoProvider;
|
|
113
|
+
//# sourceMappingURL=kling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kling.js","sourceRoot":"","sources":["../../../src/core/video-providers/kling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { VideoProvider, VideoGenerationOptions, VideoGenerationResult } from './types';
|
|
2
|
+
export declare const DEFAULT_MINIMAX_VIDEO_URL = "https://api.minimax.io/v1/video_generation";
|
|
3
|
+
export declare const DEFAULT_MINIMAX_VIDEO_QUERY_URL = "https://api.minimax.io/v1/query/video_generation";
|
|
4
|
+
export declare const DEFAULT_MINIMAX_FILE_URL = "https://api.minimax.io/v1/files/retrieve";
|
|
5
|
+
/**
|
|
6
|
+
* MiniMax 视频生成 Provider (Hailuo)
|
|
7
|
+
*
|
|
8
|
+
* 支持模型:
|
|
9
|
+
* - MiniMax-Hailuo-2.3 (默认)
|
|
10
|
+
* - MiniMax-Hailuo-02
|
|
11
|
+
* - T2V-01-Director
|
|
12
|
+
* - T2V-01
|
|
13
|
+
*/
|
|
14
|
+
export declare class MiniMaxVideoProvider implements VideoProvider {
|
|
15
|
+
name: string;
|
|
16
|
+
private apiKey;
|
|
17
|
+
private model;
|
|
18
|
+
private pollInterval;
|
|
19
|
+
private maxPollAttempts;
|
|
20
|
+
private verbose;
|
|
21
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
22
|
+
pollInterval?: number;
|
|
23
|
+
maxPollAttempts?: number;
|
|
24
|
+
verbose?: boolean;
|
|
25
|
+
});
|
|
26
|
+
generateVideo(options: VideoGenerationOptions): Promise<VideoGenerationResult>;
|
|
27
|
+
private getVideoUrl;
|
|
28
|
+
private sleep;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=minimax.d.ts.map
|