jimeng-cli 0.3.0 → 0.3.2
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/README.md +1 -1
- package/dist/{chunk-2IIK4X7C.js → chunk-FAXTAAQO.js} +90 -45
- package/dist/{chunk-2IIK4X7C.js.map → chunk-FAXTAAQO.js.map} +1 -1
- package/dist/cli/index.cjs +366 -283
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +277 -240
- package/dist/cli/index.js.map +1 -1
- package/dist/mcp/index.cjs +93 -48
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.js +6 -5
- package/dist/mcp/index.js.map +1 -1
- package/package.json +4 -4
package/dist/mcp/index.cjs
CHANGED
|
@@ -5587,7 +5587,7 @@ var VERSION_CODE = "8.4.0";
|
|
|
5587
5587
|
var DEFAULT_IMAGE_MODEL = "jimeng-4.5";
|
|
5588
5588
|
var DEFAULT_IMAGE_MODEL_US = "jimeng-4.5";
|
|
5589
5589
|
var DEFAULT_VIDEO_MODEL = "jimeng-video-3.5-pro";
|
|
5590
|
-
var DRAFT_VERSION = "3.3.
|
|
5590
|
+
var DRAFT_VERSION = "3.3.9";
|
|
5591
5591
|
var DRAFT_MIN_VERSION = "3.0.2";
|
|
5592
5592
|
var DRAFT_VERSION_OMNI = "3.3.9";
|
|
5593
5593
|
var OMNI_BENEFIT_TYPE = "dreamina_video_seedance_20_video_add";
|
|
@@ -5877,6 +5877,17 @@ var import_mime = __toESM(require("mime"), 1);
|
|
|
5877
5877
|
var import_axios = __toESM(require("axios"), 1);
|
|
5878
5878
|
var import_uuid = require("uuid");
|
|
5879
5879
|
var import_date_fns = require("date-fns");
|
|
5880
|
+
var CRC32_TABLE = (() => {
|
|
5881
|
+
const table = [];
|
|
5882
|
+
for (let i = 0; i < 256; i++) {
|
|
5883
|
+
let crc = i;
|
|
5884
|
+
for (let j = 0; j < 8; j++) {
|
|
5885
|
+
crc = crc & 1 ? 3988292384 ^ crc >>> 1 : crc >>> 1;
|
|
5886
|
+
}
|
|
5887
|
+
table[i] = crc;
|
|
5888
|
+
}
|
|
5889
|
+
return table;
|
|
5890
|
+
})();
|
|
5880
5891
|
var util = {
|
|
5881
5892
|
uuid: (separator = true) => separator ? (0, import_uuid.v4)() : (0, import_uuid.v4)().replace(/-/g, ""),
|
|
5882
5893
|
getDateString(format = "yyyy-MM-dd", date = /* @__PURE__ */ new Date()) {
|
|
@@ -5922,18 +5933,10 @@ var util = {
|
|
|
5922
5933
|
* @returns CRC32 十六进制字符串
|
|
5923
5934
|
*/
|
|
5924
5935
|
calculateCRC32(buffer) {
|
|
5925
|
-
const crcTable = [];
|
|
5926
|
-
for (let i = 0; i < 256; i++) {
|
|
5927
|
-
let crc2 = i;
|
|
5928
|
-
for (let j = 0; j < 8; j++) {
|
|
5929
|
-
crc2 = crc2 & 1 ? 3988292384 ^ crc2 >>> 1 : crc2 >>> 1;
|
|
5930
|
-
}
|
|
5931
|
-
crcTable[i] = crc2;
|
|
5932
|
-
}
|
|
5933
5936
|
let crc = 0 ^ -1;
|
|
5934
5937
|
const bytes = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
5935
5938
|
for (let i = 0; i < bytes.length; i++) {
|
|
5936
|
-
crc = crc >>> 8 ^
|
|
5939
|
+
crc = crc >>> 8 ^ CRC32_TABLE[(crc ^ bytes[i]) & 255];
|
|
5937
5940
|
}
|
|
5938
5941
|
return ((crc ^ -1) >>> 0).toString(16).padStart(8, "0");
|
|
5939
5942
|
}
|
|
@@ -6166,16 +6169,18 @@ var JimengErrorHandler = class {
|
|
|
6166
6169
|
* 处理轮询超时错误
|
|
6167
6170
|
* @returns 如果有部分结果,返回 void 而不抛出异常
|
|
6168
6171
|
*/
|
|
6169
|
-
static handlePollingTimeout(pollCount, maxPollCount, elapsedTime, status, itemCount, historyId) {
|
|
6170
|
-
const
|
|
6172
|
+
static handlePollingTimeout(pollCount, maxPollCount, elapsedTime, status, itemCount, historyId, type = "image") {
|
|
6173
|
+
const typeText = type === "image" ? "\u56FE\u7247" : "\u89C6\u9891";
|
|
6174
|
+
const message = `\u8F6E\u8BE2\u8D85\u65F6: \u5DF2\u8F6E\u8BE2 ${pollCount} \u6B21\uFF0C\u8017\u65F6 ${elapsedTime} \u79D2\uFF0C\u6700\u7EC8\u72B6\u6001: ${status}\uFF0C${typeText}\u6570\u91CF: ${itemCount}`;
|
|
6171
6175
|
logger_default.warn(message + (historyId ? `\uFF0C\u5386\u53F2ID: ${historyId}` : ""));
|
|
6172
6176
|
if (itemCount === 0) {
|
|
6177
|
+
const exception = type === "image" ? exceptions_default.API_IMAGE_GENERATION_FAILED : exceptions_default.API_VIDEO_GENERATION_FAILED;
|
|
6173
6178
|
throw new APIException(
|
|
6174
|
-
|
|
6175
|
-
|
|
6179
|
+
exception,
|
|
6180
|
+
`${typeText}\u751F\u6210\u8D85\u65F6\u4E14\u65E0\u7ED3\u679C\uFF0C\u72B6\u6001\u7801: ${status}${historyId ? `\uFF0C\u5386\u53F2ID: ${historyId}` : ""}`
|
|
6176
6181
|
);
|
|
6177
6182
|
}
|
|
6178
|
-
logger_default.info(`\u8F6E\u8BE2\u8D85\u65F6\u4F46\u5DF2\u83B7\u5F97 ${itemCount} \
|
|
6183
|
+
logger_default.info(`\u8F6E\u8BE2\u8D85\u65F6\u4F46\u5DF2\u83B7\u5F97 ${itemCount} \u4E2A${typeText}\uFF0C\u5C06\u8FD4\u56DE\u73B0\u6709\u7ED3\u679C`);
|
|
6179
6184
|
}
|
|
6180
6185
|
/**
|
|
6181
6186
|
* 处理生成失败错误
|
|
@@ -6240,7 +6245,7 @@ var BASE_URL_IMAGEX_US = "https://imagex16-normal-us-ttp.capcutapi.us";
|
|
|
6240
6245
|
var BASE_URL_DREAMINA_HK = "https://mweb-api-sg.capcut.com";
|
|
6241
6246
|
var BASE_URL_IMAGEX_HK = "https://imagex-normal-sg.capcutapi.com";
|
|
6242
6247
|
var WEB_VERSION = "7.5.0";
|
|
6243
|
-
var DA_VERSION = "3.3.
|
|
6248
|
+
var DA_VERSION = "3.3.12";
|
|
6244
6249
|
|
|
6245
6250
|
// src/api/controllers/core.ts
|
|
6246
6251
|
var DEVICE_ID = Math.random() * 1e18 + 7e18;
|
|
@@ -6628,6 +6633,9 @@ function checkResult(result) {
|
|
|
6628
6633
|
}
|
|
6629
6634
|
async function getTokenLiveStatus(refreshToken, regionInfo) {
|
|
6630
6635
|
try {
|
|
6636
|
+
if (regionInfo.isInternational) {
|
|
6637
|
+
return await checkInternationalTokenLive(refreshToken, regionInfo);
|
|
6638
|
+
}
|
|
6631
6639
|
const result = await request(
|
|
6632
6640
|
"POST",
|
|
6633
6641
|
"/passport/account/info/v2",
|
|
@@ -6646,6 +6654,44 @@ async function getTokenLiveStatus(refreshToken, regionInfo) {
|
|
|
6646
6654
|
return false;
|
|
6647
6655
|
}
|
|
6648
6656
|
}
|
|
6657
|
+
async function checkInternationalTokenLive(refreshToken, regionInfo) {
|
|
6658
|
+
const aid = getAssistantId(regionInfo);
|
|
6659
|
+
const countryCode = regionInfo.isUS ? "us" : regionInfo.isJP ? "jp" : regionInfo.isHK ? "hk" : "sg";
|
|
6660
|
+
const cookie = generateCookie(refreshToken);
|
|
6661
|
+
try {
|
|
6662
|
+
const response = await import_axios2.default.get(
|
|
6663
|
+
"https://dreamina.capcut.com/passport/web/account/info/",
|
|
6664
|
+
{
|
|
6665
|
+
params: {
|
|
6666
|
+
aid,
|
|
6667
|
+
account_sdk_source: "web",
|
|
6668
|
+
sdk_version: "2.1.10-tiktok",
|
|
6669
|
+
language: countryCode === "jp" ? "ja" : "en"
|
|
6670
|
+
},
|
|
6671
|
+
headers: {
|
|
6672
|
+
...FAKE_HEADERS,
|
|
6673
|
+
Cookie: cookie,
|
|
6674
|
+
Referer: "https://dreamina.capcut.com/ai-tool/home/",
|
|
6675
|
+
Origin: "https://dreamina.capcut.com",
|
|
6676
|
+
Appid: String(aid),
|
|
6677
|
+
"store-country-code": countryCode,
|
|
6678
|
+
"store-country-code-src": "uid"
|
|
6679
|
+
},
|
|
6680
|
+
timeout: 15e3
|
|
6681
|
+
}
|
|
6682
|
+
);
|
|
6683
|
+
const data = response.data;
|
|
6684
|
+
if (data && typeof data === "object") {
|
|
6685
|
+
const obj = data;
|
|
6686
|
+
if (obj.user_id || obj.email || obj.data) {
|
|
6687
|
+
return true;
|
|
6688
|
+
}
|
|
6689
|
+
}
|
|
6690
|
+
return false;
|
|
6691
|
+
} catch {
|
|
6692
|
+
return false;
|
|
6693
|
+
}
|
|
6694
|
+
}
|
|
6649
6695
|
|
|
6650
6696
|
// src/lib/smart-poller.ts
|
|
6651
6697
|
var SmartPoller = class {
|
|
@@ -6673,7 +6719,7 @@ var SmartPoller = class {
|
|
|
6673
6719
|
/**
|
|
6674
6720
|
* 根据状态码计算智能轮询间隔
|
|
6675
6721
|
*/
|
|
6676
|
-
getSmartInterval(status,
|
|
6722
|
+
getSmartInterval(status, _itemCount) {
|
|
6677
6723
|
const baseInterval = this.options.pollInterval;
|
|
6678
6724
|
switch (status) {
|
|
6679
6725
|
case 20:
|
|
@@ -6710,9 +6756,6 @@ var SmartPoller = class {
|
|
|
6710
6756
|
if (status === 30) {
|
|
6711
6757
|
return { shouldExit: true, reason: "\u4EFB\u52A1\u5931\u8D25" };
|
|
6712
6758
|
}
|
|
6713
|
-
if (itemCount >= this.options.expectedItemCount && (status === 10 || status === 50)) {
|
|
6714
|
-
return { shouldExit: true, reason: `\u5DF2\u83B7\u5F97\u5B8C\u6574\u7ED3\u679C\u96C6(${itemCount}/${this.options.expectedItemCount})` };
|
|
6715
|
-
}
|
|
6716
6759
|
if (this.pollCount >= this.options.maxPollCount) {
|
|
6717
6760
|
return { shouldExit: true, reason: "\u8F6E\u8BE2\u6B21\u6570\u8D85\u9650" };
|
|
6718
6761
|
}
|
|
@@ -6729,6 +6772,7 @@ var SmartPoller = class {
|
|
|
6729
6772
|
logger_default.info(`\u5F00\u59CB\u667A\u80FD\u8F6E\u8BE2: historyId=${historyId || "N/A"}, \u6700\u5927\u8F6E\u8BE2\u6B21\u6570=${this.options.maxPollCount}, \u671F\u671B\u7ED3\u679C\u6570=${this.options.expectedItemCount}`);
|
|
6730
6773
|
let lastData;
|
|
6731
6774
|
let lastStatus = { status: 20, itemCount: 0 };
|
|
6775
|
+
let exitReason = "";
|
|
6732
6776
|
while (true) {
|
|
6733
6777
|
this.pollCount++;
|
|
6734
6778
|
const elapsedTime = Math.round((Date.now() - this.startTime) / 1e3);
|
|
@@ -6742,6 +6786,7 @@ var SmartPoller = class {
|
|
|
6742
6786
|
}
|
|
6743
6787
|
const { shouldExit, reason } = this.shouldExitPolling(status);
|
|
6744
6788
|
if (shouldExit) {
|
|
6789
|
+
exitReason = reason;
|
|
6745
6790
|
logger_default.info(`\u9000\u51FA\u8F6E\u8BE2: ${reason}, \u6700\u7EC8${this.options.type === "image" ? "\u56FE\u7247" : "\u89C6\u9891"}\u6570\u91CF=${status.itemCount}`);
|
|
6746
6791
|
if (status.status === 30) {
|
|
6747
6792
|
handleGenerationFailure(status.status, status.failCode, historyId, this.options.type, status.itemCount);
|
|
@@ -6753,7 +6798,8 @@ var SmartPoller = class {
|
|
|
6753
6798
|
elapsedTime,
|
|
6754
6799
|
status.status,
|
|
6755
6800
|
status.itemCount,
|
|
6756
|
-
historyId
|
|
6801
|
+
historyId,
|
|
6802
|
+
this.options.type
|
|
6757
6803
|
);
|
|
6758
6804
|
}
|
|
6759
6805
|
break;
|
|
@@ -6797,7 +6843,7 @@ var SmartPoller = class {
|
|
|
6797
6843
|
itemCount: lastStatus.itemCount,
|
|
6798
6844
|
elapsedTime: finalElapsedTime,
|
|
6799
6845
|
pollCount: this.pollCount,
|
|
6800
|
-
exitReason
|
|
6846
|
+
exitReason
|
|
6801
6847
|
};
|
|
6802
6848
|
logger_default.info(`${this.options.type === "image" ? "\u56FE\u50CF" : "\u89C6\u9891"}\u751F\u6210\u5B8C\u6210: \u6210\u529F\u751F\u6210 ${lastStatus.itemCount} \u4E2A\u7ED3\u679C\uFF0C\u603B\u8017\u65F6 ${finalElapsedTime} \u79D2\uFF0C\u6700\u7EC8\u72B6\u6001: ${this.getStatusName(lastStatus.status)}`);
|
|
6803
6849
|
return { result, data: lastData };
|
|
@@ -7036,7 +7082,7 @@ async function uploadImageBuffer(imageBuffer, refreshToken, regionInfo) {
|
|
|
7036
7082
|
"Authorization": auth,
|
|
7037
7083
|
"Connection": "keep-alive",
|
|
7038
7084
|
"Content-CRC32": crc32,
|
|
7039
|
-
"Content-Disposition": 'attachment; filename="
|
|
7085
|
+
"Content-Disposition": 'attachment; filename="upload.bin"',
|
|
7040
7086
|
"Content-Type": "application/octet-stream",
|
|
7041
7087
|
"Origin": origin,
|
|
7042
7088
|
"Referer": RegionUtils.getRefererPath(regionInfo),
|
|
@@ -7165,17 +7211,20 @@ function extractImageUrls(itemList) {
|
|
|
7165
7211
|
return itemList.map((item, index) => extractImageUrl(item, index)).filter((url) => url !== null);
|
|
7166
7212
|
}
|
|
7167
7213
|
function extractVideoUrl(item) {
|
|
7168
|
-
var _a, _b, _c, _d, _e, _f;
|
|
7169
|
-
if ((_c = (_b = (_a = item == null ? void 0 : item.
|
|
7214
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7215
|
+
if ((_c = (_b = (_a = item == null ? void 0 : item.common_attr) == null ? void 0 : _a.transcoded_video) == null ? void 0 : _b.origin) == null ? void 0 : _c.video_url) {
|
|
7216
|
+
return item.common_attr.transcoded_video.origin.video_url;
|
|
7217
|
+
}
|
|
7218
|
+
if ((_f = (_e = (_d = item == null ? void 0 : item.video) == null ? void 0 : _d.transcoded_video) == null ? void 0 : _e.origin) == null ? void 0 : _f.video_url) {
|
|
7170
7219
|
return item.video.transcoded_video.origin.video_url;
|
|
7171
7220
|
}
|
|
7172
|
-
if ((
|
|
7221
|
+
if ((_g = item == null ? void 0 : item.video) == null ? void 0 : _g.play_url) {
|
|
7173
7222
|
return item.video.play_url;
|
|
7174
7223
|
}
|
|
7175
|
-
if ((
|
|
7224
|
+
if ((_h = item == null ? void 0 : item.video) == null ? void 0 : _h.download_url) {
|
|
7176
7225
|
return item.video.download_url;
|
|
7177
7226
|
}
|
|
7178
|
-
if ((
|
|
7227
|
+
if ((_i = item == null ? void 0 : item.video) == null ? void 0 : _i.url) {
|
|
7179
7228
|
return item.video.url;
|
|
7180
7229
|
}
|
|
7181
7230
|
return null;
|
|
@@ -7205,20 +7254,15 @@ async function fetchHighQualityVideoUrl(itemId, refreshToken, regionInfo) {
|
|
|
7205
7254
|
return videoUrl;
|
|
7206
7255
|
}
|
|
7207
7256
|
}
|
|
7208
|
-
const
|
|
7209
|
-
if (
|
|
7210
|
-
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\
|
|
7211
|
-
return
|
|
7212
|
-
}
|
|
7213
|
-
const jimengUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.jimeng\.com\/[^"\s\\]+/);
|
|
7214
|
-
if (jimengUrlMatch && jimengUrlMatch[0]) {
|
|
7215
|
-
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230jimeng\u89C6\u9891URL: ${jimengUrlMatch[0]}`);
|
|
7216
|
-
return jimengUrlMatch[0];
|
|
7257
|
+
const cdnUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.(jimeng|capcut|dreamina)\.com\/[^"\s\\]+/);
|
|
7258
|
+
if (cdnUrlMatch && cdnUrlMatch[0]) {
|
|
7259
|
+
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\u89C6\u9891URL: ${cdnUrlMatch[0]}`);
|
|
7260
|
+
return cdnUrlMatch[0];
|
|
7217
7261
|
}
|
|
7218
|
-
const
|
|
7219
|
-
if (
|
|
7220
|
-
logger_default.info(`\
|
|
7221
|
-
return
|
|
7262
|
+
const vlabUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.vlabvod\.com\/[^"\s\\]+/);
|
|
7263
|
+
if (vlabUrlMatch && vlabUrlMatch[0]) {
|
|
7264
|
+
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\u89C6\u9891URL: ${vlabUrlMatch[0]}`);
|
|
7265
|
+
return vlabUrlMatch[0];
|
|
7222
7266
|
}
|
|
7223
7267
|
logger_default.warn(`\u672A\u80FD\u4ECEget_local_item_list\u54CD\u5E94\u4E2D\u63D0\u53D6\u5230\u89C6\u9891URL`);
|
|
7224
7268
|
return null;
|
|
@@ -10031,7 +10075,8 @@ async function generateVideo(_model, prompt, {
|
|
|
10031
10075
|
isDefaultSeed: 1,
|
|
10032
10076
|
originSubmitId,
|
|
10033
10077
|
isRegenerate: false,
|
|
10034
|
-
enterFrom: "
|
|
10078
|
+
enterFrom: "use_bgimage_prompt",
|
|
10079
|
+
position: "page_bottom_box",
|
|
10035
10080
|
functionMode: flFunctionMode,
|
|
10036
10081
|
sceneOptions: JSON.stringify([sceneOption])
|
|
10037
10082
|
});
|
|
@@ -10156,7 +10201,7 @@ async function generateVideo(_model, prompt, {
|
|
|
10156
10201
|
timeoutSeconds: pollerOptions.timeoutSeconds
|
|
10157
10202
|
});
|
|
10158
10203
|
const { result: pollingResult, data: finalHistoryData } = await poller.poll(async () => {
|
|
10159
|
-
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2;
|
|
10204
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l, _m, _n, _o;
|
|
10160
10205
|
pollAttempts++;
|
|
10161
10206
|
const result = await request("post", "/mweb/v1/get_history_by_ids", refreshToken, regionInfo, {
|
|
10162
10207
|
data: {
|
|
@@ -10181,7 +10226,7 @@ async function generateVideo(_model, prompt, {
|
|
|
10181
10226
|
const currentItemList = historyData.item_list || [];
|
|
10182
10227
|
const finishTime = ((_a2 = historyData.task) == null ? void 0 : _a2.finish_time) || 0;
|
|
10183
10228
|
if (currentItemList.length > 0) {
|
|
10184
|
-
const tempVideoUrl = ((_e2 = (_d2 = (_c2 = (_b2 = currentItemList[0]) == null ? void 0 : _b2.
|
|
10229
|
+
const tempVideoUrl = ((_e2 = (_d2 = (_c2 = (_b2 = currentItemList[0]) == null ? void 0 : _b2.common_attr) == null ? void 0 : _c2.transcoded_video) == null ? void 0 : _d2.origin) == null ? void 0 : _e2.video_url) || ((_i2 = (_h2 = (_g2 = (_f2 = currentItemList[0]) == null ? void 0 : _f2.video) == null ? void 0 : _g2.transcoded_video) == null ? void 0 : _h2.origin) == null ? void 0 : _i2.video_url) || ((_k2 = (_j2 = currentItemList[0]) == null ? void 0 : _j2.video) == null ? void 0 : _k2.play_url) || ((_m = (_l = currentItemList[0]) == null ? void 0 : _l.video) == null ? void 0 : _m.download_url) || ((_o = (_n = currentItemList[0]) == null ? void 0 : _n.video) == null ? void 0 : _o.url);
|
|
10185
10230
|
if (tempVideoUrl) {
|
|
10186
10231
|
logger_default.info(`\u68C0\u6D4B\u5230\u89C6\u9891URL: ${tempVideoUrl}`);
|
|
10187
10232
|
}
|
|
@@ -10268,8 +10313,8 @@ var JimengApiClient = class {
|
|
|
10268
10313
|
}
|
|
10269
10314
|
const candidates = session_pool_default.getEntries(false).filter((item) => item.enabled && item.live !== false && item.region).filter((item) => {
|
|
10270
10315
|
var _a;
|
|
10271
|
-
|
|
10272
|
-
return
|
|
10316
|
+
if (!((_a = item.allowedModels) == null ? void 0 : _a.length)) return true;
|
|
10317
|
+
return true;
|
|
10273
10318
|
});
|
|
10274
10319
|
if (candidates.length === 0) {
|
|
10275
10320
|
throw new Error("No token available for task request. Configure token-pool or pass token.");
|
|
@@ -10383,10 +10428,10 @@ var JimengApiClient = class {
|
|
|
10383
10428
|
return videoResult;
|
|
10384
10429
|
}
|
|
10385
10430
|
if (body.response_format === "b64_json") {
|
|
10386
|
-
|
|
10431
|
+
logger_default.warn("Video b64_json mode is not recommended \u2014 video files can be very large. Using URL mode instead.");
|
|
10387
10432
|
return {
|
|
10388
10433
|
created: util_default.unixTimestamp(),
|
|
10389
|
-
data: [{
|
|
10434
|
+
data: [{ url: videoResult, revised_prompt: prompt }]
|
|
10390
10435
|
};
|
|
10391
10436
|
}
|
|
10392
10437
|
return {
|