jimeng-cli 0.3.1 → 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 +365 -286
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +277 -243
- 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/README.md
CHANGED
|
@@ -5621,6 +5621,17 @@ import mime from "mime";
|
|
|
5621
5621
|
import axios from "axios";
|
|
5622
5622
|
import { v4 as uuidv4 } from "uuid";
|
|
5623
5623
|
import { format as dateFormat } from "date-fns";
|
|
5624
|
+
var CRC32_TABLE = (() => {
|
|
5625
|
+
const table = [];
|
|
5626
|
+
for (let i = 0; i < 256; i++) {
|
|
5627
|
+
let crc = i;
|
|
5628
|
+
for (let j = 0; j < 8; j++) {
|
|
5629
|
+
crc = crc & 1 ? 3988292384 ^ crc >>> 1 : crc >>> 1;
|
|
5630
|
+
}
|
|
5631
|
+
table[i] = crc;
|
|
5632
|
+
}
|
|
5633
|
+
return table;
|
|
5634
|
+
})();
|
|
5624
5635
|
var util = {
|
|
5625
5636
|
uuid: (separator = true) => separator ? uuidv4() : uuidv4().replace(/-/g, ""),
|
|
5626
5637
|
getDateString(format = "yyyy-MM-dd", date = /* @__PURE__ */ new Date()) {
|
|
@@ -5666,18 +5677,10 @@ var util = {
|
|
|
5666
5677
|
* @returns CRC32 十六进制字符串
|
|
5667
5678
|
*/
|
|
5668
5679
|
calculateCRC32(buffer) {
|
|
5669
|
-
const crcTable = [];
|
|
5670
|
-
for (let i = 0; i < 256; i++) {
|
|
5671
|
-
let crc2 = i;
|
|
5672
|
-
for (let j = 0; j < 8; j++) {
|
|
5673
|
-
crc2 = crc2 & 1 ? 3988292384 ^ crc2 >>> 1 : crc2 >>> 1;
|
|
5674
|
-
}
|
|
5675
|
-
crcTable[i] = crc2;
|
|
5676
|
-
}
|
|
5677
5680
|
let crc = 0 ^ -1;
|
|
5678
5681
|
const bytes = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
5679
5682
|
for (let i = 0; i < bytes.length; i++) {
|
|
5680
|
-
crc = crc >>> 8 ^
|
|
5683
|
+
crc = crc >>> 8 ^ CRC32_TABLE[(crc ^ bytes[i]) & 255];
|
|
5681
5684
|
}
|
|
5682
5685
|
return ((crc ^ -1) >>> 0).toString(16).padStart(8, "0");
|
|
5683
5686
|
}
|
|
@@ -5986,16 +5989,18 @@ var JimengErrorHandler = class {
|
|
|
5986
5989
|
* 处理轮询超时错误
|
|
5987
5990
|
* @returns 如果有部分结果,返回 void 而不抛出异常
|
|
5988
5991
|
*/
|
|
5989
|
-
static handlePollingTimeout(pollCount, maxPollCount, elapsedTime, status, itemCount, historyId) {
|
|
5990
|
-
const
|
|
5992
|
+
static handlePollingTimeout(pollCount, maxPollCount, elapsedTime, status, itemCount, historyId, type = "image") {
|
|
5993
|
+
const typeText = type === "image" ? "\u56FE\u7247" : "\u89C6\u9891";
|
|
5994
|
+
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}`;
|
|
5991
5995
|
logger_default.warn(message + (historyId ? `\uFF0C\u5386\u53F2ID: ${historyId}` : ""));
|
|
5992
5996
|
if (itemCount === 0) {
|
|
5997
|
+
const exception = type === "image" ? exceptions_default.API_IMAGE_GENERATION_FAILED : exceptions_default.API_VIDEO_GENERATION_FAILED;
|
|
5993
5998
|
throw new APIException(
|
|
5994
|
-
|
|
5995
|
-
|
|
5999
|
+
exception,
|
|
6000
|
+
`${typeText}\u751F\u6210\u8D85\u65F6\u4E14\u65E0\u7ED3\u679C\uFF0C\u72B6\u6001\u7801: ${status}${historyId ? `\uFF0C\u5386\u53F2ID: ${historyId}` : ""}`
|
|
5996
6001
|
);
|
|
5997
6002
|
}
|
|
5998
|
-
logger_default.info(`\u8F6E\u8BE2\u8D85\u65F6\u4F46\u5DF2\u83B7\u5F97 ${itemCount} \
|
|
6003
|
+
logger_default.info(`\u8F6E\u8BE2\u8D85\u65F6\u4F46\u5DF2\u83B7\u5F97 ${itemCount} \u4E2A${typeText}\uFF0C\u5C06\u8FD4\u56DE\u73B0\u6709\u7ED3\u679C`);
|
|
5999
6004
|
}
|
|
6000
6005
|
/**
|
|
6001
6006
|
* 处理生成失败错误
|
|
@@ -6060,7 +6065,7 @@ var BASE_URL_IMAGEX_US = "https://imagex16-normal-us-ttp.capcutapi.us";
|
|
|
6060
6065
|
var BASE_URL_DREAMINA_HK = "https://mweb-api-sg.capcut.com";
|
|
6061
6066
|
var BASE_URL_IMAGEX_HK = "https://imagex-normal-sg.capcutapi.com";
|
|
6062
6067
|
var WEB_VERSION = "7.5.0";
|
|
6063
|
-
var DA_VERSION = "3.3.
|
|
6068
|
+
var DA_VERSION = "3.3.12";
|
|
6064
6069
|
|
|
6065
6070
|
// src/api/consts/common.ts
|
|
6066
6071
|
var BASE_URL_CN = "https://jimeng.jianying.com";
|
|
@@ -6081,7 +6086,7 @@ var VERSION_CODE = "8.4.0";
|
|
|
6081
6086
|
var DEFAULT_IMAGE_MODEL = "jimeng-4.5";
|
|
6082
6087
|
var DEFAULT_IMAGE_MODEL_US = "jimeng-4.5";
|
|
6083
6088
|
var DEFAULT_VIDEO_MODEL = "jimeng-video-3.5-pro";
|
|
6084
|
-
var DRAFT_VERSION = "3.3.
|
|
6089
|
+
var DRAFT_VERSION = "3.3.9";
|
|
6085
6090
|
var DRAFT_MIN_VERSION = "3.0.2";
|
|
6086
6091
|
var DRAFT_VERSION_OMNI = "3.3.9";
|
|
6087
6092
|
var OMNI_BENEFIT_TYPE = "dreamina_video_seedance_20_video_add";
|
|
@@ -6594,6 +6599,9 @@ function checkResult(result) {
|
|
|
6594
6599
|
}
|
|
6595
6600
|
async function getTokenLiveStatus(refreshToken, regionInfo) {
|
|
6596
6601
|
try {
|
|
6602
|
+
if (regionInfo.isInternational) {
|
|
6603
|
+
return await checkInternationalTokenLive(refreshToken, regionInfo);
|
|
6604
|
+
}
|
|
6597
6605
|
const result = await request(
|
|
6598
6606
|
"POST",
|
|
6599
6607
|
"/passport/account/info/v2",
|
|
@@ -6612,6 +6620,44 @@ async function getTokenLiveStatus(refreshToken, regionInfo) {
|
|
|
6612
6620
|
return false;
|
|
6613
6621
|
}
|
|
6614
6622
|
}
|
|
6623
|
+
async function checkInternationalTokenLive(refreshToken, regionInfo) {
|
|
6624
|
+
const aid = getAssistantId(regionInfo);
|
|
6625
|
+
const countryCode = regionInfo.isUS ? "us" : regionInfo.isJP ? "jp" : regionInfo.isHK ? "hk" : "sg";
|
|
6626
|
+
const cookie = generateCookie(refreshToken);
|
|
6627
|
+
try {
|
|
6628
|
+
const response = await axios2.get(
|
|
6629
|
+
"https://dreamina.capcut.com/passport/web/account/info/",
|
|
6630
|
+
{
|
|
6631
|
+
params: {
|
|
6632
|
+
aid,
|
|
6633
|
+
account_sdk_source: "web",
|
|
6634
|
+
sdk_version: "2.1.10-tiktok",
|
|
6635
|
+
language: countryCode === "jp" ? "ja" : "en"
|
|
6636
|
+
},
|
|
6637
|
+
headers: {
|
|
6638
|
+
...FAKE_HEADERS,
|
|
6639
|
+
Cookie: cookie,
|
|
6640
|
+
Referer: "https://dreamina.capcut.com/ai-tool/home/",
|
|
6641
|
+
Origin: "https://dreamina.capcut.com",
|
|
6642
|
+
Appid: String(aid),
|
|
6643
|
+
"store-country-code": countryCode,
|
|
6644
|
+
"store-country-code-src": "uid"
|
|
6645
|
+
},
|
|
6646
|
+
timeout: 15e3
|
|
6647
|
+
}
|
|
6648
|
+
);
|
|
6649
|
+
const data = response.data;
|
|
6650
|
+
if (data && typeof data === "object") {
|
|
6651
|
+
const obj = data;
|
|
6652
|
+
if (obj.user_id || obj.email || obj.data) {
|
|
6653
|
+
return true;
|
|
6654
|
+
}
|
|
6655
|
+
}
|
|
6656
|
+
return false;
|
|
6657
|
+
} catch {
|
|
6658
|
+
return false;
|
|
6659
|
+
}
|
|
6660
|
+
}
|
|
6615
6661
|
|
|
6616
6662
|
// src/lib/session-pool.ts
|
|
6617
6663
|
import path4 from "path";
|
|
@@ -7428,7 +7474,7 @@ var SmartPoller = class {
|
|
|
7428
7474
|
/**
|
|
7429
7475
|
* 根据状态码计算智能轮询间隔
|
|
7430
7476
|
*/
|
|
7431
|
-
getSmartInterval(status,
|
|
7477
|
+
getSmartInterval(status, _itemCount) {
|
|
7432
7478
|
const baseInterval = this.options.pollInterval;
|
|
7433
7479
|
switch (status) {
|
|
7434
7480
|
case 20:
|
|
@@ -7465,9 +7511,6 @@ var SmartPoller = class {
|
|
|
7465
7511
|
if (status === 30) {
|
|
7466
7512
|
return { shouldExit: true, reason: "\u4EFB\u52A1\u5931\u8D25" };
|
|
7467
7513
|
}
|
|
7468
|
-
if (itemCount >= this.options.expectedItemCount && (status === 10 || status === 50)) {
|
|
7469
|
-
return { shouldExit: true, reason: `\u5DF2\u83B7\u5F97\u5B8C\u6574\u7ED3\u679C\u96C6(${itemCount}/${this.options.expectedItemCount})` };
|
|
7470
|
-
}
|
|
7471
7514
|
if (this.pollCount >= this.options.maxPollCount) {
|
|
7472
7515
|
return { shouldExit: true, reason: "\u8F6E\u8BE2\u6B21\u6570\u8D85\u9650" };
|
|
7473
7516
|
}
|
|
@@ -7484,6 +7527,7 @@ var SmartPoller = class {
|
|
|
7484
7527
|
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}`);
|
|
7485
7528
|
let lastData;
|
|
7486
7529
|
let lastStatus = { status: 20, itemCount: 0 };
|
|
7530
|
+
let exitReason = "";
|
|
7487
7531
|
while (true) {
|
|
7488
7532
|
this.pollCount++;
|
|
7489
7533
|
const elapsedTime = Math.round((Date.now() - this.startTime) / 1e3);
|
|
@@ -7497,6 +7541,7 @@ var SmartPoller = class {
|
|
|
7497
7541
|
}
|
|
7498
7542
|
const { shouldExit, reason } = this.shouldExitPolling(status);
|
|
7499
7543
|
if (shouldExit) {
|
|
7544
|
+
exitReason = reason;
|
|
7500
7545
|
logger_default.info(`\u9000\u51FA\u8F6E\u8BE2: ${reason}, \u6700\u7EC8${this.options.type === "image" ? "\u56FE\u7247" : "\u89C6\u9891"}\u6570\u91CF=${status.itemCount}`);
|
|
7501
7546
|
if (status.status === 30) {
|
|
7502
7547
|
handleGenerationFailure(status.status, status.failCode, historyId, this.options.type, status.itemCount);
|
|
@@ -7508,7 +7553,8 @@ var SmartPoller = class {
|
|
|
7508
7553
|
elapsedTime,
|
|
7509
7554
|
status.status,
|
|
7510
7555
|
status.itemCount,
|
|
7511
|
-
historyId
|
|
7556
|
+
historyId,
|
|
7557
|
+
this.options.type
|
|
7512
7558
|
);
|
|
7513
7559
|
}
|
|
7514
7560
|
break;
|
|
@@ -7552,7 +7598,7 @@ var SmartPoller = class {
|
|
|
7552
7598
|
itemCount: lastStatus.itemCount,
|
|
7553
7599
|
elapsedTime: finalElapsedTime,
|
|
7554
7600
|
pollCount: this.pollCount,
|
|
7555
|
-
exitReason
|
|
7601
|
+
exitReason
|
|
7556
7602
|
};
|
|
7557
7603
|
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)}`);
|
|
7558
7604
|
return { result, data: lastData };
|
|
@@ -7598,17 +7644,20 @@ function extractImageUrls(itemList) {
|
|
|
7598
7644
|
return itemList.map((item, index) => extractImageUrl(item, index)).filter((url) => url !== null);
|
|
7599
7645
|
}
|
|
7600
7646
|
function extractVideoUrl(item) {
|
|
7601
|
-
var _a, _b, _c, _d, _e, _f;
|
|
7602
|
-
if ((_c = (_b = (_a = item == null ? void 0 : item.
|
|
7647
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7648
|
+
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) {
|
|
7649
|
+
return item.common_attr.transcoded_video.origin.video_url;
|
|
7650
|
+
}
|
|
7651
|
+
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) {
|
|
7603
7652
|
return item.video.transcoded_video.origin.video_url;
|
|
7604
7653
|
}
|
|
7605
|
-
if ((
|
|
7654
|
+
if ((_g = item == null ? void 0 : item.video) == null ? void 0 : _g.play_url) {
|
|
7606
7655
|
return item.video.play_url;
|
|
7607
7656
|
}
|
|
7608
|
-
if ((
|
|
7657
|
+
if ((_h = item == null ? void 0 : item.video) == null ? void 0 : _h.download_url) {
|
|
7609
7658
|
return item.video.download_url;
|
|
7610
7659
|
}
|
|
7611
|
-
if ((
|
|
7660
|
+
if ((_i = item == null ? void 0 : item.video) == null ? void 0 : _i.url) {
|
|
7612
7661
|
return item.video.url;
|
|
7613
7662
|
}
|
|
7614
7663
|
return null;
|
|
@@ -7638,20 +7687,15 @@ async function fetchHighQualityVideoUrl(itemId, refreshToken, regionInfo) {
|
|
|
7638
7687
|
return videoUrl;
|
|
7639
7688
|
}
|
|
7640
7689
|
}
|
|
7641
|
-
const
|
|
7642
|
-
if (
|
|
7643
|
-
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\
|
|
7644
|
-
return
|
|
7690
|
+
const cdnUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.(jimeng|capcut|dreamina)\.com\/[^"\s\\]+/);
|
|
7691
|
+
if (cdnUrlMatch && cdnUrlMatch[0]) {
|
|
7692
|
+
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\u89C6\u9891URL: ${cdnUrlMatch[0]}`);
|
|
7693
|
+
return cdnUrlMatch[0];
|
|
7645
7694
|
}
|
|
7646
|
-
const
|
|
7647
|
-
if (
|
|
7648
|
-
logger_default.info(`\u6B63\u5219\u63D0\u53D6\
|
|
7649
|
-
return
|
|
7650
|
-
}
|
|
7651
|
-
const anyVideoUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.(vlabvod|jimeng)\.com\/[^"\s\\]+/);
|
|
7652
|
-
if (anyVideoUrlMatch && anyVideoUrlMatch[0]) {
|
|
7653
|
-
logger_default.info(`\u4ECEget_local_item_list\u63D0\u53D6\u5230\u89C6\u9891URL: ${anyVideoUrlMatch[0]}`);
|
|
7654
|
-
return anyVideoUrlMatch[0];
|
|
7695
|
+
const vlabUrlMatch = responseStr.match(/https:\/\/v[0-9]+-[^"\\]*\.vlabvod\.com\/[^"\s\\]+/);
|
|
7696
|
+
if (vlabUrlMatch && vlabUrlMatch[0]) {
|
|
7697
|
+
logger_default.info(`\u6B63\u5219\u63D0\u53D6\u5230\u89C6\u9891URL: ${vlabUrlMatch[0]}`);
|
|
7698
|
+
return vlabUrlMatch[0];
|
|
7655
7699
|
}
|
|
7656
7700
|
logger_default.warn(`\u672A\u80FD\u4ECEget_local_item_list\u54CD\u5E94\u4E2D\u63D0\u53D6\u5230\u89C6\u9891URL`);
|
|
7657
7701
|
return null;
|
|
@@ -8052,7 +8096,7 @@ async function uploadImageBuffer(imageBuffer, refreshToken, regionInfo) {
|
|
|
8052
8096
|
"Authorization": auth,
|
|
8053
8097
|
"Connection": "keep-alive",
|
|
8054
8098
|
"Content-CRC32": crc32,
|
|
8055
|
-
"Content-Disposition": 'attachment; filename="
|
|
8099
|
+
"Content-Disposition": 'attachment; filename="upload.bin"',
|
|
8056
8100
|
"Content-Type": "application/octet-stream",
|
|
8057
8101
|
"Origin": origin,
|
|
8058
8102
|
"Referer": RegionUtils.getRefererPath(regionInfo),
|
|
@@ -10000,7 +10044,8 @@ async function generateVideo(_model, prompt, {
|
|
|
10000
10044
|
isDefaultSeed: 1,
|
|
10001
10045
|
originSubmitId,
|
|
10002
10046
|
isRegenerate: false,
|
|
10003
|
-
enterFrom: "
|
|
10047
|
+
enterFrom: "use_bgimage_prompt",
|
|
10048
|
+
position: "page_bottom_box",
|
|
10004
10049
|
functionMode: flFunctionMode,
|
|
10005
10050
|
sceneOptions: JSON.stringify([sceneOption])
|
|
10006
10051
|
});
|
|
@@ -10125,7 +10170,7 @@ async function generateVideo(_model, prompt, {
|
|
|
10125
10170
|
timeoutSeconds: pollerOptions.timeoutSeconds
|
|
10126
10171
|
});
|
|
10127
10172
|
const { result: pollingResult, data: finalHistoryData } = await poller.poll(async () => {
|
|
10128
|
-
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2;
|
|
10173
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l, _m, _n, _o;
|
|
10129
10174
|
pollAttempts++;
|
|
10130
10175
|
const result = await request("post", "/mweb/v1/get_history_by_ids", refreshToken, regionInfo, {
|
|
10131
10176
|
data: {
|
|
@@ -10150,7 +10195,7 @@ async function generateVideo(_model, prompt, {
|
|
|
10150
10195
|
const currentItemList = historyData.item_list || [];
|
|
10151
10196
|
const finishTime = ((_a2 = historyData.task) == null ? void 0 : _a2.finish_time) || 0;
|
|
10152
10197
|
if (currentItemList.length > 0) {
|
|
10153
|
-
const tempVideoUrl = ((_e2 = (_d2 = (_c2 = (_b2 = currentItemList[0]) == null ? void 0 : _b2.
|
|
10198
|
+
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);
|
|
10154
10199
|
if (tempVideoUrl) {
|
|
10155
10200
|
logger_default.info(`\u68C0\u6D4B\u5230\u89C6\u9891URL: ${tempVideoUrl}`);
|
|
10156
10201
|
}
|
|
@@ -10225,4 +10270,4 @@ lodash/lodash.js:
|
|
|
10225
10270
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
10226
10271
|
*)
|
|
10227
10272
|
*/
|
|
10228
|
-
//# sourceMappingURL=chunk-
|
|
10273
|
+
//# sourceMappingURL=chunk-FAXTAAQO.js.map
|