democut 1.0.191 → 1.0.193
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +118 -30
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -6916,7 +6916,7 @@ import { realpathSync } from "fs";
|
|
|
6916
6916
|
import { fileURLToPath } from "url";
|
|
6917
6917
|
|
|
6918
6918
|
// src/version.ts
|
|
6919
|
-
var VERSION = "1.0.
|
|
6919
|
+
var VERSION = "1.0.193";
|
|
6920
6920
|
|
|
6921
6921
|
// src/device-flow.ts
|
|
6922
6922
|
var DeviceFlowError = class extends Error {
|
|
@@ -12577,7 +12577,7 @@ var GENERATED_TOOLS = [
|
|
|
12577
12577
|
},
|
|
12578
12578
|
{
|
|
12579
12579
|
"name": "democut_estimate_video_analysis",
|
|
12580
|
-
"description": '\uC601\uC0C1 \
|
|
12580
|
+
"description": '\uC601\uC0C1 \uBD84\uC11D \uACAC\uC801(0\uC6D0). stage=measure(\uAE30\uBCF8)\uB294 source \uB85C \uC900 {"asset_id":\u2026} \uB610\uB294 \uACF5\uAC1C \uC720\uD29C\uBE0C {"url":\u2026}(60\uCD08 \uC774\uD558)\uB97C \uC7B0\uB2E4. stage=read \uB294 source \uC5C6\uC774 \uAC00\uC7A5 \uCD5C\uADFC \uCE21\uC815\uC744 AI \uAC00 \uD574\uC11D\uD55C\uB2E4. \uB2E4\uC74C \uD638\uCD9C: democut_make_video_analysis.',
|
|
12581
12581
|
"inputSchema": {
|
|
12582
12582
|
"type": "object",
|
|
12583
12583
|
"properties": {
|
|
@@ -12585,14 +12585,25 @@ var GENERATED_TOOLS = [
|
|
|
12585
12585
|
"type": "string",
|
|
12586
12586
|
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
12587
12587
|
},
|
|
12588
|
+
"stage": {
|
|
12589
|
+
"default": "measure",
|
|
12590
|
+
"enum": [
|
|
12591
|
+
"measure",
|
|
12592
|
+
"read"
|
|
12593
|
+
],
|
|
12594
|
+
"type": "string"
|
|
12595
|
+
},
|
|
12588
12596
|
"source": {
|
|
12589
|
-
"
|
|
12597
|
+
"default": null,
|
|
12598
|
+
"type": [
|
|
12599
|
+
"object",
|
|
12600
|
+
"null"
|
|
12601
|
+
],
|
|
12590
12602
|
"description": "\uBAA8\uB378 AnalysisSource \u2014 \uBAA8\uC591\uC740 \uC790\uC6D0 democut://guide \uC640 democut_get_options \uAC00 \uB9D0\uD55C\uB2E4(\uC5EC\uAE30\uC11C\uB294 \uC81C\uC57D\uC744 \uAC78\uC9C0 \uC54A\uB294\uB2E4)"
|
|
12591
12603
|
}
|
|
12592
12604
|
},
|
|
12593
12605
|
"required": [
|
|
12594
|
-
"slug"
|
|
12595
|
-
"source"
|
|
12606
|
+
"slug"
|
|
12596
12607
|
],
|
|
12597
12608
|
"additionalProperties": false
|
|
12598
12609
|
},
|
|
@@ -12644,7 +12655,7 @@ var GENERATED_TOOLS = [
|
|
|
12644
12655
|
},
|
|
12645
12656
|
{
|
|
12646
12657
|
"name": "democut_make_video_analysis",
|
|
12647
|
-
"description": "\
|
|
12658
|
+
"description": "measure \uB294 \uB300\uC0AC\xB7\uC7A5\uBA74 \uACBD\uACC4\xB7\uD504\uB808\uC784 \uACA9\uC790\xB7\uC74C\uB7C9\uC744 \uC7B0\uB2E4. read \uB294 \uD654\uBA74 \uBC30\uCE58\xB7\uAD6C\uAC04\xB7\uC7A5\uCE58\xB7\uB0B1\uB9D0\uC5D0 \uBD99\uC740 \uBCC0\uD654\uB97C \uC77D\uACE0 \uC0C9\uC744 \uC7B0\uB2E4. \uCEF7\uC740 \uB9CC\uB4E4\uC9C0 \uC54A\uB294\uB2E4. democut_estimate_video_analysis \uC758 total_krw \uB97C confirmed_cost_krw \uC5D0, rate_version \uC744 \uADF8\uB300\uB85C \uB123\uC5B4\uB77C. \uC5B4\uAE0B\uB098\uBA74 409 QUOTE_MISMATCH \uB2E4(\uACFC\uAE08 \uC5C6\uC74C). \uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs, democut_get_video_analysis.",
|
|
12648
12659
|
"inputSchema": {
|
|
12649
12660
|
"type": "object",
|
|
12650
12661
|
"properties": {
|
|
@@ -12652,8 +12663,20 @@ var GENERATED_TOOLS = [
|
|
|
12652
12663
|
"type": "string",
|
|
12653
12664
|
"description": "\uD504\uB85C\uC81D\uD2B8 \uC2AC\uB7EC\uADF8(democut_list_projects)"
|
|
12654
12665
|
},
|
|
12666
|
+
"stage": {
|
|
12667
|
+
"default": "measure",
|
|
12668
|
+
"enum": [
|
|
12669
|
+
"measure",
|
|
12670
|
+
"read"
|
|
12671
|
+
],
|
|
12672
|
+
"type": "string"
|
|
12673
|
+
},
|
|
12655
12674
|
"source": {
|
|
12656
|
-
"
|
|
12675
|
+
"default": null,
|
|
12676
|
+
"type": [
|
|
12677
|
+
"object",
|
|
12678
|
+
"null"
|
|
12679
|
+
],
|
|
12657
12680
|
"description": "\uBAA8\uB378 AnalysisSource \u2014 \uBAA8\uC591\uC740 \uC790\uC6D0 democut://guide \uC640 democut_get_options \uAC00 \uB9D0\uD55C\uB2E4(\uC5EC\uAE30\uC11C\uB294 \uC81C\uC57D\uC744 \uAC78\uC9C0 \uC54A\uB294\uB2E4)"
|
|
12658
12681
|
},
|
|
12659
12682
|
"confirmed_cost_krw": {
|
|
@@ -12667,7 +12690,6 @@ var GENERATED_TOOLS = [
|
|
|
12667
12690
|
},
|
|
12668
12691
|
"required": [
|
|
12669
12692
|
"slug",
|
|
12670
|
-
"source",
|
|
12671
12693
|
"confirmed_cost_krw",
|
|
12672
12694
|
"rate_version"
|
|
12673
12695
|
],
|
|
@@ -12697,7 +12719,7 @@ var GENERATED_TOOLS = [
|
|
|
12697
12719
|
},
|
|
12698
12720
|
{
|
|
12699
12721
|
"name": "democut_get_video_analysis",
|
|
12700
|
-
"description": "\uD504\uB85C\uC81D\uD2B8\uC758 \uAC00\uC7A5 \uCD5C\uADFC \uC601\uC0C1 \uBD84\uC11D(0\uC6D0). \uC5C6\uC73C\uBA74 state=none.",
|
|
12722
|
+
"description": "\uD504\uB85C\uC81D\uD2B8\uC758 \uAC00\uC7A5 \uCD5C\uADFC \uC601\uC0C1 \uBD84\uC11D\uACFC \uADF8 \uD574\uC11D(0\uC6D0). \uC5C6\uC73C\uBA74 state=none.",
|
|
12701
12723
|
"inputSchema": {
|
|
12702
12724
|
"type": "object",
|
|
12703
12725
|
"properties": {
|
|
@@ -12724,6 +12746,11 @@ var GENERATED_TOOLS = [
|
|
|
12724
12746
|
"type": "integer"
|
|
12725
12747
|
},
|
|
12726
12748
|
"measured": {},
|
|
12749
|
+
"reading_state": {
|
|
12750
|
+
"type": "string"
|
|
12751
|
+
},
|
|
12752
|
+
"reading_job_id": {},
|
|
12753
|
+
"reading": {},
|
|
12727
12754
|
"created_at": {},
|
|
12728
12755
|
"next_calls": {
|
|
12729
12756
|
"type": "array"
|
|
@@ -15180,7 +15207,7 @@ function creditBalance(deps = {}) {
|
|
|
15180
15207
|
);
|
|
15181
15208
|
} else {
|
|
15182
15209
|
lines.push(
|
|
15183
|
-
"\uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5 \uC804\uC5D0 \uACAC\uC801
|
|
15210
|
+
"\uB3C8\uC774 \uB098\uAC00\uB294 \uC791\uC5C5 \uC804\uC5D0 \uACAC\uC801\uC744 \uBC1B\uC544 \uAE08\uC561\uC744 \uC774 \uC794\uC561\uACFC \uACAC\uC8FC\uC138\uC694. \uC794\uC561\uACFC \uACAC\uC801\uC740 \uBAA8\uB450 \uC6D0(KRW)\uC785\uB2C8\uB2E4."
|
|
15184
15211
|
);
|
|
15185
15212
|
}
|
|
15186
15213
|
return { text: lines.join("\n"), structured: callableStructured(view) };
|
|
@@ -15372,7 +15399,7 @@ function listProjects(a = {}, deps = {}) {
|
|
|
15372
15399
|
const shown = matched.slice(0, limit);
|
|
15373
15400
|
if (shown.length === 0) {
|
|
15374
15401
|
return {
|
|
15375
|
-
text: query ? `'${query}' \uC640 \uC77C\uCE58\uD558\uB294 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. (\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uD504\uB85C\uC81D\uD2B8 ${total}\uAC1C) query \uB97C \uBE7C\uACE0 \uB2E4\uC2DC \uD638\uCD9C\uD574 \uC804\uCCB4\uB97C \uBCF4\uC138\uC694.` : "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uB294 \uC544\uC9C1 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \
|
|
15402
|
+
text: query ? `'${query}' \uC640 \uC77C\uCE58\uD558\uB294 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. (\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uD504\uB85C\uC81D\uD2B8 ${total}\uAC1C) query \uB97C \uBE7C\uACE0 \uB2E4\uC2DC \uD638\uCD9C\uD574 \uC804\uCCB4\uB97C \uBCF4\uC138\uC694.` : "\uC774 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0\uB294 \uC544\uC9C1 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. \uCEF7\uACFC \uC644\uC131\uBCF8\uC740 \uD504\uB85C\uC81D\uD2B8 \uC548\uC5D0\uC11C \uB9CC\uB4E4\uBBC0\uB85C, \uC5B4\uB5A4 \uC774\uB984\uC73C\uB85C \uB9CC\uB4E4\uC9C0 \uC0AC\uC6A9\uC790\uC5D0\uAC8C \uBB3C\uC740 \uB4A4 democut_create_project \uB85C \uD558\uB098 \uB9CC\uB4DC\uC138\uC694.",
|
|
15376
15403
|
// 빈 목록도 성공이다 — 광고한 outputSchema(ProjectListResponse)를 지켜 채운다.
|
|
15377
15404
|
structured: callableStructured({ projects: [] })
|
|
15378
15405
|
};
|
|
@@ -15407,7 +15434,7 @@ function getProject(a = {}, deps = {}) {
|
|
|
15407
15434
|
`\uCEF7 ${view.cut_count ?? 0}\uAC1C \xB7 rev ${view.rev ?? 0} \xB7 \uC218\uC815 ${(view.updated_at ?? "").slice(0, 19)}`
|
|
15408
15435
|
];
|
|
15409
15436
|
if (view.folder_id) lines.push(`\uD3F4\uB354: ${view.folder_id}`);
|
|
15410
|
-
lines.push("", "\uC21C\uC11C\xB7\uC0C1\uD0DC\uB294 get_storyboard \uB85C
|
|
15437
|
+
lines.push("", "\uC21C\uC11C\xB7\uC0C1\uD0DC\uB294 get_storyboard \uB85C. If-Match \uAC00 \uD544\uC694\uD55C \uD3B8\uC9D1 \uB3C4\uAD6C\uC5D0\uB294 \uC704 rev \uB97C \uB123\uC73C\uC138\uC694.", "\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts \uB85C.");
|
|
15411
15438
|
return {
|
|
15412
15439
|
text: callableToolNames(lines.join("\n")),
|
|
15413
15440
|
structured: callableStructured(view)
|
|
@@ -16093,7 +16120,7 @@ function listCuts(a = {}, deps = {}) {
|
|
|
16093
16120
|
const cuts = out4.cuts ?? [];
|
|
16094
16121
|
if (cuts.length === 0) {
|
|
16095
16122
|
return {
|
|
16096
|
-
text: callableToolNames("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uB294 \uC544\uC9C1 \uCEF7\uC774 \uC5C6\uC2B5\uB2C8\uB2E4
|
|
16123
|
+
text: callableToolNames("\uC774 \uD504\uB85C\uC81D\uD2B8\uC5D0\uB294 \uC544\uC9C1 \uCEF7\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \u2192 make_cuts.\n\uC644\uC131 \uC601\uC0C1\uC744 \uC62C\uB9AC\uB824\uBA74 import_cut."),
|
|
16097
16124
|
structured: callableStructured(out4)
|
|
16098
16125
|
};
|
|
16099
16126
|
}
|
|
@@ -16573,7 +16600,9 @@ function duplicateCut(a = {}, deps = {}) {
|
|
|
16573
16600
|
return {
|
|
16574
16601
|
text: [
|
|
16575
16602
|
`\uBCF5\uC81C\uB428 \u2014 ${cutLine(cut)}`,
|
|
16576
|
-
|
|
16603
|
+
// 가져온 영상 컷은 만들지 않는다 — 영상을 다시 붙인다(원격 `DUPLICATE_IMPORTED_NOTE` 와 같은 문장).
|
|
16604
|
+
// 사실과 만들기 안내는 다른 줄이다(원격 `DUPLICATE_NOTE`·`DUPLICATE_MAKE_NOTE` 와 같은 문장).
|
|
16605
|
+
...(cut.mode === "imported_video" ? ["\uC601\uC0C1(\uBC84\uC804)\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uBCF5\uC81C\uD55C \uCEF7\uC5D0 \uC601\uC0C1\uC744 \uBD99\uC774\uB824\uBA74 import_cut \uC744 \uBD80\uB974\uC138\uC694."] : ["\uC0B0\uCD9C\uBB3C(\uBC84\uC804)\uC740 \uBCF5\uC81C\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 \u2014 \uACC4\uD68D\uB9CC \uBCF5\uC0AC\uD588\uC2B5\uB2C8\uB2E4.", "\uB9CC\uB4E4\uB824\uBA74 estimate_cuts \uB85C \uACAC\uC801\uC744 \uB0B4\uC138\uC694."]).map((line) => callableToolNames(line))
|
|
16577
16606
|
].join("\n"),
|
|
16578
16607
|
structured: callableStructured(cut)
|
|
16579
16608
|
};
|
|
@@ -16595,7 +16624,8 @@ function deleteCut(a = {}, deps = {}) {
|
|
|
16595
16624
|
return {
|
|
16596
16625
|
text: callableToolNames([
|
|
16597
16626
|
`\uCEF7\uC744 \uC9C0\uC6E0\uC2B5\uB2C8\uB2E4 \u2014 ${cutId}`,
|
|
16598
|
-
"\uCC38\uC870 \uC5C6\uB294 \uC790\uC0B0\uC740 \uD568\uAED8 \uC815\uB9AC\uB429\uB2C8\uB2E4(\uADF8\uB9CC\uD07C \uC0AC\uC6A9\uB7C9\uC774 \uC90D\uB2C8\uB2E4)
|
|
16627
|
+
"\uCC38\uC870 \uC5C6\uB294 \uC790\uC0B0\uC740 \uD568\uAED8 \uC815\uB9AC\uB429\uB2C8\uB2E4(\uADF8\uB9CC\uD07C \uC0AC\uC6A9\uB7C9\uC774 \uC90D\uB2C8\uB2E4).",
|
|
16628
|
+
"24\uC2DC\uAC04 \uC548\uC5D0\uB294 restore_asset \uC73C\uB85C \uB418\uC0B4\uB9B4 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
|
|
16599
16629
|
].join("\n")),
|
|
16600
16630
|
structured: callableStructured(res)
|
|
16601
16631
|
};
|
|
@@ -17381,15 +17411,16 @@ function estimateVideoAnalysis(a = {}, deps = {}) {
|
|
|
17381
17411
|
const out4 = await apiRequest(
|
|
17382
17412
|
base,
|
|
17383
17413
|
analysisPath(slug, "/estimate"),
|
|
17384
|
-
{ method: "POST", body: { source: a.source } },
|
|
17414
|
+
{ method: "POST", body: { stage: a.stage, source: a.source } },
|
|
17385
17415
|
deps
|
|
17386
17416
|
);
|
|
17417
|
+
const reading = a.stage === "read";
|
|
17387
17418
|
const rows = (out4.items ?? []).flatMap((item) => item.rows ?? []).map((r) => `${r.display_name || r.key} ${krw(r.krw)}`).join(", ") || "\uD589 \uC5C6\uC74C";
|
|
17388
17419
|
const lines = [
|
|
17389
|
-
`\uC601\uC0C1 \uCE21\uC815 \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uC2B5\uB2C8\uB2E4`,
|
|
17420
|
+
`\uC601\uC0C1 ${reading ? "\uD574\uC11D" : "\uCE21\uC815"} \uACAC\uC801 (\uC694\uC728 v${out4.rate_version}) \u2014 \uBD80\uC791\uC6A9\uB3C4 \uACFC\uAE08\uB3C4 \uC5C6\uC2B5\uB2C8\uB2E4`,
|
|
17390
17421
|
` ${rows}`,
|
|
17391
17422
|
`\uCD1D\uC561(\uC0C1\uD55C) ${krw(out4.total_krw)} \xB7 \uC794\uC561 ${krw(out4.balance_krw)} \u2192 \uB0A8\uC744 \uC794\uC561 ${krw(out4.balance_after_krw)}`,
|
|
17392
|
-
"\uC18C\uB9AC \uD2B8\uB799\uC774 \uC5C6\uB294 \uC601\uC0C1\uC774\uBA74 \uC804\uC0AC \uD589\uC740 \uD658\uBD88\uB429\uB2C8\uB2E4.",
|
|
17423
|
+
reading ? "\uD574\uC11D\uC740 \uC774 \uAE08\uC561\uAE4C\uC9C0\uB9CC \uC4F0\uACE0, \uC2E4\uC81C\uB85C \uC4F4 \uB9CC\uD07C\uB9CC \uB0A8\uAE30\uACE0 \uB3CC\uB824\uC90D\uB2C8\uB2E4." : "\uC18C\uB9AC \uD2B8\uB799\uC774 \uC5C6\uB294 \uC601\uC0C1\uC774\uBA74 \uC804\uC0AC \uD589\uC740 \uD658\uBD88\uB429\uB2C8\uB2E4.",
|
|
17393
17424
|
out4.can_afford ? "\uCDA9\uBD84\uD569\uB2C8\uB2E4." : "\u26A0\uFE0F \uC794\uC561\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4 \u2014 \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uAD00\uB9AC\uC790\uC5D0\uAC8C \uCDA9\uC804\uC744 \uC694\uCCAD\uD558\uC138\uC694.",
|
|
17394
17425
|
"\uC774 total_krw \uB97C confirmed_cost_krw \uC5D0, rate_version \uC744 **\uADF8\uB300\uB85C** democut_make_video_analysis \uC5D0 \uB123\uC73C\uC138\uC694."
|
|
17395
17426
|
];
|
|
@@ -17405,10 +17436,14 @@ function makeVideoAnalysis(a = {}, deps = {}) {
|
|
|
17405
17436
|
const out4 = await apiRequest(
|
|
17406
17437
|
base,
|
|
17407
17438
|
analysisPath(slug),
|
|
17408
|
-
{
|
|
17439
|
+
{
|
|
17440
|
+
method: "POST",
|
|
17441
|
+
body: { stage: a.stage, source: a.source, confirmed_cost_krw: a.confirmed_cost_krw, rate_version: a.rate_version }
|
|
17442
|
+
},
|
|
17409
17443
|
deps
|
|
17410
17444
|
);
|
|
17411
|
-
const
|
|
17445
|
+
const doing = a.stage === "read" ? "\uC601\uC0C1\uC744 \uD574\uC11D\uD558\uB294 \uC911\uC785\uB2C8\uB2E4" : "\uC601\uC0C1\uC744 \uC7AC\uB294 \uC911\uC785\uB2C8\uB2E4";
|
|
17446
|
+
const text = `${doing} \u2014 ${out4.job_id} (\uCD5C\uB300 ${krw(out4.quote?.total_krw ?? 0)}). \uCEF7\uC740 \uB9CC\uB4E4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
|
|
17412
17447
|
\uB2E4\uC74C \uD638\uCD9C: democut_wait_jobs, democut_get_video_analysis`;
|
|
17413
17448
|
return { text, structured: callableStructured(out4) };
|
|
17414
17449
|
});
|
|
@@ -17432,7 +17467,59 @@ function formatAnalysis(view) {
|
|
|
17432
17467
|
} else {
|
|
17433
17468
|
lines.push("\uC18C\uB9AC \uD2B8\uB799\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uC804\uC0AC \uAE08\uC561\uC740 \uD658\uBD88\uB429\uB2C8\uB2E4.");
|
|
17434
17469
|
}
|
|
17435
|
-
return lines.join("\n");
|
|
17470
|
+
return [...lines, ...formatReading(view)].join("\n");
|
|
17471
|
+
}
|
|
17472
|
+
var REGION_NAMES = { presenter: "\uC9C4\uD589\uC790", graphic: "\uADF8\uB798\uD53D", footage: "\uC2E4\uC0AC \uC601\uC0C1", caption: "\uC790\uB9C9" };
|
|
17473
|
+
var TONE_NAMES = { light: "\uBC1D\uC740 \uBC14\uD0D5", dark: "\uC5B4\uB450\uC6B4 \uBC14\uD0D5" };
|
|
17474
|
+
var WEIGHT_NAMES = { regular: "\uBCF4\uD1B5", bold: "\uAD75\uAC8C", heavy: "\uC544\uC8FC \uAD75\uAC8C" };
|
|
17475
|
+
var RADIUS_NAMES = { none: "\uAC01\uC9C4", small: "\uC870\uAE08 \uB465\uADFC", large: "\uB9CE\uC774 \uB465\uADFC" };
|
|
17476
|
+
var ratio = (v) => (Math.floor(v * 100 + 0.5) / 100).toFixed(2);
|
|
17477
|
+
function formatReading(view) {
|
|
17478
|
+
const state = view.reading_state ?? "none";
|
|
17479
|
+
const head = {
|
|
17480
|
+
none: "\uD574\uC11D: \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4. democut_estimate_video_analysis(stage=read)\uB85C \uD574\uC11D \uACAC\uC801\uC744 \uBC1B\uC73C\uC138\uC694.",
|
|
17481
|
+
reading: `\uD574\uC11D \uC911\uC785\uB2C8\uB2E4: ${view.reading_job_id}. democut_wait_jobs \uB85C \uAE30\uB2E4\uB9AC\uC138\uC694.`,
|
|
17482
|
+
failed: "\uB9C8\uC9C0\uB9C9 \uD574\uC11D\uC774 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uCCAD\uAD6C\uC561\uC740 \uD658\uBD88\uB429\uB2C8\uB2E4.",
|
|
17483
|
+
read: "\uD574\uC11D:"
|
|
17484
|
+
}[state];
|
|
17485
|
+
const r = view.reading;
|
|
17486
|
+
if (!r) return ["", head];
|
|
17487
|
+
const words = view.measured?.words ?? [];
|
|
17488
|
+
const look = r.look;
|
|
17489
|
+
const card = look.card ? `\uCE74\uB4DC \uBAA8\uC11C\uB9AC ${RADIUS_NAMES[look.card.radius]} \xB7 \uADF8\uB9BC\uC790 ${look.card.shadow ? "\uC788\uC74C" : "\uC5C6\uC74C"} \xB7 \uD14C\uB450\uB9AC ${look.card.border ? "\uC788\uC74C" : "\uC5C6\uC74C"}` : "\uCE74\uB4DC \uC5C6\uC74C";
|
|
17490
|
+
const evidence = look.evidence ?? [];
|
|
17491
|
+
const sizes = look.text_sizes ?? [];
|
|
17492
|
+
const lines = [
|
|
17493
|
+
"",
|
|
17494
|
+
state === "failed" ? `${head} \uC544\uB798\uB294 \uADF8 \uC804 \uD574\uC11D\uC785\uB2C8\uB2E4.` : head,
|
|
17495
|
+
`\uC694\uC57D: ${r.summary || "\uC5C6\uC74C"}`,
|
|
17496
|
+
`\uB8E9: \uBC14\uD0D5 ${look.background || "\uC7B4 \uC218 \uC5C6\uC74C"}(${TONE_NAMES[look.tone ?? ""] ?? "\uBC1D\uAE30 \uBAA8\uB984"}) \xB7 \uAC15\uC870\uC0C9 ${look.accent || "\uC5C6\uC74C"} \xB7 \uAE00\uC790 ${WEIGHT_NAMES[look.text_weight ?? ""] ?? "\uAD75\uAE30 \uBAA8\uB984"}, \uD06C\uAE30 \uB2E8\uACC4 ${sizes.length ? `[${sizes.join(", ")}]` : "\uBAA8\uB984"}% \xB7 ${card}` + (evidence.length ? ` \xB7 \uADFC\uAC70 ${evidence.join(", ")}` : ""),
|
|
17497
|
+
`\uBC30\uCE58 ${r.layouts.length}\uAC1C(x \xB7 y \xB7 w \xB7 h \uB294 \uD654\uBA74 \uBE44\uC728):`
|
|
17498
|
+
];
|
|
17499
|
+
for (const layout of r.layouts) {
|
|
17500
|
+
const regions = layout.regions.map((g) => `${REGION_NAMES[g.role]}(${g.role}) x${ratio(g.x)} y${ratio(g.y)} w${ratio(g.w)} h${ratio(g.h)}` + (g.color ? ` ${g.color}` : "")).join(" / ");
|
|
17501
|
+
lines.push(` ${layout.id}: ${regions}` + (layout.outside_color ? ` \xB7 \uC601\uC5ED \uBC16 ${layout.outside_color}` : ""));
|
|
17502
|
+
}
|
|
17503
|
+
lines.push(`\uAD6C\uAC04 ${r.segments.length}\uAC1C:`);
|
|
17504
|
+
for (const s of r.segments) {
|
|
17505
|
+
lines.push(` ${s.from_ms}-${s.to_ms} ${s.role} \xB7 \uBC30\uCE58 ${s.layout} \xB7 \uC9C4\uD589\uC790 ${s.presenter ? "\uBCF4\uC784" : "\uC548 \uBCF4\uC784"} \xB7 ${s.meaning}`);
|
|
17506
|
+
}
|
|
17507
|
+
const systems = r.systems ?? [];
|
|
17508
|
+
lines.push(systems.length ? `\uC7A5\uCE58 ${systems.length}\uAC1C:` : "\uC7A5\uCE58: \uC5C6\uC74C");
|
|
17509
|
+
for (const y of systems) {
|
|
17510
|
+
const ev = y.evidence ?? [];
|
|
17511
|
+
lines.push(` ${y.id}(${y.kind}, ${REGION_NAMES[y.region]} \uC601\uC5ED): ${y.appearance} \xB7 \uB4F1\uC7A5 ${y.enter} \xB7 \uC720\uC9C0 ${y.hold} \xB7 \uD1F4\uC7A5 ${y.exit}` + (ev.length ? ` \xB7 \uADFC\uAC70 ${ev.join(", ")}` : ""));
|
|
17512
|
+
}
|
|
17513
|
+
const events = r.events ?? [];
|
|
17514
|
+
lines.push(events.length ? `\uC0AC\uAC74 ${events.length}\uAC1C(\uB0B1\uB9D0 \uBC88\uD638 \u2192 \uC7A5\uCE58 \xB7 \uBCC0\uD654):` : "\uC0AC\uAC74: \uC5C6\uC74C");
|
|
17515
|
+
for (const e of events) {
|
|
17516
|
+
lines.push(` #${e.anchor} ${words[e.anchor]?.text ?? "?"}@${e.at_ms} \u2192 ${e.system} ${e.change}`);
|
|
17517
|
+
}
|
|
17518
|
+
const d = r.dropped;
|
|
17519
|
+
if (d && (d.layouts || d.segments || d.systems || d.events)) {
|
|
17520
|
+
lines.push(`\uCE21\uC815\uACFC \uB9DE\uC9C0 \uC54A\uC544 \uBC84\uB9B0 \uAC83: \uBC30\uCE58 ${d.layouts ?? 0} \xB7 \uAD6C\uAC04 ${d.segments ?? 0} \xB7 \uC7A5\uCE58 ${d.systems ?? 0} \xB7 \uC0AC\uAC74 ${d.events ?? 0}`);
|
|
17521
|
+
}
|
|
17522
|
+
return lines;
|
|
17436
17523
|
}
|
|
17437
17524
|
function getVideoAnalysis(a = {}, deps = {}) {
|
|
17438
17525
|
return guarded(READ_ONLY, async () => {
|
|
@@ -17702,19 +17789,20 @@ function getExport(a = {}, deps = {}) {
|
|
|
17702
17789
|
lines.push("\uC378\uB124\uC77C\uC740 \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 democut_make_thumbnails(\uC2A4\uD0C0\uC77C \uACE8\uB77C \uCCAD\uAD6C, \uBE44\uC6B0\uBA74 3\uC7A5) \uB610\uB294 democut_upload_asset \uB4A4 democut_select_thumbnail.");
|
|
17703
17790
|
}
|
|
17704
17791
|
if (out4.youtube_meta) {
|
|
17705
|
-
lines.push(
|
|
17792
|
+
lines.push("\uC720\uD29C\uBE0C \uC81C\uBAA9\xB7\uC124\uBA85\xB7\uD0DC\uADF8 \u2014 \uACE0\uCE58\uB824\uBA74 \uC774 \uAC12\uC744 \uACE0\uCCD0 democut_set_youtube_meta \uC5D0 \uB123\uC73C\uC138\uC694:");
|
|
17793
|
+
lines.push(JSON.stringify(out4.youtube_meta));
|
|
17706
17794
|
} else {
|
|
17707
|
-
lines.push("\uC720\uD29C\uBE0C \
|
|
17795
|
+
lines.push("\uC720\uD29C\uBE0C \uC81C\uBAA9\xB7\uC124\uBA85\uC740 \uC544\uC9C1 \uC5C6\uC2B5\uB2C8\uB2E4 \u2014 democut_generate_youtube_meta \uB85C \uCD08\uC548\uC744 \uBC1B\uAC70\uB098(\uC18C\uC561) democut_set_youtube_meta \uB85C \uC9C1\uC811 \uB123\uC73C\uC138\uC694(0\uC6D0).");
|
|
17708
17796
|
}
|
|
17709
17797
|
if (out4.youtube) {
|
|
17710
17798
|
lines.push(`\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB77C\uAC14\uC2B5\uB2C8\uB2E4(${out4.youtube.privacy}): ${out4.youtube.url} \u2014 \uB2E4\uC2DC \uC62C\uB9AC\uC9C0 \uB9C8\uC138\uC694(\uB450 \uD3B8\uC774 \uB429\uB2C8\uB2E4).`);
|
|
17711
17799
|
} else if (out4.youtube_meta) {
|
|
17712
|
-
lines.push("\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB9AC\uB824\uBA74 democut_publish_youtube(0\uC6D0, \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4 \uACC4\uC815 \uD544\uC694).");
|
|
17800
|
+
lines.push("\uC720\uD29C\uBE0C\uC5D0 \uC62C\uB9AC\uB824\uBA74 democut_publish_youtube \uB97C \uBD80\uB974\uC138\uC694(0\uC6D0, \uC6CC\uD06C\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC5F0\uACB0\uB41C \uC720\uD29C\uBE0C \uACC4\uC815\uC774 \uD544\uC694\uD569\uB2C8\uB2E4).");
|
|
17713
17801
|
}
|
|
17714
17802
|
if (out4.instagram) {
|
|
17715
17803
|
lines.push(`Instagram \uC5D0 \uC62C\uB77C\uAC14\uC2B5\uB2C8\uB2E4(@${out4.instagram.username}): ${out4.instagram.url} \u2014 \uB2E4\uC2DC \uC62C\uB9AC\uC9C0 \uB9C8\uC138\uC694(\uB450 \uD3B8\uC774 \uB429\uB2C8\uB2E4).`);
|
|
17716
17804
|
} else if (out4.youtube_meta) {
|
|
17717
|
-
lines.push("Instagram \uB9B4\uC2A4\uB85C \uC62C\uB9AC\uB824\uBA74 democut_publish_instagram(0\uC6D0, \uCE90\uB9AD\uD130\uC5D0 \uC5F0\uACB0\uB41C \uACC4\uC815 \uD544\uC694
|
|
17805
|
+
lines.push("Instagram \uB9B4\uC2A4\uB85C \uC62C\uB9AC\uB824\uBA74 democut_publish_instagram \uC744 \uBD80\uB974\uC138\uC694(0\uC6D0, \uCE90\uB9AD\uD130\uC5D0 \uC5F0\uACB0\uB41C \uACC4\uC815\uC774 \uD544\uC694\uD558\uACE0 3\uCD08~15\uBD84 \uC601\uC0C1\uB9CC \uB429\uB2C8\uB2E4).");
|
|
17718
17806
|
}
|
|
17719
17807
|
lines.push("\uC8FC\uC18C\uB294 1\uC2DC\uAC04 \uB3D9\uC548\uB9CC \uC720\uD6A8\uD569\uB2C8\uB2E4.");
|
|
17720
17808
|
} else if (["queued", "running"].includes(out4.state)) {
|
|
@@ -18604,12 +18692,12 @@ function cleanRegex(source) {
|
|
|
18604
18692
|
return source.slice(start, end);
|
|
18605
18693
|
}
|
|
18606
18694
|
function floatSafeRemainder(val, step) {
|
|
18607
|
-
const
|
|
18608
|
-
const roundedRatio = Math.round(
|
|
18609
|
-
const tolerance = Number.EPSILON * Math.max(Math.abs(
|
|
18610
|
-
if (Math.abs(
|
|
18695
|
+
const ratio2 = val / step;
|
|
18696
|
+
const roundedRatio = Math.round(ratio2);
|
|
18697
|
+
const tolerance = Number.EPSILON * Math.max(Math.abs(ratio2), 1);
|
|
18698
|
+
if (Math.abs(ratio2 - roundedRatio) < tolerance)
|
|
18611
18699
|
return 0;
|
|
18612
|
-
return
|
|
18700
|
+
return ratio2 - roundedRatio;
|
|
18613
18701
|
}
|
|
18614
18702
|
var EVALUATING = /* @__PURE__ */ Symbol("evaluating");
|
|
18615
18703
|
function defineLazy(object3, key, getter) {
|