siluzan-cso-cli 1.1.12 → 1.1.14
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 +34 -30
- package/dist/{chunk-K7JCQOEZ.js → chunk-TVHODPID.js} +28 -20
- package/dist/{extract-cover-QK3HAZI2.js → extract-cover-RZ5OIHTV.js} +1 -1
- package/dist/index.js +685 -353
- package/dist/skill/SKILL.md +52 -53
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/three-lib-content-workflow.example.md +14 -1
- package/dist/skill/assets//344/272/247/345/223/201/350/265/204/344/272/247/345/272/223.md +1 -1
- package/dist/skill/assets//346/265/201/351/207/217/345/233/240/345/255/220/345/272/223.md +353 -351
- package/dist/skill/assets//347/203/271/350/260/203/346/226/271/346/263/225/345/272/223.md +1 -1
- package/dist/skill/references/account-group.md +15 -15
- package/dist/skill/references/authorize.md +8 -9
- package/dist/skill/references/extract-cover.md +14 -14
- package/dist/skill/references/list-accounts.md +31 -31
- package/dist/skill/references/persona.md +13 -13
- package/dist/skill/references/planning.md +26 -26
- package/dist/skill/references/publish.md +17 -9
- package/dist/skill/references/rag.md +25 -18
- package/dist/skill/references/report.md +35 -35
- package/dist/skill/references/setup.md +7 -4
- package/dist/skill/references/task.md +22 -21
- package/dist/skill/references/upload.md +5 -5
- package/dist/skill/references/web-pages.md +38 -40
- package/dist/skill/three-lib-content-workflow/collaboration.md +11 -0
- package/dist/skill/three-lib-content-workflow/content-writer.workflow.md +4 -3
- package/dist/skill/three-lib-content-workflow/persona-reverse-sop.md +39 -0
- package/dist/skill/three-lib-content-workflow/sop.md +22 -4
- package/package.json +20 -20
- package/scripts/postinstall.mjs +3 -1
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
__commonJS,
|
|
4
4
|
__toESM,
|
|
5
5
|
runExtractCover
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TVHODPID.js";
|
|
7
7
|
|
|
8
8
|
// ../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js
|
|
9
9
|
var require_constants = __commonJS({
|
|
@@ -2185,11 +2185,7 @@ function writeSharedConfig(partial) {
|
|
|
2185
2185
|
} catch {
|
|
2186
2186
|
}
|
|
2187
2187
|
}
|
|
2188
|
-
const keys = [
|
|
2189
|
-
"authToken",
|
|
2190
|
-
"apiKey",
|
|
2191
|
-
"dataPermission"
|
|
2192
|
-
];
|
|
2188
|
+
const keys = ["authToken", "apiKey", "dataPermission"];
|
|
2193
2189
|
for (const k of keys) {
|
|
2194
2190
|
if (partial[k] !== void 0) existing[k] = partial[k];
|
|
2195
2191
|
}
|
|
@@ -2238,7 +2234,7 @@ function validateBaseUrl(raw) {
|
|
|
2238
2234
|
var DEFAULT_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
2239
2235
|
var MAX_RESPONSE_BYTES = 50 * 1024 * 1024;
|
|
2240
2236
|
function rawRequest(url, options) {
|
|
2241
|
-
return new Promise((
|
|
2237
|
+
return new Promise((resolve22, reject) => {
|
|
2242
2238
|
const parsed = new URL(url);
|
|
2243
2239
|
const transport = parsed.protocol === "https:" ? https : http;
|
|
2244
2240
|
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
@@ -2259,7 +2255,9 @@ function rawRequest(url, options) {
|
|
|
2259
2255
|
byteLen += Buffer.byteLength(chunk, "utf8");
|
|
2260
2256
|
if (maxBytes && byteLen > maxBytes) {
|
|
2261
2257
|
res.destroy();
|
|
2262
|
-
reject(
|
|
2258
|
+
reject(
|
|
2259
|
+
new Error(`\u54CD\u5E94\u4F53\u8D85\u8FC7\u4E0A\u9650\uFF08${(maxBytes / 1024 / 1024).toFixed(0)} MB\uFF09\uFF0C\u5DF2\u4E2D\u65AD\u8FDE\u63A5`)
|
|
2260
|
+
);
|
|
2263
2261
|
return;
|
|
2264
2262
|
}
|
|
2265
2263
|
data += chunk;
|
|
@@ -2271,12 +2269,16 @@ function rawRequest(url, options) {
|
|
|
2271
2269
|
headers[key.toLowerCase()] = Array.isArray(val) ? val[0] : val;
|
|
2272
2270
|
}
|
|
2273
2271
|
}
|
|
2274
|
-
|
|
2272
|
+
resolve22({ status: res.statusCode ?? 0, text: data, headers });
|
|
2275
2273
|
});
|
|
2276
2274
|
});
|
|
2277
2275
|
req.on("timeout", () => {
|
|
2278
2276
|
req.destroy();
|
|
2279
|
-
reject(
|
|
2277
|
+
reject(
|
|
2278
|
+
new Error(
|
|
2279
|
+
`\u8BF7\u6C42\u8D85\u65F6\uFF08${(timeoutMs / 1e3).toFixed(0)} \u79D2\uFF09\uFF1A${options.method ?? "GET"} ${url}`
|
|
2280
|
+
)
|
|
2281
|
+
);
|
|
2280
2282
|
});
|
|
2281
2283
|
req.on("error", reject);
|
|
2282
2284
|
if (options.body) req.write(options.body);
|
|
@@ -2377,16 +2379,19 @@ function deriveMainApiOrigin(apiBase) {
|
|
|
2377
2379
|
try {
|
|
2378
2380
|
const u = new URL(apiBase);
|
|
2379
2381
|
const host = u.hostname.toLowerCase();
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2382
|
+
const isCi = apiBase.includes("-ci");
|
|
2383
|
+
if (host.endsWith("siluzan.com") || host.endsWith("siluzan.cn")) {
|
|
2384
|
+
if (host.startsWith("tso-api")) {
|
|
2385
|
+
const suffix = host.endsWith("siluzan.cn") ? "siluzan.cn" : "siluzan.com";
|
|
2386
|
+
const apiHost = isCi ? `api-ci.${suffix}` : `api.${suffix}`;
|
|
2387
|
+
return `${u.protocol}//${apiHost}${u.port ? `:${u.port}` : ""}`;
|
|
2388
|
+
}
|
|
2389
|
+
if (host === "api.siluzan.com" || host === "api-ci.siluzan.com" || host === "api.siluzan.cn" || host === "api-ci.siluzan.cn") {
|
|
2390
|
+
return `${u.protocol}//${host}${u.port ? `:${u.port}` : ""}`;
|
|
2391
|
+
}
|
|
2392
|
+
return isCi ? "https://api-ci.siluzan.com" : "https://api.siluzan.com";
|
|
2388
2393
|
}
|
|
2389
|
-
return
|
|
2394
|
+
return isCi ? "https://api-ci.siluzan.com" : "https://api.siluzan.com";
|
|
2390
2395
|
} catch {
|
|
2391
2396
|
return apiBase.includes("-ci") ? "https://api-ci.siluzan.com" : "https://api.siluzan.com";
|
|
2392
2397
|
}
|
|
@@ -2445,6 +2450,10 @@ async function fetchSiluzanCurrentUser(apiBase, config) {
|
|
|
2445
2450
|
return null;
|
|
2446
2451
|
}
|
|
2447
2452
|
}
|
|
2453
|
+
var MIN_SEGMENT_BYTES = 256 * 1024;
|
|
2454
|
+
var MAX_SEGMENT_BYTES = 50 * 1024 * 1024;
|
|
2455
|
+
var MAX_RETENTION_DAYS = 366 * 5;
|
|
2456
|
+
var PRUNE_THROTTLE_MS = 60 * 60 * 1e3;
|
|
2448
2457
|
|
|
2449
2458
|
// src/commands/login.ts
|
|
2450
2459
|
async function runLogin(opts = {}) {
|
|
@@ -2668,11 +2677,10 @@ async function runUpdate(options) {
|
|
|
2668
2677
|
}
|
|
2669
2678
|
if (isNpmGlobalInstall()) {
|
|
2670
2679
|
try {
|
|
2671
|
-
const result = spawnSync(
|
|
2672
|
-
"
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
);
|
|
2680
|
+
const result = spawnSync("npm", ["install", "-g", `siluzan-cso-cli@${targetVersion}`], {
|
|
2681
|
+
stdio: "inherit",
|
|
2682
|
+
shell: false
|
|
2683
|
+
});
|
|
2676
2684
|
if (result.status !== 0) {
|
|
2677
2685
|
throw new Error(`npm install \u9000\u51FA\u7801\uFF1A${result.status ?? "unknown"}`);
|
|
2678
2686
|
}
|
|
@@ -2727,8 +2735,10 @@ async function runUpdate(options) {
|
|
|
2727
2735
|
}
|
|
2728
2736
|
}
|
|
2729
2737
|
if (failCount > 0) {
|
|
2730
|
-
console.error(
|
|
2731
|
-
|
|
2738
|
+
console.error(
|
|
2739
|
+
`
|
|
2740
|
+
\u26A0\uFE0F ${targets.length} \u5904\u5B89\u88C5\u4F4D\u7F6E\u4E2D\u6709 ${failCount} \u5904\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u4E0A\u65B9\u9519\u8BEF\u4FE1\u606F\u3002`
|
|
2741
|
+
);
|
|
2732
2742
|
console.log(" \u5982\u679C AI \u52A9\u624B\u6B63\u5728\u8FD0\u884C\uFF0C\u5EFA\u8BAE\u91CD\u542F\u4EE5\u4F7F\u5DF2\u6210\u529F\u7684 skill \u6587\u4EF6\u751F\u6548\u3002\n");
|
|
2733
2743
|
process.exit(1);
|
|
2734
2744
|
}
|
|
@@ -2768,7 +2778,14 @@ function loadConfig(tokenArg) {
|
|
|
2768
2778
|
\u274C agentBaseUrl \u4E0D\u5408\u6CD5\uFF1A${agentErr}`);
|
|
2769
2779
|
process.exit(1);
|
|
2770
2780
|
}
|
|
2771
|
-
return {
|
|
2781
|
+
return {
|
|
2782
|
+
apiBaseUrl,
|
|
2783
|
+
csoBaseUrl,
|
|
2784
|
+
agentBaseUrl,
|
|
2785
|
+
authToken,
|
|
2786
|
+
apiKey,
|
|
2787
|
+
dataPermission: process.env.SILUZAN_DATA_PERMISSION ?? shared.dataPermission
|
|
2788
|
+
};
|
|
2772
2789
|
}
|
|
2773
2790
|
function apiFetch2(url, config, options = {}, verbose = false) {
|
|
2774
2791
|
return apiFetch(url, config, options, verbose);
|
|
@@ -3002,7 +3019,9 @@ async function runListAccounts(options) {
|
|
|
3002
3019
|
\u63D0\u793A\uFF1A\u8FD8\u6709\u66F4\u591A\u8D26\u53F7\uFF0C\u4F7F\u7528 --page ${pageNo + 1} \u53EF\u67E5\u770B\u4E0B\u4E00\u9875\u3002`);
|
|
3003
3020
|
}
|
|
3004
3021
|
console.log("\u63D0\u793A\uFF1A\u4F7F\u7528 --json \u53EF\u83B7\u53D6\u5B8C\u6574 JSON \u6570\u636E\uFF08\u542B mediaCustomerId \u7B49\u5B57\u6BB5\uFF09\u3002");
|
|
3005
|
-
console.log(
|
|
3022
|
+
console.log(
|
|
3023
|
+
`\u63D0\u793A\uFF1A\u8D26\u53F7\u8BE6\u7EC6\u6570\u636E\u8BF7\u767B\u5F55\u540E\u53F0\u67E5\u770B \u{1F449} ${DEFAULT_WEB_BASE}/v3/foreign_trade/cso/ManageAccounts`
|
|
3024
|
+
);
|
|
3006
3025
|
}
|
|
3007
3026
|
|
|
3008
3027
|
// src/commands/list-members.ts
|
|
@@ -3177,11 +3196,16 @@ async function runAccountGroupCreate(options) {
|
|
|
3177
3196
|
const url = `${config.apiBaseUrl}/command/media-account/SetMediaAccountGroup`;
|
|
3178
3197
|
let res;
|
|
3179
3198
|
try {
|
|
3180
|
-
res = await apiFetch2(
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3199
|
+
res = await apiFetch2(
|
|
3200
|
+
url,
|
|
3201
|
+
config,
|
|
3202
|
+
{
|
|
3203
|
+
method: "POST",
|
|
3204
|
+
headers: { "Content-Type": "application/json" },
|
|
3205
|
+
body: JSON.stringify(body)
|
|
3206
|
+
},
|
|
3207
|
+
options.verbose
|
|
3208
|
+
);
|
|
3185
3209
|
} catch (e) {
|
|
3186
3210
|
const msg = e.message;
|
|
3187
3211
|
console.error(`
|
|
@@ -3206,7 +3230,9 @@ async function runAccountGroupCreate(options) {
|
|
|
3206
3230
|
if (accountIds.length > 0) {
|
|
3207
3231
|
console.log(` \u5DF2\u6DFB\u52A0 ${accountIds.length} \u4E2A\u8D26\u53F7\uFF1A${accountIds.join(", ")}`);
|
|
3208
3232
|
} else {
|
|
3209
|
-
console.log(
|
|
3233
|
+
console.log(
|
|
3234
|
+
" \u63D0\u793A\uFF1A\u5206\u7EC4\u6682\u65E0\u8D26\u53F7\uFF0C\u53EF\u4F7F\u7528 account-group update --id <id> --accounts <ids> \u6DFB\u52A0\u8D26\u53F7"
|
|
3235
|
+
);
|
|
3210
3236
|
}
|
|
3211
3237
|
console.log("\n\u4F7F\u7528 siluzan-cso account-group list \u67E5\u770B\u6240\u6709\u5206\u7EC4\u3002");
|
|
3212
3238
|
}
|
|
@@ -3222,11 +3248,16 @@ async function runAccountGroupUpdate(options) {
|
|
|
3222
3248
|
const url = `${config.apiBaseUrl}/command/media-account/SetMediaAccountGroup`;
|
|
3223
3249
|
let res;
|
|
3224
3250
|
try {
|
|
3225
|
-
res = await apiFetch2(
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3251
|
+
res = await apiFetch2(
|
|
3252
|
+
url,
|
|
3253
|
+
config,
|
|
3254
|
+
{
|
|
3255
|
+
method: "POST",
|
|
3256
|
+
headers: { "Content-Type": "application/json" },
|
|
3257
|
+
body: JSON.stringify(body)
|
|
3258
|
+
},
|
|
3259
|
+
options.verbose
|
|
3260
|
+
);
|
|
3230
3261
|
} catch (e) {
|
|
3231
3262
|
const msg = e.message;
|
|
3232
3263
|
console.error(`
|
|
@@ -3312,23 +3343,39 @@ async function runAccountGroupAddAccounts(options) {
|
|
|
3312
3343
|
const url = `${config.apiBaseUrl}/command/media-account/SetMediaAccountGroup`;
|
|
3313
3344
|
let res;
|
|
3314
3345
|
try {
|
|
3315
|
-
res = await apiFetch2(
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3346
|
+
res = await apiFetch2(
|
|
3347
|
+
url,
|
|
3348
|
+
config,
|
|
3349
|
+
{
|
|
3350
|
+
method: "POST",
|
|
3351
|
+
headers: { "Content-Type": "application/json" },
|
|
3352
|
+
body: JSON.stringify(body)
|
|
3353
|
+
},
|
|
3354
|
+
options.verbose
|
|
3355
|
+
);
|
|
3320
3356
|
} catch (e) {
|
|
3321
3357
|
console.error(`
|
|
3322
3358
|
\u274C \u8BF7\u6C42\u5931\u8D25\uFF1A${e.message}`);
|
|
3323
3359
|
process.exit(1);
|
|
3324
3360
|
}
|
|
3325
3361
|
if (typeof res !== "string") {
|
|
3326
|
-
console.error(
|
|
3327
|
-
|
|
3362
|
+
console.error(
|
|
3363
|
+
`
|
|
3364
|
+
\u274C \u6DFB\u52A0\u8D26\u53F7\u5931\u8D25\uFF1A${res.message ?? "\u670D\u52A1\u7AEF\u8FD4\u56DE\u5F02\u5E38"}`
|
|
3365
|
+
);
|
|
3328
3366
|
process.exit(1);
|
|
3329
3367
|
}
|
|
3330
3368
|
if (options.json) {
|
|
3331
|
-
console.log(
|
|
3369
|
+
console.log(
|
|
3370
|
+
JSON.stringify({
|
|
3371
|
+
success: true,
|
|
3372
|
+
id: options.id,
|
|
3373
|
+
name,
|
|
3374
|
+
added: addedCount,
|
|
3375
|
+
total: merged.length,
|
|
3376
|
+
accountIds: merged
|
|
3377
|
+
})
|
|
3378
|
+
);
|
|
3332
3379
|
return;
|
|
3333
3380
|
}
|
|
3334
3381
|
if (addedCount === 0) {
|
|
@@ -3362,31 +3409,51 @@ async function runAccountGroupRemoveAccounts(options) {
|
|
|
3362
3409
|
const url = `${config.apiBaseUrl}/command/media-account/SetMediaAccountGroup`;
|
|
3363
3410
|
let res;
|
|
3364
3411
|
try {
|
|
3365
|
-
res = await apiFetch2(
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3412
|
+
res = await apiFetch2(
|
|
3413
|
+
url,
|
|
3414
|
+
config,
|
|
3415
|
+
{
|
|
3416
|
+
method: "POST",
|
|
3417
|
+
headers: { "Content-Type": "application/json" },
|
|
3418
|
+
body: JSON.stringify(body)
|
|
3419
|
+
},
|
|
3420
|
+
options.verbose
|
|
3421
|
+
);
|
|
3370
3422
|
} catch (e) {
|
|
3371
3423
|
console.error(`
|
|
3372
3424
|
\u274C \u8BF7\u6C42\u5931\u8D25\uFF1A${e.message}`);
|
|
3373
3425
|
process.exit(1);
|
|
3374
3426
|
}
|
|
3375
3427
|
if (typeof res !== "string") {
|
|
3376
|
-
console.error(
|
|
3377
|
-
|
|
3428
|
+
console.error(
|
|
3429
|
+
`
|
|
3430
|
+
\u274C \u79FB\u9664\u8D26\u53F7\u5931\u8D25\uFF1A${res.message ?? "\u670D\u52A1\u7AEF\u8FD4\u56DE\u5F02\u5E38"}`
|
|
3431
|
+
);
|
|
3378
3432
|
process.exit(1);
|
|
3379
3433
|
}
|
|
3380
3434
|
if (options.json) {
|
|
3381
|
-
console.log(
|
|
3435
|
+
console.log(
|
|
3436
|
+
JSON.stringify({
|
|
3437
|
+
success: true,
|
|
3438
|
+
id: options.id,
|
|
3439
|
+
name,
|
|
3440
|
+
removed: removedCount,
|
|
3441
|
+
total: remaining.length,
|
|
3442
|
+
accountIds: remaining
|
|
3443
|
+
})
|
|
3444
|
+
);
|
|
3382
3445
|
return;
|
|
3383
3446
|
}
|
|
3384
3447
|
if (removedCount === 0) {
|
|
3385
|
-
console.log(
|
|
3386
|
-
|
|
3448
|
+
console.log(
|
|
3449
|
+
`
|
|
3450
|
+
\u2139\uFE0F \u6307\u5B9A\u8D26\u53F7\u5747\u4E0D\u5728\u5206\u7EC4\u300C${name}\u300D\u4E2D\uFF0C\u65E0\u9700\u79FB\u9664\uFF08\u5F53\u524D\u5171 ${remaining.length} \u4E2A\uFF09\u3002`
|
|
3451
|
+
);
|
|
3387
3452
|
} else {
|
|
3388
|
-
console.log(
|
|
3389
|
-
|
|
3453
|
+
console.log(
|
|
3454
|
+
`
|
|
3455
|
+
\u2705 \u5DF2\u4ECE\u5206\u7EC4\u300C${name}\u300D\u79FB\u9664 ${removedCount} \u4E2A\u8D26\u53F7\uFF08\u5269\u4F59 ${remaining.length} \u4E2A\uFF09`
|
|
3456
|
+
);
|
|
3390
3457
|
}
|
|
3391
3458
|
}
|
|
3392
3459
|
|
|
@@ -3639,7 +3706,10 @@ function buildImageChannels(posts, currentUserId) {
|
|
|
3639
3706
|
if (existing) {
|
|
3640
3707
|
existing.imageTextToBeSent.push(toBeSent);
|
|
3641
3708
|
} else {
|
|
3642
|
-
channels[mediaType].mediaAccountInfos.push({
|
|
3709
|
+
channels[mediaType].mediaAccountInfos.push({
|
|
3710
|
+
...accountInfo,
|
|
3711
|
+
imageTextToBeSent: [toBeSent]
|
|
3712
|
+
});
|
|
3643
3713
|
}
|
|
3644
3714
|
} else {
|
|
3645
3715
|
channels[mediaType] = {
|
|
@@ -3819,7 +3889,10 @@ async function runPublish(options) {
|
|
|
3819
3889
|
console.error("\n\u274C contentType=1\uFF08\u89C6\u9891\uFF09\u65F6\uFF0Cvideos \u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A");
|
|
3820
3890
|
process.exit(1);
|
|
3821
3891
|
}
|
|
3822
|
-
({ channels, videoType, contents, errorList } = buildVideoChannels(
|
|
3892
|
+
({ channels, videoType, contents, errorList } = buildVideoChannels(
|
|
3893
|
+
input.videos,
|
|
3894
|
+
currentUserId
|
|
3895
|
+
));
|
|
3823
3896
|
} else {
|
|
3824
3897
|
if (!input.posts?.length) {
|
|
3825
3898
|
console.error("\n\u274C contentType=2\uFF08\u56FE\u6587\uFF09\u65F6\uFF0Cposts \u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A");
|
|
@@ -3911,11 +3984,7 @@ var SENSITIVE_PATH_PREFIXES = [
|
|
|
3911
3984
|
path7.join(os5.homedir(), ".env")
|
|
3912
3985
|
// 常用本地环境变量文件
|
|
3913
3986
|
];
|
|
3914
|
-
var SENSITIVE_ABSOLUTE_PATHS = [
|
|
3915
|
-
"/etc/passwd",
|
|
3916
|
-
"/etc/shadow",
|
|
3917
|
-
"/etc/hosts"
|
|
3918
|
-
];
|
|
3987
|
+
var SENSITIVE_ABSOLUTE_PATHS = ["/etc/passwd", "/etc/shadow", "/etc/hosts"];
|
|
3919
3988
|
function validateUploadPath(resolved) {
|
|
3920
3989
|
const normalized = resolved.toLowerCase();
|
|
3921
3990
|
for (const prefix of SENSITIVE_PATH_PREFIXES) {
|
|
@@ -4009,10 +4078,15 @@ async function uploadToAzure(filePath, sas, onProgress) {
|
|
|
4009
4078
|
}
|
|
4010
4079
|
async function notifyUploaded(config, body, verbose = false) {
|
|
4011
4080
|
const url = `${config.csoBaseUrl}/cutapi/v1/material/uploadednotify`;
|
|
4012
|
-
const res = await apiFetch2(
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4081
|
+
const res = await apiFetch2(
|
|
4082
|
+
url,
|
|
4083
|
+
config,
|
|
4084
|
+
{
|
|
4085
|
+
method: "POST",
|
|
4086
|
+
body: JSON.stringify(body)
|
|
4087
|
+
},
|
|
4088
|
+
verbose
|
|
4089
|
+
);
|
|
4016
4090
|
if (res.code !== 1 || !res.data?.id) {
|
|
4017
4091
|
const detail = verbose ? `\uFF1A${JSON.stringify(res)}` : "";
|
|
4018
4092
|
throw new Error(`\u7D20\u6750\u6CE8\u518C\u5931\u8D25${detail}`);
|
|
@@ -4087,18 +4161,22 @@ async function uploadImageFile(filePath, config, verbose = false) {
|
|
|
4087
4161
|
const sas = await generateSas(config, verbose);
|
|
4088
4162
|
const { resourceUrl } = await uploadToAzure(filePath, sas, void 0);
|
|
4089
4163
|
const dim = readImageDimensions(filePath);
|
|
4090
|
-
const materialId = await notifyUploaded(
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4164
|
+
const materialId = await notifyUploaded(
|
|
4165
|
+
config,
|
|
4166
|
+
{
|
|
4167
|
+
folderId: DEFAULT_FOLDER_ID,
|
|
4168
|
+
name: fileName,
|
|
4169
|
+
url: resourceUrl,
|
|
4170
|
+
fileSize,
|
|
4171
|
+
type: 1,
|
|
4172
|
+
source: 1,
|
|
4173
|
+
blobAccount: sas.accountName,
|
|
4174
|
+
blobContainer: sas.containerName,
|
|
4175
|
+
format,
|
|
4176
|
+
image: dim
|
|
4177
|
+
},
|
|
4178
|
+
verbose
|
|
4179
|
+
);
|
|
4102
4180
|
const matInfo = await fetchMaterialInfo(config, materialId, verbose);
|
|
4103
4181
|
return {
|
|
4104
4182
|
resourceUrl,
|
|
@@ -4180,7 +4258,9 @@ async function runUpload(options) {
|
|
|
4180
4258
|
console.error(`
|
|
4181
4259
|
\u274C \u83B7\u53D6\u4E0A\u4F20\u51ED\u8BC1\u5931\u8D25\uFF1A${msg}`);
|
|
4182
4260
|
if (msg.includes("401") || msg.includes("403")) {
|
|
4183
|
-
console.error(
|
|
4261
|
+
console.error(
|
|
4262
|
+
" Token \u65E0\u6548\u6216\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u914D\u7F6E\uFF1A\n siluzan-cso config set --token <\u4F60\u7684 token>"
|
|
4263
|
+
);
|
|
4184
4264
|
} else if (!verbose) {
|
|
4185
4265
|
console.error(" \u52A0 --verbose \u53C2\u6570\u53EF\u67E5\u770B\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F");
|
|
4186
4266
|
}
|
|
@@ -4207,24 +4287,28 @@ async function runUpload(options) {
|
|
|
4207
4287
|
const imageDim = kind === "image" ? readImageDimensions(filePath) : void 0;
|
|
4208
4288
|
let materialId;
|
|
4209
4289
|
try {
|
|
4210
|
-
materialId = await notifyUploaded(
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4290
|
+
materialId = await notifyUploaded(
|
|
4291
|
+
config,
|
|
4292
|
+
{
|
|
4293
|
+
folderId: DEFAULT_FOLDER_ID,
|
|
4294
|
+
name: fileName,
|
|
4295
|
+
url: resourceUrl,
|
|
4296
|
+
fileSize,
|
|
4297
|
+
type: kind === "video" ? 3 : 1,
|
|
4298
|
+
// 1=图片 3=视频(与前端 fileType() 一致)
|
|
4299
|
+
source: 1,
|
|
4300
|
+
blobAccount: sas.accountName,
|
|
4301
|
+
blobContainer: sas.containerName,
|
|
4302
|
+
format,
|
|
4303
|
+
...kind === "image" ? { image: imageDim } : {},
|
|
4304
|
+
...kind === "video" ? (() => {
|
|
4305
|
+
const dur = readMp4Duration(filePath);
|
|
4306
|
+
if (!dur) throw new Error("\u65E0\u6CD5\u8BFB\u53D6\u89C6\u9891\u65F6\u957F\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u4E3A\u6709\u6548\u7684 MP4 \u683C\u5F0F");
|
|
4307
|
+
return { video: {}, audio: {}, duration: dur, overallBitRate: 0, thumbUrl };
|
|
4308
|
+
})() : {}
|
|
4309
|
+
},
|
|
4310
|
+
verbose
|
|
4311
|
+
);
|
|
4228
4312
|
} catch (e) {
|
|
4229
4313
|
const msg = e.message;
|
|
4230
4314
|
console.error(`
|
|
@@ -4528,14 +4612,20 @@ function printMarkdownFetch(runtime, includeModules, sections) {
|
|
|
4528
4612
|
const accountScope = runtime.baseQuery.mediaCustomerIds.length > 0 ? runtime.baseQuery.mediaCustomerIds.join(", ") : "\u5168\u90E8\u8D26\u53F7";
|
|
4529
4613
|
const startDay = runtime.baseQuery.startDate.slice(0, 10);
|
|
4530
4614
|
const endDay = runtime.baseQuery.endDate.slice(0, 10);
|
|
4531
|
-
console.log(
|
|
4532
|
-
|
|
4615
|
+
console.log(
|
|
4616
|
+
`# \u8FD0\u8425\u62A5\u8868\uFF5C${runtime.baseQuery.mediaTypes.join(",")}\uFF5C${accountScope}\uFF5C${startDay}~${endDay}\uFF5C${runtime.method}
|
|
4617
|
+
`
|
|
4618
|
+
);
|
|
4533
4619
|
if (sections.operation && typeof sections.operation === "object") {
|
|
4534
4620
|
const op = sections.operation;
|
|
4535
4621
|
const core = Array.isArray(op.coreData) ? [...op.coreData] : [];
|
|
4536
4622
|
if (typeof sections["total-fans"] === "number") {
|
|
4537
4623
|
if (!core.some((item) => item.name === "TotalFans")) {
|
|
4538
|
-
core.push({
|
|
4624
|
+
core.push({
|
|
4625
|
+
name: "TotalFans",
|
|
4626
|
+
value: sections["total-fans"],
|
|
4627
|
+
incrementRate: null
|
|
4628
|
+
});
|
|
4539
4629
|
}
|
|
4540
4630
|
}
|
|
4541
4631
|
console.log("## \u6838\u5FC3\u6307\u6807\n");
|
|
@@ -4577,7 +4667,8 @@ function printMarkdownFetch(runtime, includeModules, sections) {
|
|
|
4577
4667
|
const data = sections[moduleName];
|
|
4578
4668
|
if (data === null || data === void 0) continue;
|
|
4579
4669
|
if (Array.isArray(data) && data.length === 0) continue;
|
|
4580
|
-
if (typeof data === "object" && !Array.isArray(data) && Object.keys(data).length === 0)
|
|
4670
|
+
if (typeof data === "object" && !Array.isArray(data) && Object.keys(data).length === 0)
|
|
4671
|
+
continue;
|
|
4581
4672
|
const title = MODULE_TITLES[moduleName] ?? moduleName;
|
|
4582
4673
|
console.log(`## ${title}
|
|
4583
4674
|
`);
|
|
@@ -4605,15 +4696,27 @@ async function runReportFetch(options) {
|
|
|
4605
4696
|
continue;
|
|
4606
4697
|
}
|
|
4607
4698
|
if (moduleName === "total-fans") {
|
|
4608
|
-
sections["total-fans"] = await getWithQuery(
|
|
4699
|
+
sections["total-fans"] = await getWithQuery(
|
|
4700
|
+
runtime,
|
|
4701
|
+
"TotalFans",
|
|
4702
|
+
runtime.baseQuery
|
|
4703
|
+
);
|
|
4609
4704
|
continue;
|
|
4610
4705
|
}
|
|
4611
4706
|
if (moduleName === "fans-analysis") {
|
|
4612
|
-
sections["fans-analysis"] = await getWithQuery(
|
|
4707
|
+
sections["fans-analysis"] = await getWithQuery(
|
|
4708
|
+
runtime,
|
|
4709
|
+
"FansAnalysis",
|
|
4710
|
+
runtime.baseQuery
|
|
4711
|
+
);
|
|
4613
4712
|
continue;
|
|
4614
4713
|
}
|
|
4615
4714
|
if (moduleName === "hot-topic") {
|
|
4616
|
-
sections["hot-topic"] = await getWithQuery(
|
|
4715
|
+
sections["hot-topic"] = await getWithQuery(
|
|
4716
|
+
runtime,
|
|
4717
|
+
"GetHotTopic",
|
|
4718
|
+
runtime.baseQuery
|
|
4719
|
+
);
|
|
4617
4720
|
continue;
|
|
4618
4721
|
}
|
|
4619
4722
|
if (moduleName === "works") {
|
|
@@ -4624,19 +4727,35 @@ async function runReportFetch(options) {
|
|
|
4624
4727
|
continue;
|
|
4625
4728
|
}
|
|
4626
4729
|
if (moduleName === "hot-comment-word") {
|
|
4627
|
-
sections["hot-comment-word"] = await getWithQuery(
|
|
4730
|
+
sections["hot-comment-word"] = await getWithQuery(
|
|
4731
|
+
runtime,
|
|
4732
|
+
"GetHotCommentWord",
|
|
4733
|
+
runtime.baseQuery
|
|
4734
|
+
);
|
|
4628
4735
|
continue;
|
|
4629
4736
|
}
|
|
4630
4737
|
if (moduleName === "comment-top10") {
|
|
4631
|
-
sections["comment-top10"] = await getWithQuery(
|
|
4738
|
+
sections["comment-top10"] = await getWithQuery(
|
|
4739
|
+
runtime,
|
|
4740
|
+
"CommentTop10",
|
|
4741
|
+
runtime.baseQuery
|
|
4742
|
+
);
|
|
4632
4743
|
continue;
|
|
4633
4744
|
}
|
|
4634
4745
|
if (moduleName === "video-duration") {
|
|
4635
|
-
sections["video-duration"] = await getWithQuery(
|
|
4746
|
+
sections["video-duration"] = await getWithQuery(
|
|
4747
|
+
runtime,
|
|
4748
|
+
"VideoDurationAnalysis",
|
|
4749
|
+
runtime.baseQuery
|
|
4750
|
+
);
|
|
4636
4751
|
continue;
|
|
4637
4752
|
}
|
|
4638
4753
|
if (moduleName === "video-distribution") {
|
|
4639
|
-
sections["video-distribution"] = await getWithQuery(
|
|
4754
|
+
sections["video-distribution"] = await getWithQuery(
|
|
4755
|
+
runtime,
|
|
4756
|
+
"VideoDistribution",
|
|
4757
|
+
runtime.baseQuery
|
|
4758
|
+
);
|
|
4640
4759
|
continue;
|
|
4641
4760
|
}
|
|
4642
4761
|
if (moduleName === "comment-trend") {
|
|
@@ -4924,7 +5043,9 @@ function buildMarkdownTable(rows) {
|
|
|
4924
5043
|
].join("\n");
|
|
4925
5044
|
}
|
|
4926
5045
|
function normalizeEnterpriseList(raw) {
|
|
4927
|
-
const payload = normalizeApiPayload(
|
|
5046
|
+
const payload = normalizeApiPayload(
|
|
5047
|
+
raw
|
|
5048
|
+
);
|
|
4928
5049
|
const folders = ensureObject(payload).folders;
|
|
4929
5050
|
if (!Array.isArray(folders)) return [];
|
|
4930
5051
|
return folders.map((item) => ensureObject(item)).map((folder) => ({
|
|
@@ -4933,7 +5054,9 @@ function normalizeEnterpriseList(raw) {
|
|
|
4933
5054
|
})).filter((item) => item.id);
|
|
4934
5055
|
}
|
|
4935
5056
|
function normalizeContentTypeList(raw) {
|
|
4936
|
-
const payload = normalizeApiPayload(
|
|
5057
|
+
const payload = normalizeApiPayload(
|
|
5058
|
+
raw
|
|
5059
|
+
);
|
|
4937
5060
|
const list = Array.isArray(payload) ? payload : [];
|
|
4938
5061
|
return list.map((item) => ensureObject(item)).map((item) => ({
|
|
4939
5062
|
id: String(item.id ?? ""),
|
|
@@ -4941,7 +5064,9 @@ function normalizeContentTypeList(raw) {
|
|
|
4941
5064
|
})).filter((item) => item.id);
|
|
4942
5065
|
}
|
|
4943
5066
|
function normalizeTaskList(raw) {
|
|
4944
|
-
const payload = normalizeApiPayload(
|
|
5067
|
+
const payload = normalizeApiPayload(
|
|
5068
|
+
raw
|
|
5069
|
+
);
|
|
4945
5070
|
const page = Array.isArray(payload) ? { list: payload, total: payload.length } : payload;
|
|
4946
5071
|
const listRaw = Array.isArray(page.list) ? page.list : [];
|
|
4947
5072
|
const list = listRaw.map((item) => ensureObject(item)).map((item) => ({
|
|
@@ -4960,7 +5085,10 @@ function normalizeTaskList(raw) {
|
|
|
4960
5085
|
async function requestPlanning(config, endpoint, init = {}, verbose = false) {
|
|
4961
5086
|
const baseUrl = getPlanBaseUrl(config.agentBaseUrl);
|
|
4962
5087
|
const url = `${baseUrl}${endpoint}`;
|
|
4963
|
-
const headers = {
|
|
5088
|
+
const headers = {
|
|
5089
|
+
...getPlanHeaders(config),
|
|
5090
|
+
...init.headers
|
|
5091
|
+
};
|
|
4964
5092
|
return apiFetch2(url, config, { ...init, headers }, verbose);
|
|
4965
5093
|
}
|
|
4966
5094
|
async function runPlanningEnterprises(options) {
|
|
@@ -5196,7 +5324,9 @@ async function runPlanningGenerate(options) {
|
|
|
5196
5324
|
},
|
|
5197
5325
|
verbose
|
|
5198
5326
|
);
|
|
5199
|
-
response = normalizeApiPayload(
|
|
5327
|
+
response = normalizeApiPayload(
|
|
5328
|
+
raw
|
|
5329
|
+
);
|
|
5200
5330
|
} catch (error) {
|
|
5201
5331
|
exitWithError2(`\u521B\u5EFA\u89C4\u5212\u4EFB\u52A1\u5931\u8D25\uFF1A${error.message}`);
|
|
5202
5332
|
}
|
|
@@ -5209,7 +5339,9 @@ async function runPlanningGenerate(options) {
|
|
|
5209
5339
|
} else {
|
|
5210
5340
|
console.log("\n\u2705 \u5DF2\u63D0\u4EA4\u89C4\u5212\u751F\u6210\u4EFB\u52A1");
|
|
5211
5341
|
console.log(` Task ID : ${taskId}`);
|
|
5212
|
-
console.log(
|
|
5342
|
+
console.log(
|
|
5343
|
+
` \u72B6\u6001 : ${getTaskStatusText(String(response.status ?? "pending"))}`
|
|
5344
|
+
);
|
|
5213
5345
|
console.log(" \u63D0\u793A : \u53EF\u7528 `siluzan-cso planning watch <taskId>` \u76D1\u542C\u8FDB\u5EA6");
|
|
5214
5346
|
}
|
|
5215
5347
|
if (options.watch) {
|
|
@@ -5263,7 +5395,9 @@ async function runPlanningList(options) {
|
|
|
5263
5395
|
const total = data.total;
|
|
5264
5396
|
const totalPages = computeTotalPages(total, pageSize);
|
|
5265
5397
|
if (options.json) {
|
|
5266
|
-
console.log(
|
|
5398
|
+
console.log(
|
|
5399
|
+
JSON.stringify({ pageIndex, pageSize, total, totalPages, list: data.list }, null, 2)
|
|
5400
|
+
);
|
|
5267
5401
|
return;
|
|
5268
5402
|
}
|
|
5269
5403
|
const pageInfo = formatPaginationSummary({ page: pageIndex, pageSize, total });
|
|
@@ -5340,7 +5474,12 @@ async function runPlanningGet(planId, options) {
|
|
|
5340
5474
|
const verbose = Boolean(options.verbose);
|
|
5341
5475
|
let plan;
|
|
5342
5476
|
try {
|
|
5343
|
-
const raw = await requestPlanning(
|
|
5477
|
+
const raw = await requestPlanning(
|
|
5478
|
+
config,
|
|
5479
|
+
`/api/plans/${encodeURIComponent(id)}`,
|
|
5480
|
+
{},
|
|
5481
|
+
verbose
|
|
5482
|
+
);
|
|
5344
5483
|
plan = normalizeApiPayload(raw);
|
|
5345
5484
|
} catch (error) {
|
|
5346
5485
|
exitWithError2(`\u83B7\u53D6\u89C4\u5212\u8BE6\u60C5\u5931\u8D25\uFF1A${error.message}`);
|
|
@@ -5379,7 +5518,9 @@ async function runPlanningRegenerate(planId, options) {
|
|
|
5379
5518
|
},
|
|
5380
5519
|
verbose
|
|
5381
5520
|
);
|
|
5382
|
-
response = normalizeApiPayload(
|
|
5521
|
+
response = normalizeApiPayload(
|
|
5522
|
+
raw
|
|
5523
|
+
);
|
|
5383
5524
|
} catch (error) {
|
|
5384
5525
|
exitWithError2(`\u518D\u751F\u6210\u5931\u8D25\uFF1A${error.message}`);
|
|
5385
5526
|
}
|
|
@@ -5472,7 +5613,12 @@ async function loadPlanFromSource(options, config) {
|
|
|
5472
5613
|
exitWithError2("export txt \u9700\u8981\u63D0\u4F9B --plan-id \u6216 --input");
|
|
5473
5614
|
}
|
|
5474
5615
|
try {
|
|
5475
|
-
const raw = await requestPlanning(
|
|
5616
|
+
const raw = await requestPlanning(
|
|
5617
|
+
config,
|
|
5618
|
+
`/api/plans/${encodeURIComponent(planId)}`,
|
|
5619
|
+
{},
|
|
5620
|
+
Boolean(options.verbose)
|
|
5621
|
+
);
|
|
5476
5622
|
return normalizeApiPayload(raw);
|
|
5477
5623
|
} catch (error) {
|
|
5478
5624
|
exitWithError2(`\u83B7\u53D6\u89C4\u5212\u8BE6\u60C5\u5931\u8D25\uFF1A${error.message}`);
|
|
@@ -5483,7 +5629,9 @@ async function runPlanningExportTxt(options) {
|
|
|
5483
5629
|
const plan = await loadPlanFromSource(options, config);
|
|
5484
5630
|
const enterpriseName = inferEnterpriseNameFromPlan(plan);
|
|
5485
5631
|
const text = formatPlanAsMarkdown(plan, enterpriseName);
|
|
5486
|
-
const defaultName = sanitizeFilename(
|
|
5632
|
+
const defaultName = sanitizeFilename(
|
|
5633
|
+
`\u5185\u5BB9\u9009\u9898\u65B9\u5411\u89C4\u5212_${enterpriseName}_${plan.yearMonth ?? "unknown"}.txt`
|
|
5634
|
+
);
|
|
5487
5635
|
const outputPath = path9.resolve(options.output ? options.output : defaultName);
|
|
5488
5636
|
try {
|
|
5489
5637
|
fs9.writeFileSync(outputPath, text, "utf-8");
|
|
@@ -5491,7 +5639,9 @@ async function runPlanningExportTxt(options) {
|
|
|
5491
5639
|
exitWithError2(`\u5199\u5165\u5BFC\u51FA\u6587\u4EF6\u5931\u8D25\uFF1A${error.message}`);
|
|
5492
5640
|
}
|
|
5493
5641
|
if (options.json) {
|
|
5494
|
-
console.log(
|
|
5642
|
+
console.log(
|
|
5643
|
+
JSON.stringify({ output: outputPath, planId: plan.id ?? options.planId ?? null }, null, 2)
|
|
5644
|
+
);
|
|
5495
5645
|
return;
|
|
5496
5646
|
}
|
|
5497
5647
|
console.log("\n\u2705 \u89C4\u5212 TXT \u5BFC\u51FA\u5B8C\u6210");
|
|
@@ -5575,7 +5725,9 @@ function resolveMediaTypeForApi(input) {
|
|
|
5575
5725
|
if (!trimmed) exitWithError3("\u5A92\u4F53\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A");
|
|
5576
5726
|
if (/^\d+$/.test(trimmed)) return trimmed;
|
|
5577
5727
|
if (trimmed in TASK_MEDIA_MAP) return String(TASK_MEDIA_MAP[trimmed]);
|
|
5578
|
-
exitWithError3(
|
|
5728
|
+
exitWithError3(
|
|
5729
|
+
`\u672A\u77E5\u5A92\u4F53\u7C7B\u578B\uFF1A${input}\u3002\u53EF\u7528\u503C\uFF1A${Object.keys(TASK_MEDIA_MAP).join(", ")} \u6216\u6570\u5B57 ID`
|
|
5730
|
+
);
|
|
5579
5731
|
}
|
|
5580
5732
|
function statusLabel(status) {
|
|
5581
5733
|
if (status === 0) return "\u6267\u884C\u4E2D";
|
|
@@ -5599,17 +5751,27 @@ function isTaskMutationSuccess(code) {
|
|
|
5599
5751
|
}
|
|
5600
5752
|
async function postForm(endpoint, body, options) {
|
|
5601
5753
|
const config = loadConfig(options.token);
|
|
5602
|
-
return apiFetch2(
|
|
5603
|
-
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
|
|
5754
|
+
return apiFetch2(
|
|
5755
|
+
`${config.csoBaseUrl}${endpoint}`,
|
|
5756
|
+
config,
|
|
5757
|
+
{
|
|
5758
|
+
method: "POST",
|
|
5759
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" },
|
|
5760
|
+
body: new URLSearchParams(body).toString()
|
|
5761
|
+
},
|
|
5762
|
+
Boolean(options.verbose)
|
|
5763
|
+
);
|
|
5607
5764
|
}
|
|
5608
5765
|
async function postNoBody(endpoint, options) {
|
|
5609
5766
|
const config = loadConfig(options.token);
|
|
5610
|
-
return apiFetch2(
|
|
5611
|
-
|
|
5612
|
-
|
|
5767
|
+
return apiFetch2(
|
|
5768
|
+
`${config.csoBaseUrl}${endpoint}`,
|
|
5769
|
+
config,
|
|
5770
|
+
{
|
|
5771
|
+
method: "POST"
|
|
5772
|
+
},
|
|
5773
|
+
Boolean(options.verbose)
|
|
5774
|
+
);
|
|
5613
5775
|
}
|
|
5614
5776
|
async function runTaskList(options) {
|
|
5615
5777
|
const config = loadConfig(options.token);
|
|
@@ -5617,7 +5779,11 @@ async function runTaskList(options) {
|
|
|
5617
5779
|
const size = parsePositiveInt3(options.size, "--size", 10);
|
|
5618
5780
|
const status = parseTaskStatus(options.status);
|
|
5619
5781
|
const contentType = parseContentType(options.contentType);
|
|
5620
|
-
const { startDate, endDate } = formatDateRange(
|
|
5782
|
+
const { startDate, endDate } = formatDateRange(
|
|
5783
|
+
options.datePreset,
|
|
5784
|
+
options.startDate,
|
|
5785
|
+
options.endDate
|
|
5786
|
+
);
|
|
5621
5787
|
const asc = Boolean(options.asc);
|
|
5622
5788
|
let taskName = "";
|
|
5623
5789
|
let creator = options.creator ?? "";
|
|
@@ -5644,7 +5810,12 @@ async function runTaskList(options) {
|
|
|
5644
5810
|
})}`;
|
|
5645
5811
|
let data;
|
|
5646
5812
|
try {
|
|
5647
|
-
const res = await apiFetch2(
|
|
5813
|
+
const res = await apiFetch2(
|
|
5814
|
+
url,
|
|
5815
|
+
config,
|
|
5816
|
+
{},
|
|
5817
|
+
Boolean(options.verbose)
|
|
5818
|
+
);
|
|
5648
5819
|
if (!res.data) throw new Error(res.message || "\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE\u5217\u8868\u6570\u636E");
|
|
5649
5820
|
data = res.data;
|
|
5650
5821
|
} catch (error) {
|
|
@@ -5697,7 +5868,12 @@ async function runTaskDetail(options) {
|
|
|
5697
5868
|
})}`;
|
|
5698
5869
|
let data;
|
|
5699
5870
|
try {
|
|
5700
|
-
const res = await apiFetch2(
|
|
5871
|
+
const res = await apiFetch2(
|
|
5872
|
+
url,
|
|
5873
|
+
config,
|
|
5874
|
+
{},
|
|
5875
|
+
Boolean(options.verbose)
|
|
5876
|
+
);
|
|
5701
5877
|
if (!res.data) throw new Error(res.message || "\u670D\u52A1\u7AEF\u672A\u8FD4\u56DE\u8BE6\u60C5\u6570\u636E");
|
|
5702
5878
|
data = res.data;
|
|
5703
5879
|
} catch (error) {
|
|
@@ -5765,25 +5941,44 @@ async function runTaskMutation(endpoint, body, options, successText) {
|
|
|
5765
5941
|
}
|
|
5766
5942
|
async function runTaskStart(options) {
|
|
5767
5943
|
if (!options.publishId) exitWithError3("\u8BF7\u63D0\u4F9B --publish-id");
|
|
5768
|
-
await runTaskMutation(
|
|
5944
|
+
await runTaskMutation(
|
|
5945
|
+
"/cso/v1/task/startTask",
|
|
5946
|
+
{ publishId: options.publishId },
|
|
5947
|
+
options,
|
|
5948
|
+
"\u542F\u52A8\u4EFB\u52A1"
|
|
5949
|
+
);
|
|
5769
5950
|
}
|
|
5770
5951
|
async function runTaskStop(options) {
|
|
5771
5952
|
if (!options.publishId) exitWithError3("\u8BF7\u63D0\u4F9B --publish-id");
|
|
5772
|
-
await runTaskMutation(
|
|
5953
|
+
await runTaskMutation(
|
|
5954
|
+
"/cso/v1/task/stopTask",
|
|
5955
|
+
{ publishId: options.publishId },
|
|
5956
|
+
options,
|
|
5957
|
+
"\u4E2D\u6B62\u4EFB\u52A1"
|
|
5958
|
+
);
|
|
5773
5959
|
}
|
|
5774
5960
|
async function runTaskDelete(options) {
|
|
5775
5961
|
if (!options.publishId) exitWithError3("\u8BF7\u63D0\u4F9B --publish-id");
|
|
5776
|
-
await runTaskMutation(
|
|
5962
|
+
await runTaskMutation(
|
|
5963
|
+
"/cso/v1/task/deleteTask",
|
|
5964
|
+
{ publishId: options.publishId },
|
|
5965
|
+
options,
|
|
5966
|
+
"\u5220\u9664\u4EFB\u52A1"
|
|
5967
|
+
);
|
|
5777
5968
|
}
|
|
5778
5969
|
async function runTaskRename(options) {
|
|
5779
5970
|
if (!options.publishId) exitWithError3("\u8BF7\u63D0\u4F9B --publish-id");
|
|
5780
5971
|
if (!options.name?.trim()) exitWithError3("\u8BF7\u63D0\u4F9B\u975E\u7A7A\u7684 --name");
|
|
5781
5972
|
let res;
|
|
5782
5973
|
try {
|
|
5783
|
-
res = await postForm(
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5974
|
+
res = await postForm(
|
|
5975
|
+
"/cso/v1/task/reName",
|
|
5976
|
+
{
|
|
5977
|
+
publishId: options.publishId,
|
|
5978
|
+
taskName: options.name.trim()
|
|
5979
|
+
},
|
|
5980
|
+
options
|
|
5981
|
+
);
|
|
5787
5982
|
} catch (error) {
|
|
5788
5983
|
exitWithError3(`\u91CD\u547D\u540D\u4EFB\u52A1\u5931\u8D25\uFF1A${error.message}`);
|
|
5789
5984
|
}
|
|
@@ -5819,7 +6014,12 @@ allowChange: ${allowChange ? "true" : "false"}`);
|
|
|
5819
6014
|
}
|
|
5820
6015
|
async function runTaskItemDelete(options) {
|
|
5821
6016
|
if (!options.itemId) exitWithError3("\u8BF7\u63D0\u4F9B --item-id");
|
|
5822
|
-
await runTaskMutation(
|
|
6017
|
+
await runTaskMutation(
|
|
6018
|
+
`/cso/v1/task/deletePublishItem/${options.itemId}`,
|
|
6019
|
+
null,
|
|
6020
|
+
options,
|
|
6021
|
+
"\u5220\u9664\u53D1\u5E03\u9879"
|
|
6022
|
+
);
|
|
5823
6023
|
}
|
|
5824
6024
|
async function runTaskItemRepublish(options) {
|
|
5825
6025
|
if (!options.itemId) exitWithError3("\u8BF7\u63D0\u4F9B --item-id");
|
|
@@ -5832,13 +6032,20 @@ async function runTaskItemRunNow(options) {
|
|
|
5832
6032
|
async function runTaskCommentList(options) {
|
|
5833
6033
|
const config = loadConfig(options.token);
|
|
5834
6034
|
const mediaType = resolveMediaTypeForApi(options.mediaType);
|
|
5835
|
-
const url = `${config.csoBaseUrl}/cso/v1/comment/listByVideoId/2/${mediaType}?${createQueryString3(
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
6035
|
+
const url = `${config.csoBaseUrl}/cso/v1/comment/listByVideoId/2/${mediaType}?${createQueryString3(
|
|
6036
|
+
{
|
|
6037
|
+
videoId: encodeURIComponent(options.videoId),
|
|
6038
|
+
mediaCustomerId: options.mediaCustomerId
|
|
6039
|
+
}
|
|
6040
|
+
)}`;
|
|
5839
6041
|
let data;
|
|
5840
6042
|
try {
|
|
5841
|
-
const res = await apiFetch2(
|
|
6043
|
+
const res = await apiFetch2(
|
|
6044
|
+
url,
|
|
6045
|
+
config,
|
|
6046
|
+
{},
|
|
6047
|
+
Boolean(options.verbose)
|
|
6048
|
+
);
|
|
5842
6049
|
if (res.code !== 1 || !res.data) {
|
|
5843
6050
|
throw new Error(res.message || `\u670D\u52A1\u7AEF\u8FD4\u56DE code=${res.code}`);
|
|
5844
6051
|
}
|
|
@@ -6037,7 +6244,8 @@ function unwrapQueryKnowledges(raw) {
|
|
|
6037
6244
|
}
|
|
6038
6245
|
function similarityPercent(score) {
|
|
6039
6246
|
if (score === void 0 || Number.isNaN(score)) return "N/A";
|
|
6040
|
-
|
|
6247
|
+
const s = Math.min(1, Math.max(0, score));
|
|
6248
|
+
return `${Math.round(s * 100)}%`;
|
|
6041
6249
|
}
|
|
6042
6250
|
function blockquoteMarkdown(text) {
|
|
6043
6251
|
return text.split("\n").map((line) => `> ${line}`).join("\n");
|
|
@@ -6208,7 +6416,13 @@ async function runRagQuery(options) {
|
|
|
6208
6416
|
}
|
|
6209
6417
|
}
|
|
6210
6418
|
const payload = unwrapQueryKnowledges(raw);
|
|
6211
|
-
const
|
|
6419
|
+
const rawOutput = Array.isArray(payload.output) ? payload.output : [];
|
|
6420
|
+
const output = rawOutput.map((item) => {
|
|
6421
|
+
const r = item.score;
|
|
6422
|
+
if (typeof r !== "number" || Number.isNaN(r)) return item;
|
|
6423
|
+
const s = Math.min(1, Math.max(0, 1 - r));
|
|
6424
|
+
return { ...item, score: s };
|
|
6425
|
+
});
|
|
6212
6426
|
if (options.json) {
|
|
6213
6427
|
console.log(
|
|
6214
6428
|
JSON.stringify(
|
|
@@ -6237,6 +6451,20 @@ async function runRagQuery(options) {
|
|
|
6237
6451
|
${header}${body}`);
|
|
6238
6452
|
}
|
|
6239
6453
|
var RAG_ROOT_FOLDER_ID = "88888888-8888-8888-0000-888888888888";
|
|
6454
|
+
var RAG_BUILTIN_PARENT_FOLDER_ID = "88888888-8888-0000-0000-888888888888";
|
|
6455
|
+
function buildMaterialQueryListParams(belongToId, folderId) {
|
|
6456
|
+
return new URLSearchParams({
|
|
6457
|
+
belongTo: "0",
|
|
6458
|
+
belongToId,
|
|
6459
|
+
showCut: "true",
|
|
6460
|
+
isGlobal: "true",
|
|
6461
|
+
orderBy: "createTime",
|
|
6462
|
+
isDesc: "true",
|
|
6463
|
+
pageIndex: "1",
|
|
6464
|
+
pageSize: "999",
|
|
6465
|
+
folderId
|
|
6466
|
+
});
|
|
6467
|
+
}
|
|
6240
6468
|
async function runRagList(options) {
|
|
6241
6469
|
const config = loadConfig(options.token);
|
|
6242
6470
|
let belongToId = String(options.belongToId ?? "").trim();
|
|
@@ -6250,17 +6478,7 @@ async function runRagList(options) {
|
|
|
6250
6478
|
);
|
|
6251
6479
|
process.exit(1);
|
|
6252
6480
|
}
|
|
6253
|
-
const p =
|
|
6254
|
-
belongTo: "0",
|
|
6255
|
-
belongToId,
|
|
6256
|
-
showCut: "true",
|
|
6257
|
-
isGlobal: "true",
|
|
6258
|
-
orderBy: "createTime",
|
|
6259
|
-
isDesc: "true",
|
|
6260
|
-
pageIndex: "1",
|
|
6261
|
-
pageSize: "999",
|
|
6262
|
-
folderId: RAG_ROOT_FOLDER_ID
|
|
6263
|
-
});
|
|
6481
|
+
const p = buildMaterialQueryListParams(belongToId, RAG_ROOT_FOLDER_ID);
|
|
6264
6482
|
const url = `${config.csoBaseUrl}/cutapi/v1/material/querylist?${p.toString()}`;
|
|
6265
6483
|
let raw;
|
|
6266
6484
|
try {
|
|
@@ -6282,6 +6500,36 @@ async function runRagList(options) {
|
|
|
6282
6500
|
process.exit(1);
|
|
6283
6501
|
}
|
|
6284
6502
|
let folders = raw.data?.folders ?? [];
|
|
6503
|
+
try {
|
|
6504
|
+
const pBuiltin = buildMaterialQueryListParams(belongToId, RAG_BUILTIN_PARENT_FOLDER_ID);
|
|
6505
|
+
const urlBuiltin = `${config.csoBaseUrl}/cutapi/v1/material/querylist?${pBuiltin.toString()}`;
|
|
6506
|
+
const rawBuiltin = await apiFetch2(
|
|
6507
|
+
urlBuiltin,
|
|
6508
|
+
config,
|
|
6509
|
+
{},
|
|
6510
|
+
Boolean(options.verbose)
|
|
6511
|
+
);
|
|
6512
|
+
if (rawBuiltin.code === 1) {
|
|
6513
|
+
const extra = rawBuiltin.data?.folders ?? [];
|
|
6514
|
+
const seen = new Set(folders.map((f) => f.id));
|
|
6515
|
+
for (const f of extra) {
|
|
6516
|
+
if (!seen.has(f.id)) {
|
|
6517
|
+
seen.add(f.id);
|
|
6518
|
+
folders.push(f);
|
|
6519
|
+
}
|
|
6520
|
+
}
|
|
6521
|
+
} else if (options.verbose) {
|
|
6522
|
+
console.error(
|
|
6523
|
+
`
|
|
6524
|
+
\u26A0\uFE0F \u5185\u7F6E\u77E5\u8BC6\u5E93\u5B50\u5217\u8868\u5931\u8D25\uFF1A${rawBuiltin.message || `\u4E1A\u52A1\u7801 ${rawBuiltin.code}`}\uFF08\u5DF2\u8DF3\u8FC7\u5408\u5E76\uFF09`
|
|
6525
|
+
);
|
|
6526
|
+
}
|
|
6527
|
+
} catch (e) {
|
|
6528
|
+
if (options.verbose) {
|
|
6529
|
+
console.error(`
|
|
6530
|
+
\u26A0\uFE0F \u5185\u7F6E\u77E5\u8BC6\u5E93\u5B50\u5217\u8868\u8BF7\u6C42\u5F02\u5E38\uFF1A${e.message}\uFF08\u5DF2\u8DF3\u8FC7\u5408\u5E76\uFF09`);
|
|
6531
|
+
}
|
|
6532
|
+
}
|
|
6285
6533
|
if (options.ragOnly) {
|
|
6286
6534
|
folders = folders.filter((f) => f.ragStatus === true);
|
|
6287
6535
|
}
|
|
@@ -6440,7 +6688,9 @@ program.command("login").description("\u5F15\u5BFC\u5B8C\u6210 Siluzan \u8D26\u5
|
|
|
6440
6688
|
program.command("update").description("\u68C0\u67E5\u5E76\u66F4\u65B0 siluzan-cso-cli \u81F3\u6700\u65B0\u7248\u672C\uFF0C\u540C\u6B65\u5237\u65B0\u6240\u6709\u5DF2\u5B89\u88C5\u7684 skill \u6587\u4EF6").option("--force", "\u8DF3\u8FC7\u7248\u672C\u6BD4\u8F83\uFF0C\u5F3A\u5236\u91CD\u65B0\u5B89\u88C5\u5E76\u5237\u65B0 skill \u6587\u4EF6", false).option("--skip-init", "\u4EC5\u66F4\u65B0 CLI\uFF0C\u4E0D\u91CD\u65B0\u521D\u59CB\u5316 skill \u6587\u4EF6", false).action(async (opts) => {
|
|
6441
6689
|
await runUpdate({ force: opts.force, skipInit: opts.skipInit });
|
|
6442
6690
|
});
|
|
6443
|
-
program.command("init").description(
|
|
6691
|
+
program.command("init").description(
|
|
6692
|
+
"\u5C06 Skill \u6587\u4EF6\u5199\u5165 AI \u52A9\u624B\u76EE\u5F55\uFF08\u9ED8\u8BA4\u5199\u5165\u6240\u6709\u5E73\u53F0\u7684\u9879\u76EE\u7EA7\u76EE\u5F55\uFF0C--global \u5199\u5165\u5168\u5C40\u76EE\u5F55\uFF09"
|
|
6693
|
+
).option(
|
|
6444
6694
|
"-a, --ai <targets>",
|
|
6445
6695
|
"\u76EE\u6807\u5E73\u53F0\uFF0C\u9017\u53F7\u5206\u9694\uFF1Acursor,claude,agents,windsurf,gemini,codex,opencode,kilo,openclaw,workbuddy,all",
|
|
6446
6696
|
"all"
|
|
@@ -6457,58 +6707,77 @@ program.command("init").description("\u5C06 Skill \u6587\u4EF6\u5199\u5165 AI \u
|
|
|
6457
6707
|
apiBaseUrl: DEFAULT_API_BASE
|
|
6458
6708
|
});
|
|
6459
6709
|
});
|
|
6460
|
-
program.command("authorize").description(
|
|
6710
|
+
program.command("authorize").description(
|
|
6711
|
+
"\u53D1\u8D77\u5A92\u4F53\u5E73\u53F0 OAuth \u6388\u6743\uFF08YouTube/TikTokBusinessAccount/Instagram/Facebook/LinkedIn/Twitter \u7B49\uFF09\uFF0C\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u6388\u6743\u540E\u8DF3\u56DE\u4E1D\u8DEF\u8D5E\u8D26\u53F7\u7BA1\u7406\u9875"
|
|
6712
|
+
).requiredOption(
|
|
6713
|
+
"--media-type <type>",
|
|
6714
|
+
"\u5A92\u4F53\u5E73\u53F0\u7C7B\u578B\uFF0C\u5982 YouTube / TikTokBusinessAccount / Instagram / Facebook / LinkedIn / Twitter"
|
|
6715
|
+
).option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6461
6716
|
await runAuthorize(opts);
|
|
6462
6717
|
});
|
|
6463
|
-
program.command("list-accounts").description(
|
|
6464
|
-
|
|
6465
|
-
|
|
6466
|
-
|
|
6467
|
-
|
|
6468
|
-
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6475
|
-
|
|
6476
|
-
|
|
6477
|
-
|
|
6718
|
+
program.command("list-accounts").description(
|
|
6719
|
+
"\u5217\u51FA\u5A92\u4F53\u8D26\u53F7\u5217\u8868\uFF0C\u9ED8\u8BA4\u5C55\u793A\u7C89\u4E1D\u6570/\u4F5C\u54C1\u6570/\u64AD\u653E\u6570\u7B49\u6570\u636E\u603B\u89C8\uFF1B\u652F\u6301\u5206\u9875\u3001\u5E73\u53F0/\u540D\u79F0/\u72B6\u6001/\u8D1F\u8D23\u4EBA\u8FC7\u6EE4"
|
|
6720
|
+
).option("--name <name>", "\u6309\u8D26\u53F7\u540D\u79F0\u6A21\u7CCA\u641C\u7D22").option("--media-type <type>", "\u6309\u5E73\u53F0\u7C7B\u578B\u8FC7\u6EE4\uFF08\u5982 \u6296\u97F3\u3001YouTube\u3001TikTok \u7B49\uFF09").option(
|
|
6721
|
+
"--state <state>",
|
|
6722
|
+
"\u6309\u72B6\u6001\u8FC7\u6EE4\uFF1Aall\uFF08\u5168\u90E8\uFF09| normal\uFF08\u6B63\u5E38\uFF09| abnormal\uFF08\u5F02\u5E38/\u8FC7\u671F\uFF09\uFF0C\u9ED8\u8BA4 all",
|
|
6723
|
+
"all"
|
|
6724
|
+
).option(
|
|
6725
|
+
"--owner <owner>",
|
|
6726
|
+
"\u6309\u8D1F\u8D23\u4EBA\u8FC7\u6EE4\uFF08\u4F20\u5165\u7528\u6237 ID\uFF0C\u53EF\u4ECE --json \u8FD4\u56DE\u7684 ownerInfo[].id \u5B57\u6BB5\u83B7\u53D6\uFF09"
|
|
6727
|
+
).option("--page <n>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09", "1").option("--page-size <n>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 20\uFF09", "20").option("--json", "\u4EE5 JSON \u8F93\u51FA\u8D26\u53F7\u5217\u8868\uFF08\u542B\u603B\u89C8\u6570\u636E\uFF0C\u7528\u4E8E\u811A\u672C\u6216\u914D\u7F6E\u6587\u4EF6\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u5B8C\u6574\u4EE4\u724C\u6807\u8BC6\uFF08\u9ED8\u8BA4\u8131\u654F\uFF09", false).action(
|
|
6728
|
+
async (opts) => {
|
|
6729
|
+
const state = opts.state;
|
|
6730
|
+
await runListAccounts({
|
|
6731
|
+
token: opts.token,
|
|
6732
|
+
name: opts.name,
|
|
6733
|
+
mediaType: opts.mediaType,
|
|
6734
|
+
state: state === "all" ? void 0 : state,
|
|
6735
|
+
owner: opts.owner,
|
|
6736
|
+
page: opts.page ? parseInt(opts.page, 10) : void 0,
|
|
6737
|
+
pageSize: opts.pageSize ? parseInt(opts.pageSize, 10) : void 0,
|
|
6738
|
+
json: opts.json,
|
|
6739
|
+
unicode: opts.unicode,
|
|
6740
|
+
verbose: opts.verbose
|
|
6741
|
+
});
|
|
6742
|
+
}
|
|
6743
|
+
);
|
|
6478
6744
|
var accountGroupCmd = program.command("account-group").description("\u8D26\u53F7\u5206\u7EC4\u7BA1\u7406\uFF1A\u67E5\u8BE2\u3001\u65B0\u5EFA\u3001\u7F16\u8F91\u3001\u5220\u9664\u5206\u7EC4");
|
|
6479
|
-
accountGroupCmd.command("list").description("\u67E5\u8BE2\u8D26\u53F7\u5206\u7EC4\u5217\u8868").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u5B8C\u6574\u5206\u7EC4\u6570\u636E\uFF08\u542B mediaAccountInfos\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6485
|
-
|
|
6486
|
-
});
|
|
6745
|
+
accountGroupCmd.command("list").description("\u67E5\u8BE2\u8D26\u53F7\u5206\u7EC4\u5217\u8868").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u5B8C\u6574\u5206\u7EC4\u6570\u636E\uFF08\u542B mediaAccountInfos\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6746
|
+
async (opts) => {
|
|
6747
|
+
await runAccountGroupList({
|
|
6748
|
+
token: opts.token,
|
|
6749
|
+
json: opts.json,
|
|
6750
|
+
unicode: opts.unicode,
|
|
6751
|
+
verbose: opts.verbose
|
|
6752
|
+
});
|
|
6753
|
+
}
|
|
6754
|
+
);
|
|
6487
6755
|
accountGroupCmd.command("create").description("\u65B0\u5EFA\u8D26\u53F7\u5206\u7EC4").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--name <name>", "\u5206\u7EC4\u540D\u79F0").option(
|
|
6488
6756
|
"--accounts <ids>",
|
|
6489
6757
|
"\u7EC4\u5185\u8D26\u53F7\u7684 mediaCustomerId\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u53EF\u4ECE list-accounts --json \u83B7\u53D6\uFF09"
|
|
6490
|
-
).option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
|
|
6498
|
-
});
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
}
|
|
6758
|
+
).option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6759
|
+
async (opts) => {
|
|
6760
|
+
await runAccountGroupCreate({
|
|
6761
|
+
token: opts.token,
|
|
6762
|
+
name: opts.name,
|
|
6763
|
+
accounts: opts.accounts,
|
|
6764
|
+
json: opts.json,
|
|
6765
|
+
verbose: opts.verbose
|
|
6766
|
+
});
|
|
6767
|
+
}
|
|
6768
|
+
);
|
|
6769
|
+
accountGroupCmd.command("update").description("\u7F16\u8F91\u5DF2\u6709\u8D26\u53F7\u5206\u7EC4\uFF08\u66F4\u65B0\u540D\u79F0\u6216\u8D26\u53F7\u5217\u8868\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--id <groupId>", "\u5206\u7EC4 ID\uFF08\u6765\u81EA account-group list \u7684 id \u5B57\u6BB5\uFF09").requiredOption("--name <name>", "\u65B0\u5206\u7EC4\u540D\u79F0").option("--accounts <ids>", "\u7EC4\u5185\u8D26\u53F7\u7684 mediaCustomerId\uFF0C\u9017\u53F7\u5206\u9694\uFF1B\u4E0D\u4F20\u5219\u6E05\u7A7A\u5206\u7EC4\u5185\u8D26\u53F7").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6770
|
+
async (opts) => {
|
|
6771
|
+
await runAccountGroupUpdate({
|
|
6772
|
+
token: opts.token,
|
|
6773
|
+
id: opts.id,
|
|
6774
|
+
name: opts.name,
|
|
6775
|
+
accounts: opts.accounts,
|
|
6776
|
+
json: opts.json,
|
|
6777
|
+
verbose: opts.verbose
|
|
6778
|
+
});
|
|
6779
|
+
}
|
|
6780
|
+
);
|
|
6512
6781
|
accountGroupCmd.command("delete").description("\u5220\u9664\u8D26\u53F7\u5206\u7EC4\uFF08\u4E0D\u53EF\u5220\u9664\u300C\u672A\u5206\u7EC4\u300D\u865A\u62DF\u5206\u7EC4\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--id <groupId>", "\u5206\u7EC4 ID\uFF08\u6765\u81EA account-group list \u7684 id \u5B57\u6BB5\uFF09").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6513
6782
|
await runAccountGroupDelete({
|
|
6514
6783
|
token: opts.token,
|
|
@@ -6517,150 +6786,201 @@ accountGroupCmd.command("delete").description("\u5220\u9664\u8D26\u53F7\u5206\u7
|
|
|
6517
6786
|
verbose: opts.verbose
|
|
6518
6787
|
});
|
|
6519
6788
|
});
|
|
6520
|
-
accountGroupCmd.command("add-accounts").description("\u5411\u5206\u7EC4\u8FFD\u52A0\u8D26\u53F7\uFF08\u81EA\u52A8\u5408\u5E76\uFF0C\u4E0D\u5F71\u54CD\u5DF2\u6709\u8D26\u53F7\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--id <groupId>", "\u5206\u7EC4 ID\uFF08\u6765\u81EA account-group list \u7684 id \u5B57\u6BB5\uFF09").requiredOption("--accounts <ids>", "\u8981\u6DFB\u52A0\u7684 mediaCustomerId\uFF0C\u9017\u53F7\u5206\u9694").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
});
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6789
|
+
accountGroupCmd.command("add-accounts").description("\u5411\u5206\u7EC4\u8FFD\u52A0\u8D26\u53F7\uFF08\u81EA\u52A8\u5408\u5E76\uFF0C\u4E0D\u5F71\u54CD\u5DF2\u6709\u8D26\u53F7\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--id <groupId>", "\u5206\u7EC4 ID\uFF08\u6765\u81EA account-group list \u7684 id \u5B57\u6BB5\uFF09").requiredOption("--accounts <ids>", "\u8981\u6DFB\u52A0\u7684 mediaCustomerId\uFF0C\u9017\u53F7\u5206\u9694").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6790
|
+
async (opts) => {
|
|
6791
|
+
await runAccountGroupAddAccounts({
|
|
6792
|
+
token: opts.token,
|
|
6793
|
+
id: opts.id,
|
|
6794
|
+
accounts: opts.accounts,
|
|
6795
|
+
json: opts.json,
|
|
6796
|
+
verbose: opts.verbose
|
|
6797
|
+
});
|
|
6798
|
+
}
|
|
6799
|
+
);
|
|
6800
|
+
accountGroupCmd.command("remove-accounts").description("\u4ECE\u5206\u7EC4\u79FB\u9664\u6307\u5B9A\u8D26\u53F7\uFF08\u4E0D\u5F71\u54CD\u5176\u4ED6\u5DF2\u6709\u8D26\u53F7\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").requiredOption("--id <groupId>", "\u5206\u7EC4 ID\uFF08\u6765\u81EA account-group list \u7684 id \u5B57\u6BB5\uFF09").requiredOption("--accounts <ids>", "\u8981\u79FB\u9664\u7684 mediaCustomerId\uFF0C\u9017\u53F7\u5206\u9694").option("--json", "\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6801
|
+
async (opts) => {
|
|
6802
|
+
await runAccountGroupRemoveAccounts({
|
|
6803
|
+
token: opts.token,
|
|
6804
|
+
id: opts.id,
|
|
6805
|
+
accounts: opts.accounts,
|
|
6806
|
+
json: opts.json,
|
|
6807
|
+
verbose: opts.verbose
|
|
6808
|
+
});
|
|
6809
|
+
}
|
|
6810
|
+
);
|
|
6538
6811
|
var personaCmd = program.command("persona").description("CSO \u4EBA\u8BBE\uFF1A\u67E5\u8BE2\u5E73\u53F0\u4EBA\u8BBE\u4E0E styleGuide\uFF08Markdown\uFF09");
|
|
6539
|
-
personaCmd.command("list").description("\u62C9\u53D6\u4EBA\u8BBE\u5217\u8868\uFF08POST /cso/v1/platformdata/GetPersonas\uFF0C\u4E0E Web \u7AEF\u4E00\u81F4\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--id <id>", "\u53EA\u663E\u793A\u6307\u5B9A\u4EBA\u8BBE id").option("--name <text>", "\u6309\u4EBA\u8BBE\u540D\u79F0\u5B50\u4E32\u8FC7\u6EE4").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u542B styleGuide\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
6543
|
-
|
|
6544
|
-
|
|
6545
|
-
|
|
6546
|
-
|
|
6547
|
-
|
|
6548
|
-
});
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
|
|
6555
|
-
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6564
|
-
|
|
6565
|
-
|
|
6566
|
-
|
|
6567
|
-
|
|
6568
|
-
|
|
6569
|
-
|
|
6570
|
-
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
|
|
6576
|
-
|
|
6577
|
-
|
|
6578
|
-
|
|
6579
|
-
|
|
6580
|
-
|
|
6581
|
-
|
|
6582
|
-
|
|
6583
|
-
}
|
|
6584
|
-
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
program.command("
|
|
6812
|
+
personaCmd.command("list").description("\u62C9\u53D6\u4EBA\u8BBE\u5217\u8868\uFF08POST /cso/v1/platformdata/GetPersonas\uFF0C\u4E0E Web \u7AEF\u4E00\u81F4\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--id <id>", "\u53EA\u663E\u793A\u6307\u5B9A\u4EBA\u8BBE id").option("--name <text>", "\u6309\u4EBA\u8BBE\u540D\u79F0\u5B50\u4E32\u8FC7\u6EE4").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u542B styleGuide\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6813
|
+
async (opts) => {
|
|
6814
|
+
await runPersonaList({
|
|
6815
|
+
token: opts.token,
|
|
6816
|
+
id: opts.id,
|
|
6817
|
+
name: opts.name,
|
|
6818
|
+
json: opts.json,
|
|
6819
|
+
unicode: opts.unicode,
|
|
6820
|
+
verbose: opts.verbose
|
|
6821
|
+
});
|
|
6822
|
+
}
|
|
6823
|
+
);
|
|
6824
|
+
var ragCmd = program.command("rag").description(
|
|
6825
|
+
"RAG \u77E5\u8BC6\u5E93\u68C0\u7D22\uFF08\u4EC5\u5199\u7A3F/\u4E09\u5E93\uFF1B\u9ED8\u8BA4 belongToId=account/me \u7684 companyId\uFF0C\u9ED8\u8BA4 tags=\u4E09\u5E93\uFF09"
|
|
6826
|
+
);
|
|
6827
|
+
ragCmd.command("list").description(
|
|
6828
|
+
"\u5217\u51FA\u5F53\u524D\u4F01\u4E1A\u4E0B\u6240\u6709\u77E5\u8BC6\u5E93\u6587\u4EF6\u5939\uFF08GET cutapi/v1/material/querylist\uFF09\uFF0C\u4F9B AI \u9009\u62E9\u68C0\u7D22\u8303\u56F4"
|
|
6829
|
+
).option("--belong-to-id <id>", "\u4F01\u4E1A ID\uFF1B\u4E0D\u4F20\u5219\u4ECE GET /query/account/me \u53D6 companyId").option("--rag-only", "\u4EC5\u663E\u793A\u5DF2\u5EFA RAG \u5411\u91CF\u7D22\u5F15\uFF08ragStatus=true\uFF09\u7684\u77E5\u8BC6\u5E93", false).option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6830
|
+
async (opts) => {
|
|
6831
|
+
await runRagList({
|
|
6832
|
+
belongToId: opts.belongToId,
|
|
6833
|
+
ragOnly: opts.ragOnly,
|
|
6834
|
+
token: opts.token,
|
|
6835
|
+
json: opts.json,
|
|
6836
|
+
verbose: opts.verbose
|
|
6837
|
+
});
|
|
6838
|
+
}
|
|
6839
|
+
);
|
|
6840
|
+
ragCmd.command("query").description("\u6309\u5173\u952E\u8BCD\u68C0\u7D22\u5DF2\u7EB3\u5165\u5411\u91CF\u7684\u77E5\u8BC6\u7247\u6BB5\uFF08GET cutapi/v1/material/queryknowledges\uFF09").requiredOption("-q, --query <text>", "\u68C0\u7D22\u5173\u952E\u8BCD\u6216\u95EE\u53E5").option("--belong-to-id <id>", "\u4F01\u4E1A ID\uFF1B\u4E0D\u4F20\u5219\u4ECE GET /query/account/me \u53D6 companyId").option("--source-id <ids>", "\u7D20\u6750\u6587\u4EF6 ID\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF0Cqueryknowledges \u7684 sourceid\uFF09").option("--folder-id <ids>", "\u6587\u4EF6\u5939 ID\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u53EF\u9009\uFF0Ccomid\uFF09").option("--top-k <n>", "\u8FD4\u56DE\u6761\u6570\uFF0C3\u201330\uFF08\u9ED8\u8BA4 7\uFF09", "7").option("--belong-to <n>", "\u5F52\u5C5E\u7C7B\u578B\uFF08\u9ED8\u8BA4 0\uFF0C\u4F01\u4E1A\uFF09", "0").option("--tags <tags>", "\u6807\u7B7E\u8FC7\u6EE4\uFF0C\u9017\u53F7\u5206\u9694\uFF1B\u4E0D\u4F20\u5219\u4E0D\u8FC7\u6EE4\u6807\u7B7E\uFF08\u5168\u91CF\u68C0\u7D22\uFF09").option("--category <categories>", "\u5206\u7C7B\u8FC7\u6EE4\uFF0C\u9017\u53F7\u5206\u9694").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6841
|
+
async (opts) => {
|
|
6842
|
+
await runRagQuery({
|
|
6843
|
+
query: opts.query,
|
|
6844
|
+
belongToId: opts.belongToId,
|
|
6845
|
+
sourceId: opts.sourceId,
|
|
6846
|
+
folderId: opts.folderId,
|
|
6847
|
+
topK: opts.topK ? parseInt(opts.topK, 10) : void 0,
|
|
6848
|
+
belongTo: opts.belongTo !== void 0 ? parseInt(opts.belongTo, 10) : void 0,
|
|
6849
|
+
tags: opts.tags,
|
|
6850
|
+
category: opts.category,
|
|
6851
|
+
token: opts.token,
|
|
6852
|
+
json: opts.json,
|
|
6853
|
+
unicode: opts.unicode,
|
|
6854
|
+
verbose: opts.verbose
|
|
6855
|
+
});
|
|
6856
|
+
}
|
|
6857
|
+
);
|
|
6858
|
+
program.command("list-members").description("\u5217\u51FA\u516C\u53F8\u6240\u6709\u6210\u5458\uFF0C\u663E\u793A\u7528\u6237ID\u4F9B list-accounts --owner \u4F7F\u7528").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("-q, --query <keyword>", "\u6309\u59D3\u540D\u6216\u624B\u673A\u53F7\u6A21\u7CCA\u641C\u7D22").option("--json", "\u4EE5 JSON \u8F93\u51FA\u6210\u5458\u5217\u8868", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII +-|\uFF09", false).option("--verbose", "\u8F93\u51FA\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6859
|
+
async (opts) => {
|
|
6860
|
+
await runListMembers({
|
|
6861
|
+
token: opts.token,
|
|
6862
|
+
query: opts.query,
|
|
6863
|
+
json: opts.json,
|
|
6864
|
+
unicode: opts.unicode,
|
|
6865
|
+
verbose: opts.verbose
|
|
6866
|
+
});
|
|
6867
|
+
}
|
|
6868
|
+
);
|
|
6869
|
+
program.command("upload").description("\u4E0A\u4F20\u672C\u5730\u89C6\u9891\u6216\u56FE\u7247\u5230 Siluzan \u7D20\u6750\u5E93\uFF0C\u8F93\u51FA\u53EF\u76F4\u63A5\u586B\u5165 publish-config.json \u7684\u5B57\u6BB5").requiredOption("-f, --file <path>", "\u672C\u5730\u6587\u4EF6\u8DEF\u5F84").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--kind <video|image>", "\u624B\u52A8\u6307\u5B9A\u6587\u4EF6\u7C7B\u578B\uFF08\u9ED8\u8BA4\u6309\u6269\u5C55\u540D\u81EA\u52A8\u5224\u65AD\uFF09").option("--cover <path>", "\u5C01\u9762\u56FE\u7247\u8DEF\u5F84\uFF08\u4E0A\u4F20\u89C6\u9891\u65F6\u5FC5\u987B\u63D0\u4F9B\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F\u53CA\u5B8C\u6574 URL\uFF08\u9ED8\u8BA4\u9690\u85CF\u542B\u7B7E\u540D URL\uFF09", false).action(
|
|
6870
|
+
async (opts) => {
|
|
6871
|
+
await runUpload({
|
|
6872
|
+
file: opts.file,
|
|
6873
|
+
token: opts.token,
|
|
6874
|
+
kind: opts.kind,
|
|
6875
|
+
cover: opts.cover,
|
|
6876
|
+
verbose: opts.verbose
|
|
6877
|
+
});
|
|
6878
|
+
}
|
|
6879
|
+
);
|
|
6880
|
+
program.command("extract-cover").description(
|
|
6881
|
+
"\u4ECE\u89C6\u9891\u6587\u4EF6\u622A\u53D6\u5C01\u9762\u5E27\uFF0C\u6309\u5E73\u53F0\u89C4\u683C\uFF08YouTube/TikTok/Twitter \u7B49\uFF09\u88C1\u526A\u7F29\u653E\uFF0C\u53EF\u9009\u81EA\u52A8\u4E0A\u4F20"
|
|
6882
|
+
).requiredOption("-f, --file <path>", "\u89C6\u9891\u6587\u4EF6\u8DEF\u5F84\uFF08MP4/MOV/MKV \u7B49\uFF09").option(
|
|
6597
6883
|
"-t, --time <seconds...>",
|
|
6598
6884
|
"\u622A\u5E27\u65F6\u95F4\u70B9\uFF08\u79D2\uFF0C\u53EF\u591A\u4E2A\uFF09\uFF0C\u5982 -t 0 3 10 \u622A\u53D6\u7B2C 0\u30013\u300110 \u79D2\u5E27\uFF08\u9ED8\u8BA4: 0\uFF09"
|
|
6599
6885
|
).option(
|
|
6600
6886
|
"-p, --platform <platform>",
|
|
6601
6887
|
"\u76EE\u6807\u5E73\u53F0\uFF08\u9ED8\u8BA4 youtube\uFF09\u3002\u8FD0\u884C --list-platforms \u67E5\u770B\u5168\u90E8\u652F\u6301\u5E73\u53F0",
|
|
6602
6888
|
"youtube"
|
|
6603
|
-
).option("-o, --output <path>", "\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF08\u591A\u5E27\u65F6\u4F5C\u4E3A\u6587\u4EF6\u540D\u524D\u7F00\uFF1B\u9ED8\u8BA4\u4FDD\u5B58\u5728\u89C6\u9891\u540C\u76EE\u5F55\uFF09").option("--upload", "\u622A\u53D6\u540E\u81EA\u52A8\u4E0A\u4F20\u5C01\u9762\u5230\u7D20\u6750\u5E93\uFF0C\u5E76\u8F93\u51FA cover JSON \u7247\u6BB5", false).option("--list-platforms", "\u5217\u51FA\u6240\u6709\u652F\u6301\u7684\u5E73\u53F0\u5C01\u9762\u89C4\u683C", false).option("--token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").action(
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
|
|
6609
|
-
|
|
6610
|
-
|
|
6611
|
-
|
|
6612
|
-
|
|
6613
|
-
|
|
6614
|
-
|
|
6615
|
-
|
|
6889
|
+
).option("-o, --output <path>", "\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF08\u591A\u5E27\u65F6\u4F5C\u4E3A\u6587\u4EF6\u540D\u524D\u7F00\uFF1B\u9ED8\u8BA4\u4FDD\u5B58\u5728\u89C6\u9891\u540C\u76EE\u5F55\uFF09").option("--upload", "\u622A\u53D6\u540E\u81EA\u52A8\u4E0A\u4F20\u5C01\u9762\u5230\u7D20\u6750\u5E93\uFF0C\u5E76\u8F93\u51FA cover JSON \u7247\u6BB5", false).option("--list-platforms", "\u5217\u51FA\u6240\u6709\u652F\u6301\u7684\u5E73\u53F0\u5C01\u9762\u89C4\u683C", false).option("--token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").action(
|
|
6890
|
+
async (opts) => {
|
|
6891
|
+
if (opts.listPlatforms) {
|
|
6892
|
+
const { PLATFORM_COVER_SPECS } = await import("./extract-cover-RZ5OIHTV.js");
|
|
6893
|
+
const keys = Object.keys(PLATFORM_COVER_SPECS);
|
|
6894
|
+
console.log("\n\u5404\u5E73\u53F0\u89C6\u9891\u5C01\u9762\u89C4\u683C\uFF1A\n");
|
|
6895
|
+
const maxKeyLen = Math.max(...keys.map((k) => k.length));
|
|
6896
|
+
const maxNameLen = Math.max(...keys.map((k) => PLATFORM_COVER_SPECS[k].displayName.length));
|
|
6897
|
+
console.log(
|
|
6898
|
+
` ${"\u5E73\u53F0 ID".padEnd(maxKeyLen)} ${"\u5E73\u53F0\u540D\u79F0".padEnd(maxNameLen)} ${"\u5C3A\u5BF8".padEnd(12)} ${"\u6BD4\u4F8B".padEnd(6)} \u8BF4\u660E`
|
|
6899
|
+
);
|
|
6900
|
+
console.log(" " + "-".repeat(maxKeyLen + maxNameLen + 55));
|
|
6901
|
+
for (const key of keys) {
|
|
6902
|
+
const spec = PLATFORM_COVER_SPECS[key];
|
|
6903
|
+
const size = `${spec.width}\xD7${spec.height}`;
|
|
6904
|
+
console.log(
|
|
6905
|
+
` ${key.padEnd(maxKeyLen)} ${spec.displayName.padEnd(maxNameLen)} ${size.padEnd(12)} ${spec.ratio.padEnd(6)} ${spec.note}`
|
|
6906
|
+
);
|
|
6907
|
+
}
|
|
6908
|
+
console.log();
|
|
6909
|
+
return;
|
|
6616
6910
|
}
|
|
6617
|
-
|
|
6618
|
-
|
|
6911
|
+
await runExtractCover({
|
|
6912
|
+
file: opts.file,
|
|
6913
|
+
time: opts.time,
|
|
6914
|
+
platform: opts.platform,
|
|
6915
|
+
output: opts.output,
|
|
6916
|
+
upload: opts.upload,
|
|
6917
|
+
token: opts.token
|
|
6918
|
+
});
|
|
6619
6919
|
}
|
|
6620
|
-
|
|
6621
|
-
file: opts.file,
|
|
6622
|
-
time: opts.time,
|
|
6623
|
-
platform: opts.platform,
|
|
6624
|
-
output: opts.output,
|
|
6625
|
-
upload: opts.upload,
|
|
6626
|
-
token: opts.token
|
|
6627
|
-
});
|
|
6628
|
-
});
|
|
6920
|
+
);
|
|
6629
6921
|
program.command("publish").description("\u6309 JSON \u914D\u7F6E\u6587\u4EF6\u63D0\u4EA4\u53D1\u5E03\u4EFB\u52A1\u5230 CSO").requiredOption("-c, --config <path>", "\u53D1\u5E03\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\uFF08JSON\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--dry-run", "\u4EC5\u9884\u89C8\u8BF7\u6C42\u4F53\uFF0C\u4E0D\u5B9E\u9645\u63D0\u4EA4", false).option("--verbose", "\u663E\u793A\u5B8C\u6574\u8BF7\u6C42\u4F53\u53CA\u8BE6\u7EC6\u9519\u8BEF\uFF08\u542B\u654F\u611F\u5B57\u6BB5\uFF0C\u9ED8\u8BA4\u8131\u654F\uFF09", false).action(async (opts) => {
|
|
6630
|
-
await runPublish({
|
|
6922
|
+
await runPublish({
|
|
6923
|
+
config: opts.config,
|
|
6924
|
+
token: opts.token,
|
|
6925
|
+
dryRun: opts.dryRun,
|
|
6926
|
+
verbose: opts.verbose
|
|
6927
|
+
});
|
|
6631
6928
|
});
|
|
6632
6929
|
var reportCmd = program.command("report").description("\u8FD0\u8425\u62A5\u8868\uFF08table\uFF09\u76F8\u5173\u547D\u4EE4\uFF1A\u62C9\u53D6\u62A5\u8868\u6570\u636E\u3001\u67E5\u770B\u5BFC\u51FA\u8BB0\u5F55\u3001\u4E0B\u8F7D PDF");
|
|
6633
|
-
reportCmd.command("fetch").description("\u6309\u5A92\u4F53/\u65E5\u671F\u62C9\u53D6\u8FD0\u8425\u62A5\u8868\u6A21\u5757\u6570\u636E\uFF08\u8986\u76D6 table \u9875\u4E3B\u8981\u67E5\u8BE2\u63A5\u53E3\uFF09").requiredOption(
|
|
6930
|
+
reportCmd.command("fetch").description("\u6309\u5A92\u4F53/\u65E5\u671F\u62C9\u53D6\u8FD0\u8425\u62A5\u8868\u6A21\u5757\u6570\u636E\uFF08\u8986\u76D6 table \u9875\u4E3B\u8981\u67E5\u8BE2\u63A5\u53E3\uFF09").requiredOption(
|
|
6931
|
+
"--media <mediaType>",
|
|
6932
|
+
"\u5A92\u4F53\u7C7B\u578B\uFF0C\u5982 Douyin / YouTube / TikTokBusinessAccount / Twitter"
|
|
6933
|
+
).option(
|
|
6934
|
+
"--maids <ids...>",
|
|
6935
|
+
"\u5A92\u4F53\u8D26\u53F7list-accounts\u83B7\u53D6\u7684[mediaCustomerId] ID\uFF0C\u652F\u6301\u7A7A\u683C\u5206\u9694\u6216\u9017\u53F7\u5206\u9694\uFF1B\u4E0D\u4F20\u8868\u793A\u8BE5\u5A92\u4F53\u5168\u90E8\u8D26\u53F7"
|
|
6936
|
+
).option(
|
|
6937
|
+
"--days <n>",
|
|
6938
|
+
"\u8FD1 N \u5929\uFF08\u4ECE\u6628\u5929\u5F80\u56DE\u7B97\uFF09\uFF1A7=\u8FD1 7 \u5929\uFF0C30=\u8FD1 30 \u5929\uFF08\u9ED8\u8BA4\uFF09\uFF0C90/180 \u7B49\uFF0C\u4F18\u5148\u7EA7\u4F4E\u4E8E --start/--end"
|
|
6939
|
+
).option("--start <date>", "\u5F00\u59CB\u65F6\u95F4\uFF08\u672C\u5730\u65F6\u533A\uFF0CYYYY-MM-DD \u6216 ISO \u65E5\u671F\u65F6\u95F4\uFF09").option("--end <date>", "\u7ED3\u675F\u65F6\u95F4\uFF08\u672C\u5730\u65F6\u533A\uFF0CYYYY-MM-DD \u6216 ISO \u65E5\u671F\u65F6\u95F4\uFF09").option("--method <Day|Week|Moth>", "\u805A\u5408\u7EF4\u5EA6\uFF08\u4E0E Web table \u4FDD\u6301\u4E00\u81F4\uFF09", "Day").option(
|
|
6634
6940
|
"--include <modules...>",
|
|
6635
6941
|
"\u9700\u8981\u62C9\u53D6\u7684\u6A21\u5757\uFF0C\u652F\u6301\u9017\u53F7\u5206\u9694\uFF1Aoperation,total-fans,fans-analysis,hot-topic,works,hot-comment-word,comment-top10,video-duration,video-distribution,comment-trend,fans-trend,new-fans-trend,homepage-visit"
|
|
6636
|
-
).option("--order <play|digg|fullplay>", "works \u6A21\u5757\u6392\u5E8F\u5B57\u6BB5", "play").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6637
|
-
|
|
6638
|
-
|
|
6639
|
-
|
|
6640
|
-
|
|
6641
|
-
});
|
|
6642
|
-
|
|
6643
|
-
|
|
6644
|
-
|
|
6942
|
+
).option("--order <play|digg|fullplay>", "works \u6A21\u5757\u6392\u5E8F\u5B57\u6BB5", "play").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6943
|
+
async (opts) => {
|
|
6944
|
+
await runReportFetch({
|
|
6945
|
+
...opts,
|
|
6946
|
+
days: opts.days ? parseInt(opts.days, 10) : void 0
|
|
6947
|
+
});
|
|
6948
|
+
}
|
|
6949
|
+
);
|
|
6950
|
+
reportCmd.command("records").description("\u67E5\u8BE2\u8FD0\u8425\u62A5\u8868\u5BFC\u51FA\u8BB0\u5F55\uFF08\u5BF9\u5E94 table \u5BFC\u51FA\u8BB0\u5F55\u5F39\u7A97\uFF09").option("--page <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--page-size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 20\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6951
|
+
async (opts) => {
|
|
6952
|
+
await runReportRecords(opts);
|
|
6953
|
+
}
|
|
6954
|
+
);
|
|
6645
6955
|
reportCmd.command("download").description("\u6309\u5BFC\u51FA\u8BB0\u5F55 ID \u4E0B\u8F7D\u8FD0\u8425\u62A5\u8868 PDF\uFF08\u5BF9\u5E94 table \u7684\u91CD\u65B0\u4E0B\u8F7D\uFF09").requiredOption("--id <recordId>", "\u5BFC\u51FA\u8BB0\u5F55 ID").option("-o, --output <path>", "\u8F93\u51FA PDF \u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5F53\u524D\u76EE\u5F55\u81EA\u52A8\u547D\u540D\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6646
6956
|
await runReportDownload(opts);
|
|
6647
6957
|
});
|
|
6648
6958
|
var planningCmd = program.command("planning").description("AI \u5185\u5BB9\u89C4\u5212\uFF08planning\uFF09\uFF1A\u4F01\u4E1A\u5217\u8868\u3001\u5185\u5BB9\u7C7B\u578B\u3001\u751F\u6210\u3001\u4EFB\u52A1\u7BA1\u7406\u3001\u8BE6\u60C5\u4E0E\u5BFC\u51FA");
|
|
6649
|
-
planningCmd.command("enterprises").description("\u67E5\u8BE2\u4F01\u4E1A\u76EE\u5F55\uFF08cutapi querylist\uFF0C\u4F9B\u89C4\u5212\u751F\u6210\u65F6\u9009\u62E9\u4F01\u4E1A\uFF09").option("--belong-to-id <id>", "\u4F01\u4E1A\u5F52\u5C5E ID\uFF08\u4E0D\u4F20\u65F6\u53D1\u9001\u7A7A\u503C\uFF09").option("--page-size <number>", "\u76EE\u5F55\u67E5\u8BE2\u6761\u6570\uFF08\u9ED8\u8BA4 100\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
}
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6959
|
+
planningCmd.command("enterprises").description("\u67E5\u8BE2\u4F01\u4E1A\u76EE\u5F55\uFF08cutapi querylist\uFF0C\u4F9B\u89C4\u5212\u751F\u6210\u65F6\u9009\u62E9\u4F01\u4E1A\uFF09").option("--belong-to-id <id>", "\u4F01\u4E1A\u5F52\u5C5E ID\uFF08\u4E0D\u4F20\u65F6\u53D1\u9001\u7A7A\u503C\uFF09").option("--page-size <number>", "\u76EE\u5F55\u67E5\u8BE2\u6761\u6570\uFF08\u9ED8\u8BA4 100\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6960
|
+
async (opts) => {
|
|
6961
|
+
await runPlanningEnterprises(opts);
|
|
6962
|
+
}
|
|
6963
|
+
);
|
|
6964
|
+
planningCmd.command("content-types").description("\u67E5\u8BE2\u53EF\u7528\u5185\u5BB9\u7C7B\u578B\uFF08\u5931\u8D25\u65F6\u56DE\u9000\u9ED8\u8BA4 post/video\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6965
|
+
async (opts) => {
|
|
6966
|
+
await runPlanningContentTypes(opts);
|
|
6967
|
+
}
|
|
6968
|
+
);
|
|
6969
|
+
planningCmd.command("generate").description("\u521B\u5EFA\u89C4\u5212\u751F\u6210\u4EFB\u52A1\uFF08\u5BF9\u5E94 planning \u751F\u6210\u5F39\u7A97\uFF09").requiredOption("--enterprise-id <id>", "\u4F01\u4E1A ID").option("--enterprise-name <name>", "\u4F01\u4E1A\u540D\u79F0\uFF08\u4E0D\u4F20\u9ED8\u8BA4\u4F7F\u7528 enterprise-id\uFF09").requiredOption("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").requiredOption("--content-types <types...>", "\u5185\u5BB9\u7C7B\u578B\uFF0C\u652F\u6301\u9017\u53F7\u6216\u7A7A\u683C\uFF1Apost,video").option("--partnership-total-months <6|12|24>", "\u5408\u4F5C\u603B\u6708\u6570\uFF08\u9ED8\u8BA4 12\uFF09", "12").option("--partnership-start-year-month <YYYY-MM>", "\u5408\u4F5C\u5F00\u59CB\u6708\u4EFD\uFF08\u4E0E\u89C4\u5212\u6708\u4E0D\u540C\u624D\u4F1A\u4F20\u7ED9\u63A5\u53E3\uFF09").option("--freq-unit <week|month>", "\u9891\u6B21\u5355\u4F4D").option("--freq-count <number>", "\u9891\u6B21\u6570\u91CF\uFF08\u4E0E --freq-unit \u540C\u65F6\u63D0\u4F9B\uFF09").option("--marketing-goal <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u8425\u9500\u76EE\u6807").option("--key-products <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u6838\u5FC3\u4EA7\u54C1").option("--target-markets <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u76EE\u6807\u5E02\u573A").option("--key-events <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5173\u952E\u8282\u70B9").option("--content-tone <text>", "\u672C\u6708\u89C4\u5212\u91CD\u70B9\uFF1A\u5185\u5BB9\u8BED\u8C03").option("--watch", "\u63D0\u4EA4\u540E\u76D1\u542C\u4EFB\u52A1\u76F4\u5230\u5B8C\u6210/\u5931\u8D25", false).option("--watch-timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6970
|
+
async (opts) => {
|
|
6971
|
+
await runPlanningGenerate(opts);
|
|
6972
|
+
}
|
|
6973
|
+
);
|
|
6974
|
+
planningCmd.command("list").description("\u67E5\u8BE2\u89C4\u5212\u4EFB\u52A1\u5217\u8868\uFF08\u652F\u6301\u4F01\u4E1A/\u6708\u5EA6\u7B5B\u9009\u4E0E\u5206\u9875\uFF09").option("--enterprise-id <id>", "\u4F01\u4E1A ID").option("--year-month <YYYY-MM>", "\u89C4\u5212\u6708\u4EFD").option("--page-index <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--page-size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6975
|
+
async (opts) => {
|
|
6976
|
+
await runPlanningList(opts);
|
|
6977
|
+
}
|
|
6978
|
+
);
|
|
6979
|
+
planningCmd.command("watch").description("\u76D1\u542C\u89C4\u5212\u4EFB\u52A1\u8FDB\u5EA6\uFF08SSE\uFF09").argument("<taskId>", "\u4EFB\u52A1 ID").option("--timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6980
|
+
async (taskId, opts) => {
|
|
6981
|
+
await runPlanningWatchTask(taskId, opts);
|
|
6982
|
+
}
|
|
6983
|
+
);
|
|
6664
6984
|
var planningTaskCmd = planningCmd.command("task").description("\u89C4\u5212\u4EFB\u52A1\u64CD\u4F5C\uFF1A\u53D6\u6D88\u3001\u91CD\u8BD5\u3001\u5220\u9664");
|
|
6665
6985
|
planningTaskCmd.command("cancel").description("\u53D6\u6D88\u4EFB\u52A1").argument("<taskId>", "\u4EFB\u52A1 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (taskId, opts) => {
|
|
6666
6986
|
await runPlanningTaskCancel(taskId, opts);
|
|
@@ -6674,20 +6994,28 @@ planningTaskCmd.command("delete").description("\u5220\u9664\u4EFB\u52A1").argume
|
|
|
6674
6994
|
planningCmd.command("get").description("\u83B7\u53D6\u89C4\u5212\u8BE6\u60C5").argument("<planId>", "\u89C4\u5212 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (planId, opts) => {
|
|
6675
6995
|
await runPlanningGet(planId, opts);
|
|
6676
6996
|
});
|
|
6677
|
-
planningCmd.command("regenerate").description("\u5BF9\u5DF2\u6709\u89C4\u5212\u53D1\u8D77\u518D\u751F\u6210").argument("<planId>", "\u89C4\u5212 ID").option("--watch", "\u63D0\u4EA4\u540E\u76D1\u542C\u4EFB\u52A1\u76F4\u5230\u5B8C\u6210/\u5931\u8D25", false).option("--watch-timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6678
|
-
|
|
6679
|
-
|
|
6997
|
+
planningCmd.command("regenerate").description("\u5BF9\u5DF2\u6709\u89C4\u5212\u53D1\u8D77\u518D\u751F\u6210").argument("<planId>", "\u89C4\u5212 ID").option("--watch", "\u63D0\u4EA4\u540E\u76D1\u542C\u4EFB\u52A1\u76F4\u5230\u5B8C\u6210/\u5931\u8D25", false).option("--watch-timeout <seconds>", "\u76D1\u542C\u8D85\u65F6\u79D2\u6570\uFF08\u9ED8\u8BA4 300 \u79D2\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6998
|
+
async (planId, opts) => {
|
|
6999
|
+
await runPlanningRegenerate(planId, opts);
|
|
7000
|
+
}
|
|
7001
|
+
);
|
|
6680
7002
|
var planningExportCmd = planningCmd.command("export").description("\u89C4\u5212\u5BFC\u51FA");
|
|
6681
|
-
planningExportCmd.command("txt").description("\u5BFC\u51FA\u89C4\u5212\u4E3A TXT\uFF08Markdown \u8868\u683C\u683C\u5F0F\uFF09").option("--plan-id <id>", "\u89C4\u5212 ID\uFF08\u4E0E --input \u4E8C\u9009\u4E00\uFF09").option("--input <file>", "\u672C\u5730\u89C4\u5212 JSON \u6587\u4EF6\u8DEF\u5F84\uFF08\u4E0E --plan-id \u4E8C\u9009\u4E00\uFF09").option("-o, --output <file>", "\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u81EA\u52A8\u547D\u540D\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6682
|
-
|
|
6683
|
-
|
|
7003
|
+
planningExportCmd.command("txt").description("\u5BFC\u51FA\u89C4\u5212\u4E3A TXT\uFF08Markdown \u8868\u683C\u683C\u5F0F\uFF09").option("--plan-id <id>", "\u89C4\u5212 ID\uFF08\u4E0E --input \u4E8C\u9009\u4E00\uFF09").option("--input <file>", "\u672C\u5730\u89C4\u5212 JSON \u6587\u4EF6\u8DEF\u5F84\uFF08\u4E0E --plan-id \u4E8C\u9009\u4E00\uFF09").option("-o, --output <file>", "\u5BFC\u51FA\u6587\u4EF6\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u81EA\u52A8\u547D\u540D\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
7004
|
+
async (opts) => {
|
|
7005
|
+
await runPlanningExportTxt(opts);
|
|
7006
|
+
}
|
|
7007
|
+
);
|
|
6684
7008
|
var taskCmd = program.command("task").description("\u4EFB\u52A1\u7BA1\u7406\uFF08taskManage\uFF09\uFF1A\u5217\u8868\u7B5B\u9009\u3001\u8BE6\u60C5\u3001\u4EFB\u52A1\u64CD\u4F5C\u3001\u53D1\u5E03\u9879\u64CD\u4F5C\u3001\u8BC4\u8BBA\u64CD\u4F5C");
|
|
6685
|
-
taskCmd.command("list").description("\u67E5\u8BE2\u4EFB\u52A1\u5217\u8868\uFF08\u652F\u6301\u72B6\u6001/\u65F6\u95F4/\u7C7B\u578B/\u5173\u952E\u8BCD/\u5F02\u5E38\u4EFB\u52A1\u7B5B\u9009\uFF09").option("--page <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("--status <-1|0|1|2>", "\u72B6\u6001\uFF1A-1 \u5168\u90E8\uFF0C0 \u6267\u884C\u4E2D\uFF0C1 \u5DF2\u5B8C\u6210\uFF0C2 \u5DF2\u4E2D\u6B62").option("--asc", "\u6309\u521B\u5EFA\u65F6\u95F4\u5347\u5E8F\uFF08\u9ED8\u8BA4\u964D\u5E8F\uFF09", false).option("--search-type <task-name|creator>", "\u5173\u952E\u8BCD\u5B57\u6BB5\uFF08\u9ED8\u8BA4 task-name\uFF09", "task-name").option("--keyword <text>", "\u5173\u952E\u8BCD\uFF08\u914D\u5408 --search-type \u4F7F\u7528\uFF09").option("--creator <name>", "\u6309\u521B\u5EFA\u4EBA\u7B5B\u9009\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E --keyword + --search-type creator\uFF09").option("--mine", "\u4EC5\u770B\u6211\u521B\u5EFA\u7684\uFF08\u9700\u540C\u65F6\u63D0\u4F9B --mine-name\uFF09", false).option("--mine-name <name>", "\u6211\u7684\u7528\u6237\u540D\uFF08\u7528\u4E8E --mine\uFF09").option("--failed-only", "\u4EC5\u67E5\u770B\u5F02\u5E38\u4EFB\u52A1\uFF08nolyFailed=true\uFF09", false).option("--content-type <all|video|image-text>", "\u5185\u5BB9\u7C7B\u578B\u7B5B\u9009", "all").option("--date-preset <all|week|month|year>", "\u5FEB\u6377\u65F6\u95F4\u8303\u56F4", "all").option("--start-date <YYYY-MM-DD>", "\u81EA\u5B9A\u4E49\u5F00\u59CB\u65E5\u671F\uFF08\u4E0E --end-date \u540C\u65F6\u4F7F\u7528\uFF09").option("--end-date <YYYY-MM-DD>", "\u81EA\u5B9A\u4E49\u7ED3\u675F\u65E5\u671F\uFF08\u4E0E --start-date \u540C\u65F6\u4F7F\u7528\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6686
|
-
|
|
6687
|
-
|
|
6688
|
-
|
|
6689
|
-
|
|
6690
|
-
|
|
7009
|
+
taskCmd.command("list").description("\u67E5\u8BE2\u4EFB\u52A1\u5217\u8868\uFF08\u652F\u6301\u72B6\u6001/\u65F6\u95F4/\u7C7B\u578B/\u5173\u952E\u8BCD/\u5F02\u5E38\u4EFB\u52A1\u7B5B\u9009\uFF09").option("--page <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("--status <-1|0|1|2>", "\u72B6\u6001\uFF1A-1 \u5168\u90E8\uFF0C0 \u6267\u884C\u4E2D\uFF0C1 \u5DF2\u5B8C\u6210\uFF0C2 \u5DF2\u4E2D\u6B62").option("--asc", "\u6309\u521B\u5EFA\u65F6\u95F4\u5347\u5E8F\uFF08\u9ED8\u8BA4\u964D\u5E8F\uFF09", false).option("--search-type <task-name|creator>", "\u5173\u952E\u8BCD\u5B57\u6BB5\uFF08\u9ED8\u8BA4 task-name\uFF09", "task-name").option("--keyword <text>", "\u5173\u952E\u8BCD\uFF08\u914D\u5408 --search-type \u4F7F\u7528\uFF09").option("--creator <name>", "\u6309\u521B\u5EFA\u4EBA\u7B5B\u9009\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E --keyword + --search-type creator\uFF09").option("--mine", "\u4EC5\u770B\u6211\u521B\u5EFA\u7684\uFF08\u9700\u540C\u65F6\u63D0\u4F9B --mine-name\uFF09", false).option("--mine-name <name>", "\u6211\u7684\u7528\u6237\u540D\uFF08\u7528\u4E8E --mine\uFF09").option("--failed-only", "\u4EC5\u67E5\u770B\u5F02\u5E38\u4EFB\u52A1\uFF08nolyFailed=true\uFF09", false).option("--content-type <all|video|image-text>", "\u5185\u5BB9\u7C7B\u578B\u7B5B\u9009", "all").option("--date-preset <all|week|month|year>", "\u5FEB\u6377\u65F6\u95F4\u8303\u56F4", "all").option("--start-date <YYYY-MM-DD>", "\u81EA\u5B9A\u4E49\u5F00\u59CB\u65E5\u671F\uFF08\u4E0E --end-date \u540C\u65F6\u4F7F\u7528\uFF09").option("--end-date <YYYY-MM-DD>", "\u81EA\u5B9A\u4E49\u7ED3\u675F\u65E5\u671F\uFF08\u4E0E --start-date \u540C\u65F6\u4F7F\u7528\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
7010
|
+
async (opts) => {
|
|
7011
|
+
await runTaskList(opts);
|
|
7012
|
+
}
|
|
7013
|
+
);
|
|
7014
|
+
taskCmd.command("detail").description("\u67E5\u770B\u4EFB\u52A1\u8BE6\u60C5\u53D1\u5E03\u9879\u5217\u8868\uFF08\u5BF9\u5E94\u8BE6\u60C5\u62BD\u5C49\uFF09").requiredOption("--publish-id <id>", "\u4EFB\u52A1 ID").option("--media <nameOrId>", "\u5A92\u4F53\u7C7B\u578B\uFF08\u5982 Douyin / YouTube\uFF0C\u6216\u6570\u5B57 ID\uFF09").option("--page <number>", "\u9875\u7801\uFF08\u9ED8\u8BA4 1\uFF09").option("--size <number>", "\u6BCF\u9875\u6761\u6570\uFF08\u9ED8\u8BA4 10\uFF09").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF1B\u4F18\u5148\u4E8E ~/.siluzan/config.json\uFF09").option("--json", "\u8F93\u51FA\u5B8C\u6574 JSON\uFF08\u9002\u5408\u811A\u672C\u5904\u7406\uFF09", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
7015
|
+
async (opts) => {
|
|
7016
|
+
await runTaskDetail(opts);
|
|
7017
|
+
}
|
|
7018
|
+
);
|
|
6691
7019
|
taskCmd.command("start").description("\u542F\u52A8\u4EFB\u52A1\uFF08\u5BF9\u5E94 taskManage \u7684 startTask\uFF09").requiredOption("--publish-id <id>", "\u4EFB\u52A1 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6692
7020
|
await runTaskStart(opts);
|
|
6693
7021
|
});
|
|
@@ -6700,9 +7028,11 @@ taskCmd.command("delete").description("\u5220\u9664\u4EFB\u52A1\uFF08\u5BF9\u5E9
|
|
|
6700
7028
|
taskCmd.command("rename").description("\u91CD\u547D\u540D\u4EFB\u52A1\uFF08\u5BF9\u5E94 taskManage \u7684 reName\uFF09").requiredOption("--publish-id <id>", "\u4EFB\u52A1 ID").requiredOption("--name <taskName>", "\u65B0\u4EFB\u52A1\u540D").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6701
7029
|
await runTaskRename(opts);
|
|
6702
7030
|
});
|
|
6703
|
-
taskCmd.command("check-edit").description("\u68C0\u67E5\u4EFB\u52A1\u662F\u5426\u5141\u8BB8\u4FEE\u6539\uFF08\u5BF9\u5E94 checkAllowChange\uFF09").requiredOption("--publish-id <id>", "\u4EFB\u52A1 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6704
|
-
|
|
6705
|
-
|
|
7031
|
+
taskCmd.command("check-edit").description("\u68C0\u67E5\u4EFB\u52A1\u662F\u5426\u5141\u8BB8\u4FEE\u6539\uFF08\u5BF9\u5E94 checkAllowChange\uFF09").requiredOption("--publish-id <id>", "\u4EFB\u52A1 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
7032
|
+
async (opts) => {
|
|
7033
|
+
await runTaskCheckEdit(opts);
|
|
7034
|
+
}
|
|
7035
|
+
);
|
|
6706
7036
|
var taskItemCmd = taskCmd.command("item").description("\u4EFB\u52A1\u53D1\u5E03\u9879\u64CD\u4F5C\uFF1A\u5220\u9664\u3001\u91CD\u65B0\u53D1\u5E03\u3001\u7ACB\u5373\u53D1\u5E03");
|
|
6707
7037
|
taskItemCmd.command("delete").description("\u5220\u9664\u5355\u4E2A\u53D1\u5E03\u9879\uFF08deletePublishItem\uFF09").requiredOption("--item-id <id>", "\u53D1\u5E03\u9879 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(async (opts) => {
|
|
6708
7038
|
await runTaskItemDelete(opts);
|
|
@@ -6714,9 +7044,11 @@ taskItemCmd.command("run-now").description("\u7ACB\u5373\u53D1\u5E03\u5355\u4E2A
|
|
|
6714
7044
|
await runTaskItemRunNow(opts);
|
|
6715
7045
|
});
|
|
6716
7046
|
var taskCommentCmd = taskCmd.command("comment").description("\u4EFB\u52A1\u8BE6\u60C5\u4E2D\u7684\u8BC4\u8BBA\u67E5\u8BE2\u4E0E\u56DE\u590D");
|
|
6717
|
-
taskCommentCmd.command("list").description("\u6309\u89C6\u9891\u67E5\u8BE2\u8BC4\u8BBA\u5217\u8868").requiredOption("--media-type <nameOrId>", "\u5A92\u4F53\u7C7B\u578B\uFF08\u5982 Douyin / YouTube \u6216\u6570\u5B57 ID\uFF09").requiredOption("--video-id <id>", "\u89C6\u9891 ID").requiredOption("--media-customer-id <id>", "\u5A92\u4F53\u8D26\u53F7 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
6718
|
-
|
|
6719
|
-
|
|
7047
|
+
taskCommentCmd.command("list").description("\u6309\u89C6\u9891\u67E5\u8BE2\u8BC4\u8BBA\u5217\u8868").requiredOption("--media-type <nameOrId>", "\u5A92\u4F53\u7C7B\u578B\uFF08\u5982 Douyin / YouTube \u6216\u6570\u5B57 ID\uFF09").requiredOption("--video-id <id>", "\u89C6\u9891 ID").requiredOption("--media-customer-id <id>", "\u5A92\u4F53\u8D26\u53F7 ID").option("-t, --token <token>", "Token\uFF08\u53EF\u9009\uFF09").option("--json", "\u8F93\u51FA JSON", false).option("--unicode", "\u4F7F\u7528 Unicode \u7EBF\u6846\u8868\u683C\uFF08\u9ED8\u8BA4 ASCII\uFF09", false).option("--verbose", "\u663E\u793A\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F", false).action(
|
|
7048
|
+
async (opts) => {
|
|
7049
|
+
await runTaskCommentList(opts);
|
|
7050
|
+
}
|
|
7051
|
+
);
|
|
6720
7052
|
program.parse();
|
|
6721
7053
|
var activeCmd = process.argv[2];
|
|
6722
7054
|
if (activeCmd !== "update" && activeCmd !== "login") {
|