@synthetic-ai/premiere-mcp 2.1.0 → 2.3.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +135 -123
- package/LICENSE +21 -21
- package/README.md +242 -242
- package/cep-plugin/.debug +8 -8
- package/cep-plugin/CSInterface.js +92 -92
- package/cep-plugin/host.jsx +7 -7
- package/cep-plugin/index.html +472 -472
- package/cep-plugin/main.js +6 -0
- package/cep-plugin/premiere.jsx +24947 -24947
- package/dist/bridge/script-builder.js +378 -378
- package/dist/index.js +103 -4
- package/dist/license.js +38 -0
- package/dist/server.js +60 -60
- package/dist/tools/advanced.js +357 -357
- package/dist/tools/audio-advanced.js +1049 -1049
- package/dist/tools/audio.js +42 -42
- package/dist/tools/captions.js +27 -27
- package/dist/tools/clipboard.js +214 -214
- package/dist/tools/color-advanced.js +253 -253
- package/dist/tools/discovery.js +291 -291
- package/dist/tools/effects.js +285 -285
- package/dist/tools/export-presets.js +206 -206
- package/dist/tools/export.js +255 -255
- package/dist/tools/health.js +10 -10
- package/dist/tools/inspection.js +885 -885
- package/dist/tools/keyframes.js +369 -369
- package/dist/tools/markers.js +89 -89
- package/dist/tools/media.js +178 -178
- package/dist/tools/metadata.js +94 -94
- package/dist/tools/multicam.js +50 -50
- package/dist/tools/playback.js +15 -15
- package/dist/tools/playhead.js +95 -95
- package/dist/tools/project-manager.js +21 -21
- package/dist/tools/project.js +149 -149
- package/dist/tools/scripting.js +319 -319
- package/dist/tools/selection.js +202 -202
- package/dist/tools/sequence-advanced.js +379 -379
- package/dist/tools/sequence-settings.js +564 -564
- package/dist/tools/sequence.js +167 -167
- package/dist/tools/source-monitor.js +68 -68
- package/dist/tools/text.js +58 -58
- package/dist/tools/timeline.js +312 -312
- package/dist/tools/track-management.js +446 -446
- package/dist/tools/track-targeting.js +635 -635
- package/dist/tools/tracks.js +87 -87
- package/dist/tools/transitions-motion.js +174 -174
- package/dist/tools/transitions.js +111 -111
- package/dist/tools/utility.js +606 -606
- package/dist/tools/workspace.js +29 -29
- package/package.json +66 -66
- package/scripts/build-chat-dmg.sh +210 -210
- package/scripts/build-chat-zip.sh +291 -291
- package/scripts/install-cep-windows.ps1 +99 -99
- package/scripts/install-cep.sh +66 -66
- package/scripts/install-chat-plugin.bat +67 -67
- package/scripts/install-chat-plugin.sh +85 -85
- package/scripts/install-windows.bat +95 -95
- package/scripts/package.mjs +254 -254
package/dist/tools/selection.js
CHANGED
|
@@ -29,46 +29,46 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
29
29
|
},
|
|
30
30
|
handler: async (args) => {
|
|
31
31
|
const trackType = args.track_type || "both";
|
|
32
|
-
const script = buildToolScript(`
|
|
33
|
-
var seq = app.project.activeSequence;
|
|
34
|
-
if (!seq) return __error("No active sequence");
|
|
35
|
-
|
|
36
|
-
var query = "${escapeForExtendScript(args.name)}".toLowerCase();
|
|
37
|
-
var addToSel = ${args.add_to_selection ? "true" : "false"};
|
|
38
|
-
var count = 0;
|
|
39
|
-
|
|
40
|
-
function selectInTracks(tracks, type) {
|
|
41
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
42
|
-
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
43
|
-
var track = tracks[t];
|
|
44
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
45
|
-
var clip = track.clips[c];
|
|
46
|
-
if (clip.name.toLowerCase().indexOf(query) !== -1) {
|
|
47
|
-
clip.setSelected(true, true);
|
|
48
|
-
count++;
|
|
49
|
-
} else if (!addToSel) {
|
|
50
|
-
clip.setSelected(false, true);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (!addToSel) {
|
|
57
|
-
// Deselect all first
|
|
58
|
-
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
59
|
-
var track = seq.videoTracks[t];
|
|
60
|
-
for (var c = 0; c < track.clips.numItems; c++) track.clips[c].setSelected(false, true);
|
|
61
|
-
}
|
|
62
|
-
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
63
|
-
var track = seq.audioTracks[t];
|
|
64
|
-
for (var c = 0; c < track.clips.numItems; c++) track.clips[c].setSelected(false, true);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if ("${trackType}" !== "audio") selectInTracks(seq.videoTracks, "video");
|
|
69
|
-
if ("${trackType}" !== "video") selectInTracks(seq.audioTracks, "audio");
|
|
70
|
-
|
|
71
|
-
return __result({ selected: count, query: "${escapeForExtendScript(args.name)}" });
|
|
32
|
+
const script = buildToolScript(`
|
|
33
|
+
var seq = app.project.activeSequence;
|
|
34
|
+
if (!seq) return __error("No active sequence");
|
|
35
|
+
|
|
36
|
+
var query = "${escapeForExtendScript(args.name)}".toLowerCase();
|
|
37
|
+
var addToSel = ${args.add_to_selection ? "true" : "false"};
|
|
38
|
+
var count = 0;
|
|
39
|
+
|
|
40
|
+
function selectInTracks(tracks, type) {
|
|
41
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
42
|
+
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
43
|
+
var track = tracks[t];
|
|
44
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
45
|
+
var clip = track.clips[c];
|
|
46
|
+
if (clip.name.toLowerCase().indexOf(query) !== -1) {
|
|
47
|
+
clip.setSelected(true, true);
|
|
48
|
+
count++;
|
|
49
|
+
} else if (!addToSel) {
|
|
50
|
+
clip.setSelected(false, true);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (!addToSel) {
|
|
57
|
+
// Deselect all first
|
|
58
|
+
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
59
|
+
var track = seq.videoTracks[t];
|
|
60
|
+
for (var c = 0; c < track.clips.numItems; c++) track.clips[c].setSelected(false, true);
|
|
61
|
+
}
|
|
62
|
+
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
63
|
+
var track = seq.audioTracks[t];
|
|
64
|
+
for (var c = 0; c < track.clips.numItems; c++) track.clips[c].setSelected(false, true);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if ("${trackType}" !== "audio") selectInTracks(seq.videoTracks, "video");
|
|
69
|
+
if ("${trackType}" !== "video") selectInTracks(seq.audioTracks, "audio");
|
|
70
|
+
|
|
71
|
+
return __result({ selected: count, query: "${escapeForExtendScript(args.name)}" });
|
|
72
72
|
`);
|
|
73
73
|
return sendCommand(script, bridgeOptions);
|
|
74
74
|
},
|
|
@@ -91,26 +91,26 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
91
91
|
},
|
|
92
92
|
handler: async (args) => {
|
|
93
93
|
const trackType = args.track_type || "both";
|
|
94
|
-
const script = buildToolScript(`
|
|
95
|
-
var seq = app.project.activeSequence;
|
|
96
|
-
if (!seq) return __error("No active sequence");
|
|
97
|
-
|
|
98
|
-
var count = 0;
|
|
99
|
-
function selectAll(tracks) {
|
|
100
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
101
|
-
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
102
|
-
var track = tracks[t];
|
|
103
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
104
|
-
track.clips[c].setSelected(true, true);
|
|
105
|
-
count++;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if ("${trackType}" !== "audio") selectAll(seq.videoTracks);
|
|
111
|
-
if ("${trackType}" !== "video") selectAll(seq.audioTracks);
|
|
112
|
-
|
|
113
|
-
return __result({ selected: count });
|
|
94
|
+
const script = buildToolScript(`
|
|
95
|
+
var seq = app.project.activeSequence;
|
|
96
|
+
if (!seq) return __error("No active sequence");
|
|
97
|
+
|
|
98
|
+
var count = 0;
|
|
99
|
+
function selectAll(tracks) {
|
|
100
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
101
|
+
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
102
|
+
var track = tracks[t];
|
|
103
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
104
|
+
track.clips[c].setSelected(true, true);
|
|
105
|
+
count++;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if ("${trackType}" !== "audio") selectAll(seq.videoTracks);
|
|
111
|
+
if ("${trackType}" !== "video") selectAll(seq.audioTracks);
|
|
112
|
+
|
|
113
|
+
return __result({ selected: count });
|
|
114
114
|
`);
|
|
115
115
|
return sendCommand(script, bridgeOptions);
|
|
116
116
|
},
|
|
@@ -119,26 +119,26 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
119
119
|
description: "Deselect all clips in the active sequence.",
|
|
120
120
|
parameters: {},
|
|
121
121
|
handler: async () => {
|
|
122
|
-
const script = buildToolScript(`
|
|
123
|
-
var seq = app.project.activeSequence;
|
|
124
|
-
if (!seq) return __error("No active sequence");
|
|
125
|
-
|
|
126
|
-
var count = 0;
|
|
127
|
-
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
128
|
-
var track = seq.videoTracks[t];
|
|
129
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
130
|
-
track.clips[c].setSelected(false, true);
|
|
131
|
-
count++;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
135
|
-
var track = seq.audioTracks[t];
|
|
136
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
137
|
-
track.clips[c].setSelected(false, true);
|
|
138
|
-
count++;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return __result({ deselected: count });
|
|
122
|
+
const script = buildToolScript(`
|
|
123
|
+
var seq = app.project.activeSequence;
|
|
124
|
+
if (!seq) return __error("No active sequence");
|
|
125
|
+
|
|
126
|
+
var count = 0;
|
|
127
|
+
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
128
|
+
var track = seq.videoTracks[t];
|
|
129
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
130
|
+
track.clips[c].setSelected(false, true);
|
|
131
|
+
count++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
135
|
+
var track = seq.audioTracks[t];
|
|
136
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
137
|
+
track.clips[c].setSelected(false, true);
|
|
138
|
+
count++;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return __result({ deselected: count });
|
|
142
142
|
`);
|
|
143
143
|
return sendCommand(script, bridgeOptions);
|
|
144
144
|
},
|
|
@@ -170,42 +170,42 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
170
170
|
},
|
|
171
171
|
handler: async (args) => {
|
|
172
172
|
const trackType = args.track_type || "both";
|
|
173
|
-
const script = buildToolScript(`
|
|
174
|
-
var seq = app.project.activeSequence;
|
|
175
|
-
if (!seq) return __error("No active sequence");
|
|
176
|
-
|
|
177
|
-
var startTicks = __secondsToTicks(${args.start_seconds});
|
|
178
|
-
var endTicks = __secondsToTicks(${args.end_seconds});
|
|
179
|
-
var count = 0;
|
|
180
|
-
|
|
181
|
-
// Deselect all first
|
|
182
|
-
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
183
|
-
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
184
|
-
}
|
|
185
|
-
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
186
|
-
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function selectInRange(tracks) {
|
|
190
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
191
|
-
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
192
|
-
var track = tracks[t];
|
|
193
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
194
|
-
var clip = track.clips[c];
|
|
195
|
-
var cs = parseFloat(clip.start.ticks);
|
|
196
|
-
var ce = parseFloat(clip.end.ticks);
|
|
197
|
-
if (cs < endTicks && ce > startTicks) {
|
|
198
|
-
clip.setSelected(true, true);
|
|
199
|
-
count++;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
if ("${trackType}" !== "audio") selectInRange(seq.videoTracks);
|
|
206
|
-
if ("${trackType}" !== "video") selectInRange(seq.audioTracks);
|
|
207
|
-
|
|
208
|
-
return __result({ selected: count, rangeStart: ${args.start_seconds}, rangeEnd: ${args.end_seconds} });
|
|
173
|
+
const script = buildToolScript(`
|
|
174
|
+
var seq = app.project.activeSequence;
|
|
175
|
+
if (!seq) return __error("No active sequence");
|
|
176
|
+
|
|
177
|
+
var startTicks = __secondsToTicks(${args.start_seconds});
|
|
178
|
+
var endTicks = __secondsToTicks(${args.end_seconds});
|
|
179
|
+
var count = 0;
|
|
180
|
+
|
|
181
|
+
// Deselect all first
|
|
182
|
+
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
183
|
+
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
184
|
+
}
|
|
185
|
+
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
186
|
+
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function selectInRange(tracks) {
|
|
190
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
191
|
+
${args.track_index !== undefined ? `if (t !== ${args.track_index}) continue;` : ""}
|
|
192
|
+
var track = tracks[t];
|
|
193
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
194
|
+
var clip = track.clips[c];
|
|
195
|
+
var cs = parseFloat(clip.start.ticks);
|
|
196
|
+
var ce = parseFloat(clip.end.ticks);
|
|
197
|
+
if (cs < endTicks && ce > startTicks) {
|
|
198
|
+
clip.setSelected(true, true);
|
|
199
|
+
count++;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if ("${trackType}" !== "audio") selectInRange(seq.videoTracks);
|
|
206
|
+
if ("${trackType}" !== "video") selectInRange(seq.audioTracks);
|
|
207
|
+
|
|
208
|
+
return __result({ selected: count, rangeStart: ${args.start_seconds}, rangeEnd: ${args.end_seconds} });
|
|
209
209
|
`);
|
|
210
210
|
return sendCommand(script, bridgeOptions);
|
|
211
211
|
},
|
|
@@ -223,37 +223,37 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
223
223
|
required: ["color_index"],
|
|
224
224
|
},
|
|
225
225
|
handler: async (args) => {
|
|
226
|
-
const script = buildToolScript(`
|
|
227
|
-
var seq = app.project.activeSequence;
|
|
228
|
-
if (!seq) return __error("No active sequence");
|
|
229
|
-
|
|
230
|
-
// Deselect all
|
|
231
|
-
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
232
|
-
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
233
|
-
}
|
|
234
|
-
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
235
|
-
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
var count = 0;
|
|
239
|
-
function scan(tracks) {
|
|
240
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
241
|
-
var track = tracks[t];
|
|
242
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
243
|
-
var clip = track.clips[c];
|
|
244
|
-
try {
|
|
245
|
-
if (clip.projectItem && clip.projectItem.getColorLabel() === ${args.color_index}) {
|
|
246
|
-
clip.setSelected(true, true);
|
|
247
|
-
count++;
|
|
248
|
-
}
|
|
249
|
-
} catch(e) {}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
scan(seq.videoTracks);
|
|
254
|
-
scan(seq.audioTracks);
|
|
255
|
-
|
|
256
|
-
return __result({ selected: count, colorIndex: ${args.color_index} });
|
|
226
|
+
const script = buildToolScript(`
|
|
227
|
+
var seq = app.project.activeSequence;
|
|
228
|
+
if (!seq) return __error("No active sequence");
|
|
229
|
+
|
|
230
|
+
// Deselect all
|
|
231
|
+
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
232
|
+
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
233
|
+
}
|
|
234
|
+
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
235
|
+
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
var count = 0;
|
|
239
|
+
function scan(tracks) {
|
|
240
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
241
|
+
var track = tracks[t];
|
|
242
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
243
|
+
var clip = track.clips[c];
|
|
244
|
+
try {
|
|
245
|
+
if (clip.projectItem && clip.projectItem.getColorLabel() === ${args.color_index}) {
|
|
246
|
+
clip.setSelected(true, true);
|
|
247
|
+
count++;
|
|
248
|
+
}
|
|
249
|
+
} catch(e) {}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
scan(seq.videoTracks);
|
|
254
|
+
scan(seq.audioTracks);
|
|
255
|
+
|
|
256
|
+
return __result({ selected: count, colorIndex: ${args.color_index} });
|
|
257
257
|
`);
|
|
258
258
|
return sendCommand(script, bridgeOptions);
|
|
259
259
|
},
|
|
@@ -262,31 +262,31 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
262
262
|
description: "Invert the current clip selection in the active sequence (selected become deselected and vice versa).",
|
|
263
263
|
parameters: {},
|
|
264
264
|
handler: async () => {
|
|
265
|
-
const script = buildToolScript(`
|
|
266
|
-
var seq = app.project.activeSequence;
|
|
267
|
-
if (!seq) return __error("No active sequence");
|
|
268
|
-
|
|
269
|
-
var selected = 0;
|
|
270
|
-
var deselected = 0;
|
|
271
|
-
function invert(tracks) {
|
|
272
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
273
|
-
var track = tracks[t];
|
|
274
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
275
|
-
var clip = track.clips[c];
|
|
276
|
-
if (clip.selected) {
|
|
277
|
-
clip.setSelected(false, true);
|
|
278
|
-
deselected++;
|
|
279
|
-
} else {
|
|
280
|
-
clip.setSelected(true, true);
|
|
281
|
-
selected++;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
invert(seq.videoTracks);
|
|
287
|
-
invert(seq.audioTracks);
|
|
288
|
-
|
|
289
|
-
return __result({ nowSelected: selected, nowDeselected: deselected });
|
|
265
|
+
const script = buildToolScript(`
|
|
266
|
+
var seq = app.project.activeSequence;
|
|
267
|
+
if (!seq) return __error("No active sequence");
|
|
268
|
+
|
|
269
|
+
var selected = 0;
|
|
270
|
+
var deselected = 0;
|
|
271
|
+
function invert(tracks) {
|
|
272
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
273
|
+
var track = tracks[t];
|
|
274
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
275
|
+
var clip = track.clips[c];
|
|
276
|
+
if (clip.selected) {
|
|
277
|
+
clip.setSelected(false, true);
|
|
278
|
+
deselected++;
|
|
279
|
+
} else {
|
|
280
|
+
clip.setSelected(true, true);
|
|
281
|
+
selected++;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
invert(seq.videoTracks);
|
|
287
|
+
invert(seq.audioTracks);
|
|
288
|
+
|
|
289
|
+
return __result({ nowSelected: selected, nowDeselected: deselected });
|
|
290
290
|
`);
|
|
291
291
|
return sendCommand(script, bridgeOptions);
|
|
292
292
|
},
|
|
@@ -295,36 +295,36 @@ export function getSelectionTools(bridgeOptions) {
|
|
|
295
295
|
description: "Select all disabled clips in the active sequence.",
|
|
296
296
|
parameters: {},
|
|
297
297
|
handler: async () => {
|
|
298
|
-
const script = buildToolScript(`
|
|
299
|
-
var seq = app.project.activeSequence;
|
|
300
|
-
if (!seq) return __error("No active sequence");
|
|
301
|
-
|
|
302
|
-
// Deselect all
|
|
303
|
-
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
304
|
-
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
305
|
-
}
|
|
306
|
-
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
307
|
-
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
var count = 0;
|
|
311
|
-
function scan(tracks) {
|
|
312
|
-
for (var t = 0; t < tracks.numTracks; t++) {
|
|
313
|
-
var track = tracks[t];
|
|
314
|
-
for (var c = 0; c < track.clips.numItems; c++) {
|
|
315
|
-
try {
|
|
316
|
-
if (track.clips[c].disabled) {
|
|
317
|
-
track.clips[c].setSelected(true, true);
|
|
318
|
-
count++;
|
|
319
|
-
}
|
|
320
|
-
} catch(e) {}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
scan(seq.videoTracks);
|
|
325
|
-
scan(seq.audioTracks);
|
|
326
|
-
|
|
327
|
-
return __result({ selected: count });
|
|
298
|
+
const script = buildToolScript(`
|
|
299
|
+
var seq = app.project.activeSequence;
|
|
300
|
+
if (!seq) return __error("No active sequence");
|
|
301
|
+
|
|
302
|
+
// Deselect all
|
|
303
|
+
for (var t = 0; t < seq.videoTracks.numTracks; t++) {
|
|
304
|
+
for (var c = 0; c < seq.videoTracks[t].clips.numItems; c++) seq.videoTracks[t].clips[c].setSelected(false, true);
|
|
305
|
+
}
|
|
306
|
+
for (var t = 0; t < seq.audioTracks.numTracks; t++) {
|
|
307
|
+
for (var c = 0; c < seq.audioTracks[t].clips.numItems; c++) seq.audioTracks[t].clips[c].setSelected(false, true);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
var count = 0;
|
|
311
|
+
function scan(tracks) {
|
|
312
|
+
for (var t = 0; t < tracks.numTracks; t++) {
|
|
313
|
+
var track = tracks[t];
|
|
314
|
+
for (var c = 0; c < track.clips.numItems; c++) {
|
|
315
|
+
try {
|
|
316
|
+
if (track.clips[c].disabled) {
|
|
317
|
+
track.clips[c].setSelected(true, true);
|
|
318
|
+
count++;
|
|
319
|
+
}
|
|
320
|
+
} catch(e) {}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
scan(seq.videoTracks);
|
|
325
|
+
scan(seq.audioTracks);
|
|
326
|
+
|
|
327
|
+
return __result({ selected: count });
|
|
328
328
|
`);
|
|
329
329
|
return sendCommand(script, bridgeOptions);
|
|
330
330
|
},
|