jbilcke-hf HF staff commited on
Commit
9c21091
1 Parent(s): 0500631

put mp4 export into its own field

Browse files
public/samples/scripts/Raiders of the Lost Ark.txt ADDED
The diff for this file is too large to render. See raw diff
 
public/samples/scripts/Rear Window.txt ADDED
The diff for this file is too large to render. See raw diff
 
public/samples/scripts/Star Wars A New Hope.txt ADDED
The diff for this file is too large to render. See raw diff
 
public/samples/scripts/The Apery.txt ADDED
@@ -0,0 +1,1635 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+
4
+
5
+
6
+ "THE APERY"
7
+
8
+
9
+ AI screenplay by
10
+
11
+ GPT-4
12
+
13
+
14
+ AI direction by
15
+
16
+ Clapper
17
+
18
+
19
+ AI rendering by
20
+
21
+ AiTube.at
22
+
23
+
24
+
25
+ REVISED FINAL
26
+
27
+ JANUARY, 2024
28
+
29
+
30
+
31
+
32
+
33
+ FADE IN:
34
+
35
+ INT. LAVINGTON GALLERY - DAY
36
+
37
+ Ethereal HEIST MUSIC builds the atmosphere as we are ushered
38
+ through the neoclassical facade of the esteemed Lavington
39
+ Gallery.
40
+
41
+ The high glass ceiling bathes the space in ANGELIC LIGHT.
42
+ Patrons stand in hushed reverence, their eyes reflecting the
43
+ bold colors of priceless masterpieces.
44
+
45
+ We TRACK past tall Greek columns, over the polished concrete
46
+ floor, towards a group of COLLEGE STUDENTS.
47
+
48
+ They mingle indistinctly in the crowd, feigning interest in the
49
+ art. Their eyes, however, tell a different story.
50
+
51
+ CUT TO:
52
+
53
+ A SECURITY CAMERA panning lazily over the room.
54
+ Its RED LIGHT blinks matter-of-factly.
55
+
56
+ CUT TO:
57
+
58
+ Various CLOSE-UP shots of the students' eyes, each pair
59
+ absorbing every inch of the space, calculating, memorizing.
60
+
61
+ Among them, we find LEON REYNOLDS, our mastermind.
62
+ He stands still, a sentinel amongst moving bodies.
63
+
64
+ His eyes scan the artwork before seamlessly darting to the
65
+ security measures enveloping them.
66
+
67
+ LEON'S INTERNALS (V.O)
68
+ In every stroke, a story. In every gallery,
69
+ a game. Art and theft, forever entwined.
70
+
71
+ As Leon's VOICE whispers, his hands, BARELY VISIBLE to the casual
72
+ observer, sketch quick diagrams in a small, leather-bound
73
+ JOURNAL.
74
+
75
+ His stubble catches the light, a testament to the sleepless
76
+ nights he's endured for this.
77
+
78
+ CUT TO:
79
+
80
+ A discreetly positioned MAYA SANTOS, jots down notes on a gallery
81
+ guide, her warm hazelnut eyes flicker with intense focus,
82
+ betraying the mischievous gleam hidden within.
83
+
84
+ MAYA
85
+ (to herself, sotto voce)
86
+ Acrylic glaze, non-period canvas...
87
+ fascinating.
88
+
89
+ She tucks a loose strand of bronze hair behind her ear, revealing
90
+ a STUDDED EARRING, each precisely like the security cameras in
91
+ design.
92
+
93
+ PANNING across the room, we find SASHA HOFFMAN, her platinum hair
94
+ an icy contrast to the warmth around her.
95
+
96
+ She pensively examines a CLIMATE CONTROL PANEL near a series of
97
+ Impressionist paintings.
98
+
99
+ SASHA
100
+ (under her breath)
101
+ Airflow patterns... helpful, very helpful.
102
+ (a beat, then to her watch)
103
+ And forty-eight hours of continuous recording.
104
+ Excellent.
105
+
106
+ Her sharp gaze fixes on a passing security guard, unnoticed under
107
+ her feigned interest in a canvas brushstroke.
108
+
109
+ ROTATING our view, ANTHONY LAMBERT flashes a charming smile to a
110
+ TOUR GUIDE while pocketing a folded GALLERY MAP – oblivious, the
111
+ guide blushes and giggles, her back to a 'STAFF ONLY' door he's
112
+ just surveyed.
113
+
114
+ ANTHONY
115
+ (in French-accented English)
116
+ Your knowledge is as enchanting as the art
117
+ itself.
118
+
119
+ CUT TO:
120
+
121
+ TESS WILLIAMS, at the edge of the crowd, her hoodie shadowing
122
+ her face, she surreptitiously plugs a THIN CABLE into a hidden
123
+ data port beneath a digital guidepost.
124
+
125
+ TESS
126
+ (whispering to herself)
127
+ You're a beauty, aren't you? Let's see what
128
+ secrets you hold.
129
+
130
+ Her fingers DANCE over a mini-keyboard tucked in her sleeve as
131
+ she reclines against the post.
132
+
133
+ CUT TO:
134
+
135
+ The STUDENTS reconvene with practiced indifference. Their body
136
+ language casual, but their faces severe with intent.
137
+
138
+ Leon gazes intensely at his troop.
139
+
140
+ This is the moment where their plan teeters on the edge of
141
+ becoming reality.
142
+
143
+ LEON
144
+ (quietly to the group)
145
+ Remember, it's not just what you look at. It's
146
+ what you see. Be precise. Be bold.
147
+ Tonight, we prepare for the greatest performance
148
+ of our lives.
149
+
150
+ The students disperse, each cloaked in a newfound determination.
151
+
152
+ Their clandestine surveillance mission a success, they exit the
153
+ gallery unnoticed among the throng of visitors.
154
+
155
+ MATCH CUT TO:
156
+
157
+ EXT. LAVINGTON GALLERY - CONTINUOUS
158
+
159
+ The imposing architecture shrinks away as the STUDENTS move out.
160
+
161
+ We linger on the GALLERY EXTERIOR, where the waning sunlight
162
+ casts long shadows across the majestic columns, foreshadowing the
163
+ dark turn their lives are about to take.
164
+
165
+ FADE OUT
166
+
167
+ FADE IN:
168
+
169
+ EXT. LAVINGTON GALLERY - NIGHT
170
+
171
+ The gallery stands silent under the moonlight, the calm before
172
+ the storm. We PULL BACK as the last of the workers trickle out,
173
+ the grand art sanctuary shuts down for the night.
174
+
175
+ CUT TO:
176
+
177
+ INT. THE ENCLAVE BAR - NIGHT
178
+
179
+ A rustic hideaway contrasted against the elegant gallery we just
180
+ left. Edison bulbs cast a warm glow over each surface.
181
+
182
+ Faces are relaxed here, conversations muffled by the sound of
183
+ JAZZ TRICKLING through the air.
184
+
185
+ In a secluded corner, Leon and his team share a large booth
186
+ characterized by deep reds and amber tones.
187
+
188
+ They sit in hushed tones while ON-SCREEN CAPTIONS indicate their
189
+ names next to them as they speak, grounding us in their world.
190
+
191
+ LEON
192
+ This isn't just another job, it's our future
193
+ at stake. Tonight, we need to be more than
194
+ thieves...
195
+
196
+ SASHA
197
+ Und artists?
198
+
199
+ The team looks at each other, a silent acknowledgment of their
200
+ double lives.
201
+
202
+ ANTHONY
203
+ (Smiling)
204
+ Artists and magicians, mon amis.
205
+
206
+ The apparent levity drops at the sight of VICTOR MORETTI's entrance.
207
+ He's a silhouette against the dim lighting of the bar, approaching
208
+ with a dangerous grace.
209
+
210
+ The team's body language shifts, an instinctual reaction to the
211
+ predator entering their midst.
212
+
213
+ MORETTI
214
+ (smiling disarmingly)
215
+ I hope I'm not interrupting.
216
+
217
+ Leon remains unflinching, locking eyes with Moretti.
218
+
219
+ LEON
220
+ You are, but we both know you don't care.
221
+
222
+ Moretti sits, uninvited.
223
+
224
+ A WAITER approaches but is waved off with a subtle gesture by
225
+ Moretti – no one is to overhear.
226
+
227
+ MORETTI
228
+ (leaning forward)
229
+ I've got something that belongs to you...
230
+
231
+ He reveals a FILE, sliding it across the table.
232
+ Leon doesn't touch it, his eyes ice over instead.
233
+
234
+ MAYA
235
+ (sharply)
236
+ Get to the point.
237
+
238
+ MORETTI
239
+ (savoring the tension)
240
+ Each of your fingerprints on relics I now own.
241
+ Interpol would love to see this.
242
+
243
+ The group tenses. Risk now palpable, the stakes clear.
244
+
245
+ A BEAT before Leon responds.
246
+
247
+ LEON
248
+ And... what do you want?
249
+
250
+ MORETTI
251
+ Lavington's "Vanishing Vistas" exhibition.
252
+ Replace the collection with your charming replicas.
253
+
254
+ Tess leans in, her defiant glare unwavering.
255
+
256
+ TESS
257
+ And if we say no?
258
+
259
+ MORETTI
260
+ (smirking)
261
+ Then your promising careers are vanishing vistas.
262
+
263
+ Tess's fists clench, but Leon places a calm hand over hers.
264
+ His control over the situation at the forefront.
265
+
266
+ LEON
267
+ How long do we have?
268
+
269
+ MORETTI
270
+ Six months. The clock starts now.
271
+
272
+ He stands, leaving the file on the table.
273
+ His final glance at them is one of certainty.
274
+ As he exits, silence settles over their booth.
275
+
276
+ ANTHONY
277
+ (whispering)
278
+ We're in too deep to swim back now.
279
+
280
+ MAYA
281
+ (lightly touching the file)
282
+ So we dive deeper and come out on the other side.
283
+
284
+ SASHA
285
+ (nods, businesslike)
286
+ A heist of this magnitude... it will require
287
+ precision, und a perfect execution.
288
+
289
+ LEON
290
+ (with conviction)
291
+ We will turn this gamble into our masterpiece…
292
+ A true apery.
293
+
294
+ The group nods in silent agreement, resolute despite the
295
+ menace lurking in the backgrounds of their fates.
296
+
297
+ They disband into the night, shadows embracing equal parts
298
+ despair and determination.
299
+
300
+ CUT TO:
301
+
302
+ EXT. THE ENCLAVE BAR - NIGHT
303
+
304
+ The team disperses into the shadows of the city, their
305
+ MEASURED FOOTSTEPS a mantra against the cobblestone.
306
+
307
+ The gallery looms in the distance - tomorrow it will become
308
+ their stage.
309
+
310
+ FADE OUT.
311
+
312
+ FADE IN:
313
+
314
+ INT. LEON'S SECRET WORKSHOP - NIGHT
315
+
316
+ A stark contrast to the bar's homeliness, the workshop is an
317
+ industrial cavern of secrets. Workbenches, canvases, tools,
318
+ and machinery blanket the space - a chaotic order reigns here.
319
+
320
+ A PROJECTOR throws blueprints of the Lavington Gallery onto the
321
+ wall.
322
+
323
+ The team, gathered around a large table strewn with plans and
324
+ tech, exude a collective, focused intensity.
325
+
326
+ LEON
327
+ (points at the blueprint)
328
+ Entry points, surveillance patterns, guard
329
+ rotations - we need control over each. Tess?
330
+
331
+ TESS
332
+ Already on it. I've infiltrated their system.
333
+ With a few more tweaks, I'll have complete access.
334
+
335
+ She reveals her COMPUTER SCREEN showing complex code cascading down.
336
+
337
+ It mirrors against her determined eyes.
338
+
339
+ SASHA
340
+ Und the security systems?
341
+
342
+ Tess smirks, tapping a few keys.
343
+
344
+ TESS
345
+ They'll be seeing what we want them to see.
346
+
347
+ LEON
348
+ (turning to Maya)
349
+ The paintings?
350
+
351
+ MAYA
352
+ (brush in hand, working on a copy)
353
+ Give me four months. They'll be aging like fine wine,
354
+ indistinguishable from the real deal.
355
+
356
+ She steps back, and we get a glimpse of her work - a near-perfect
357
+ replica of a priceless piece.
358
+
359
+ Leon shifts his attention to the detailed security schematics.
360
+
361
+ LEON
362
+ (to Sasha)
363
+ Disabling?
364
+
365
+ SASHA
366
+ (clutching a petite but intricate device)
367
+ I'll create something non-invasive, silent.
368
+ It will take time, but it will be flawless.
369
+
370
+ ANTHONY
371
+ (product display on his tablet)
372
+ And once they're down, I'm in.
373
+ The distraction's all set.
374
+
375
+ He shows a CREATIVE PRESENTATION for a forthcoming marketing event
376
+ at the gallery that will coincide with their heist.
377
+
378
+ LEON
379
+ (exhales, pensive)
380
+ Then let's begin. This gallery's gonna witness a vanishing
381
+ act like no other.
382
+
383
+ The team converges over the blueprint, their minds weaving a web of deception
384
+ and precision. Each one, a vital thread, now interlaced into the intricate
385
+ tapestry of their heist.
386
+
387
+ FADE OUT:
388
+
389
+ FADE IN:
390
+
391
+ EXT. SAN FRANCISCO SKYLINE - NIGHT
392
+
393
+ A panoramic view of San Francisco's illuminated skyline; its
394
+ twinkling lights casting reflections on the bay. The heist music's
395
+ techno-influence throbs with an electric momentum.
396
+
397
+ INT. TESS'S WORKSHOP - NIGHT
398
+
399
+ We reveal TESS WILLIAMS' digital dominion, a corner of calculated
400
+ chaos.
401
+
402
+ Surrounding her, a fortress of monitors pulse with the lifeblood
403
+ of data streams.
404
+
405
+ Heist music plays, the rhythm paralleling Tess's nimble dance
406
+ across her keyboard.
407
+
408
+ A wire labyrinth feeds into a command center of monitors,
409
+ displaying an oscillating frenzy of code. Tess commands the
410
+ chaos, focused like a virtuoso at her grand piano of cybernetics.
411
+
412
+ TESS
413
+ (self-assuring whisper)
414
+ Okay, baby... let's show them how the digital world bows to us.
415
+
416
+ Her fingers pirouette on the keyboard, a frenetic ballet in the blue monitor glow.
417
+
418
+ INSERT – MONITOR SCREEN
419
+
420
+ Complex algorithms spiral and converge, yielding ACCESS GRANTED notifications
421
+ one after another.
422
+
423
+ TESS (CONT'D)
424
+ (with a satisfied nod)
425
+ That's the chorus I've been composing.
426
+
427
+ Tess swivels to a secondary workstation, a cockpit of scribbled code on neon
428
+ sticky notes. Each keystroke implants deceptive ghosts into the gallery's network.
429
+
430
+ TESS (CONT'D)
431
+ A splash of misdirection here, a sprinkle of mirage there…
432
+
433
+ A toy dinosaur on her desk WOBBLES, a mechanism triggers, and it ROARS.
434
+ Tess glances with mock annoyance.
435
+
436
+ TESS (CONT'D)
437
+ I'm working, T-Rex. No prehistoric symphonies right now!
438
+
439
+ She flicks the dinosaur. It grows silent. Tess laughs, her levity brief in the
440
+ night's gravity.
441
+
442
+ TESS (CONT'D)
443
+ As I prophesied...
444
+
445
+ She meticulously crafts the gallery's virtual facsimile,
446
+ embroidering her own network beneath the overt digital landscape.
447
+
448
+ INSERT – ANOTHER MONITOR SCREEN
449
+
450
+ A 3D wireframe maze of Lavington's security architecture morphs,
451
+ highlighting Tess's clandestine pathways blossoming like digital flora.
452
+
453
+ Her grimace turns to a grin as SCHRODINGER, her code name for
454
+ unpredictability, the cat, jumps onto the desk, vying for
455
+ attention amidst the high stakes.
456
+
457
+ TESS (CONT'D)
458
+ Joining the fray, Schro? The more, the merrier.
459
+ There's a big fish in the cyber sea tonight.
460
+
461
+ She indulges the cat with a scratch, its nose accidentally
462
+ toggling a virtual switch on the screen.
463
+
464
+ The feeds shimmer and reshape, revealing dummy
465
+ footage primed to cloak their movements.
466
+
467
+ TESS (CONT'D)
468
+ You're officially on the team now, Schro.
469
+ Sasha, your toys are cleared for the show.
470
+
471
+ CUT TO:
472
+
473
+ INT. SASHA'S WORKSHOP - CONTINUOUS
474
+
475
+ The scene transitions smoothly to SASHA's domain...
476
+
477
+ SASHA HOFFMAN, surrounded by a sleek myriad of her own inventions,
478
+ nods at Tess's voice in her earpiece, her gaze never leaving the
479
+ tiny automaton in her palm.
480
+
481
+ SASHA
482
+ Our feline muse has graced us. Well played...
483
+
484
+ She meticulously screws the back panel of the device,
485
+ her movements methodical and assured.
486
+
487
+ CUT BACK TO:
488
+
489
+ INT. TESS'S WORKSHOP - CONTINUOUS
490
+
491
+ TESS activates the next phase, coding with twice the fervor,
492
+ each line riddled with decoys and escape hatches within
493
+ the digital landscape.
494
+
495
+ TESS (CONT'D)
496
+ Now for the sleight of hand...
497
+ to disappear without a trace.
498
+
499
+ She enters a command; onscreen representation of her digital
500
+ footprint fades into the intricate web of her own making.
501
+
502
+ TESS (CONT'D)
503
+ (with playful arrogance)
504
+ The digital cloak of invisibility...
505
+ still a classic in my collection.
506
+
507
+ Satisfied, TESS leans back, a rare moment of introspection amid
508
+ her electronic empire. Screens signal their readiness;
509
+ the silence before the digital tempest.
510
+
511
+ TESS (CONT'D)
512
+ Patience, my digital symphony.
513
+ The opera is about to begin.
514
+ Make us proud, Leon and comrades.
515
+ It's almost showtime.
516
+
517
+ She permits herself a smirk as the countdown clock hits zero.
518
+ Tess's eyes sparkle – serene amidst the countdown.
519
+
520
+ FADE TO BLACK.
521
+ CUT TO EXTREME CLOSE UP:
522
+
523
+ Sasha's hand assembling the device’s intricate innards,
524
+ a canopy of tools laid out with surgical precision.
525
+
526
+ INT. SASHA'S WORKSHOP - NIGHT
527
+
528
+ Each tool has its place in the sterile temple that is SASHA'S workspace.
529
+ Shelves are lined with labeled components, organized to perfection.
530
+
531
+ PANNING SHOT reveals Sasha huddled over a glass table,
532
+ soldering a circuit on the tiny, spider-like drone she's perfecting.
533
+
534
+ SASHA
535
+ (muttering with intense focus)
536
+ Every gear, a cog in our grand schema...
537
+
538
+ She adjusts her magnifying headset, scrutinizing her delicate
539
+ creation. Each soldered connection sings with potential.
540
+
541
+ INSERT - SASHA'S BLUEPRINTS:
542
+
543
+ Expansive schematics detail each invention's role.
544
+ Drones, sensors, jammers – a high-tech arsenal at the ready.
545
+
546
+ SASHA (CONT'D)
547
+ (confidently)
548
+ The Sentry's not just a device;
549
+ it's the embodiment of deception.
550
+
551
+ She tests the drone's mobility, watching it glide over the
552
+ mockup of the gallery floorplan spread out before her.
553
+
554
+ SASHA (CONT'D)
555
+ (into her headset)
556
+ Tess, Sentries are about to waltz into their debut...
557
+
558
+ She watches as the drone's sensors sync flawlessly with Tess's
559
+ virtual constructs.
560
+
561
+ CUT BACK TO:
562
+
563
+ INT. TESS'S WORKSHOP - CONTINUOUS
564
+
565
+ TESS watches the feedback from Sasha's Sentries on her screens,
566
+ the simulated signals infiltrating the gallery's defenses
567
+ unchallenged.
568
+
569
+ TESS
570
+ Reception's crystal.
571
+ They'll see nothing more than harmless flickers on
572
+ their boards.
573
+
574
+ She drinks in the conquest, a satisfied lioness surveying
575
+ her domain.
576
+
577
+ CUT TO:
578
+
579
+ INT. LEON'S SECRET WORKSHOP - NIGHT
580
+
581
+ The scene is a still life of tension and anticipation.
582
+ LEON REYNOLDS, amidst a shadowy array of forgery tools
583
+ and half-finished canvases, stands before a sprawling
584
+ wall dedicated to the caper.
585
+
586
+ LEON
587
+ (to himself, pondering Each step)
588
+ Not a second more, not a second less...
589
+
590
+ INSERT - CLOSE-UP OF LEON'S HAND
591
+
592
+ As he traces his finger along the delicately inked timelines
593
+ and blueprints that extend across the workshop wall like an
594
+ artist's canvas.
595
+
596
+ LEON (CONT'D)
597
+ In this dance, each second is a brushstroke...
598
+ we can't afford to blur the lines.
599
+
600
+ He halts, head cocked, listening to the silent rhythm of
601
+ invisible clockwork, then proceeds to a desk and flips
602
+ open a weathered book – a tome filled with historic heist
603
+ accounts.
604
+
605
+ LEON (CONT'D)
606
+ (contemplatively)
607
+ Every masterpiece tells a tale.
608
+ Ours will be no different – etched permanently in
609
+ the annals of precision and daring.
610
+
611
+ He steps to a large, imposing digital timer – its red digits
612
+ glare like a challenging beast.
613
+
614
+ Leon stares it down with unflinching resolve.
615
+
616
+ LEON (CONT'D)
617
+ (assertively)
618
+ This is it. Our legacy unfolds tonight.
619
+
620
+ CUT TO:
621
+
622
+ INT. MAYA'S STUDIO - NIGHT
623
+
624
+ A solitary bulb dangles above MAYA SANTOS, the soft light
625
+ casting her shadow across a masterful reproduction.
626
+
627
+ Her hand glides over the canvas with the grace of a musician
628
+ plucking at strings.
629
+
630
+ MAYA
631
+ In your colors, I found my voice...
632
+ be joyful, for you will live anew.
633
+
634
+ INSERT - DELICATE BRUSHSTROKE:
635
+
636
+ Capturing the essence of a painted sky as dusk meets the canvas,
637
+ the evening light sanctifying her forgery.
638
+
639
+ Maya steps back, head tilted, studying the subtle play of hues
640
+ and textures. They reveal their perfection to her knowing gaze.
641
+
642
+ MAYA (CONT'D)
643
+ (with quiet triumph)
644
+ They will admire, yet never discern...
645
+
646
+ She exhales a long-held breath, the satisfaction of a creator
647
+ basking in the fulfillment of her art.
648
+
649
+ CUT TO:
650
+
651
+ INT. CAFÉ ADJACENT TO LAVINGTON - DAY
652
+
653
+ ANTHONY LAMBERT stands behind the café counter, espresso machine
654
+ hissing as he conjures up velvety coffee creations.
655
+ His magnetic presence transcends the barista apron – the wolf
656
+ cloaked in sheep's clothing.
657
+
658
+ ANTHONY
659
+ (with a wink)
660
+ A cappuccino to enrich your palette – a true masterpiece
661
+ begins with the first sip.
662
+
663
+ A CUSTOMER, awestruck by Anthony's allure, flutters her eyelashes
664
+ admiringly as she accepts the coffee.
665
+
666
+ ANTHONY (CONT'D)
667
+ (with a slightly conspiratorial lean)
668
+ And remember, mademoiselle, each secret has its savor –
669
+ tasted best amidst a touch of enigma.
670
+
671
+ A coy smile flickers across her lips, his words a sweet melody in
672
+ her ear. Anthony peers at the clock through his lashes
673
+ he's a maestro waiting for his cue.
674
+
675
+ ANTHONY (CONT'D)
676
+ (under his breath)
677
+ Almost showtime – the subterfuge commences.
678
+
679
+ CUT TO:
680
+
681
+ EXT. LAVINGTON GALLERY - DAY (SIX MONTHS LATER)
682
+
683
+ A morning light washes over the grand facade of the gallery.
684
+ A digital clock wipes across the screen declaring the zero
685
+ hour – 00:00:00 – the heist day has dawned.
686
+
687
+ CUT TO:
688
+
689
+ INT. LAVINGTON GALLERY - DAY
690
+
691
+ Normalcy masks the impending scheme. Staff go about their
692
+ routine; the hum of preservation is unceasing.
693
+
694
+ But amidst them, Leon and his team don their new roles.
695
+
696
+ Maya, in a CONSERVATIONIST'S COAT, examines a painting up close.
697
+
698
+ Sasha, dressed as a TECH ADVISOR, inspects the new security
699
+ cameras.
700
+
701
+ Anthony, the barista, flashes his charm like a weapon across the
702
+ bistro, picking up loose bits of intel.
703
+
704
+ Tess, in INTERN ATTIRE, waltzes through the digital nerve center,
705
+ her fingers dancing over a tablet, owning the network beneath her
706
+ touch.
707
+
708
+ The stage is set, pieces moving in harmony.
709
+ The crew blends into the gallery's rhythm.
710
+ Silent acknowledgments pass between them – an invisible bond made
711
+ tangible.
712
+
713
+ LEON, the conductor of this intricate ensemble, locks gaze with
714
+ his conspirators.
715
+
716
+ LEON
717
+ The time is now.
718
+ Remember, every micro-action is choreographed.
719
+ Let's write history.
720
+
721
+ With that, they disseminate among the unsuspecting crowd,
722
+ their roles as preordained as the art around them.
723
+
724
+ The PLAN, motion.
725
+
726
+ The STAGE, set.
727
+
728
+ FADE OUT.
729
+
730
+ INT. ARCHER'S POLICE PRECINCT - DAY
731
+
732
+ DETECTIVE ARCHER inhales a morning coffee, his eyes fixated on
733
+ a cluster of case files.
734
+
735
+ His worn face carries the weight of anticipation.
736
+ It's another day, yet his instinct nags at him about a larger play.
737
+
738
+ ARCHER
739
+ (to himself)
740
+ Too quiet... something's brewing.
741
+
742
+ He taps a CASE FILE labeled "STOLEN ARTIFACTS" - indirectly
743
+ connected to our unseen heist crew.
744
+
745
+ CUT BACK TO:
746
+
747
+ INT. LAVINGTON GALLERY - CONTINUOUS
748
+
749
+ Under the guise of their roles, each member of the crew expertly
750
+ plants the seeds of their plan.
751
+
752
+ The audience is aware, anticipation mounting as they inch closer
753
+ to the heist.
754
+
755
+ FADE OUT.
756
+
757
+ EXT. LAVINGTON GALLERY - DUSK
758
+
759
+ The fading light of dusk bathes the neoclassical facade of the
760
+ gallery in a warm, golden hue.
761
+
762
+ The majestic columns stand like silent sentinels guarding the
763
+ treasures within.
764
+
765
+ The bustling crowd of the day has dwindled to a sparse few,
766
+ drifting to the exits.
767
+
768
+ CUT TO:
769
+
770
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - DUSK
771
+
772
+ The hall is cavernous and slowly emptying, allowing the setting
773
+ sun to cast long, dramatic shadows across the floor.
774
+
775
+ We track past the last ADMIRERS as they leave, their murmurs
776
+ and footsteps fading.
777
+
778
+ CUT TO:
779
+
780
+ INT. LAVINGTON GALLERY - SECURITY HUB - DUSK
781
+
782
+ A small room, bathed in the glow of multiple MONITORS showing
783
+ various angles of the gallery.
784
+
785
+ A SECURITY GUARD, bored and half-asleep, is about to end hi
786
+ shift. He barely glances at the screens.
787
+
788
+ Suddenly, the feed FLICKERS and goes BLACK for a moment.
789
+ The guard sits up, startled, then settles back as the
790
+ image restores.
791
+
792
+ A coded message is subtly embedded in the glitch – unnoticed by
793
+ the guard, but clear to us: "IT'S TIME".
794
+
795
+ CUT TO:
796
+
797
+ INT. LEON'S SECRET WORKSHOP - DUSK
798
+
799
+ The team is in final preparations.
800
+ Leon's voice is steady with command as he goes through the
801
+ checklist with everyone.
802
+
803
+ They are in their action gear – NONDESCRIPT CLOTHING,
804
+ gadgets in place, determined.
805
+
806
+ LEON
807
+ (looking at his team)
808
+ Comms check. Confirm when ready.
809
+
810
+ TESS
811
+ (checking her earpiece)
812
+ Tech and comms are go.
813
+
814
+ SASHA
815
+ (with a confident nod)
816
+ My gear's set.
817
+
818
+ MAYA
819
+ (lifting her chin)
820
+ Replicas ready for the switch.
821
+
822
+ ANTHONY
823
+ (adjusting his earpiece)
824
+ Charm is always ready.
825
+
826
+ Leon surveys his team, a silent pride in his eyes.
827
+ They are a unit, a single entity poised on the edge of history.
828
+
829
+ LEON
830
+ We are the invisible brushstrokes on the canvas of night.
831
+ Let's create our mark.
832
+
833
+ CUT TO:
834
+
835
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - NIGHT
836
+
837
+ The STAFF EXIT, leaving the paintings alone in the dimly lit room.
838
+ The air is thick with anticipation.
839
+
840
+ CUT TO:
841
+
842
+ INT. LAVINGTON GALLERY - VARIOUS LOCATIONS - NIGHT
843
+
844
+ A synchronized ballet begins as each member of the team enters
845
+ the gallery from their respective locations, slipping throught
846
+ he shadows unnoticed.
847
+
848
+ Tess at the SECURITY HUB, her device interfacing with the
849
+ control panel, the guard now fast asleep after a cup of drugged
850
+ coffee.
851
+
852
+ Sasha, in a JANITOR'S UNIFORM, bypassing a SECURITY SENSOR with
853
+ a handheld device that emits a silent frequency.
854
+
855
+ Maya emerges from an EMPLOYEE CLOAKROOM, dressed in a guard's
856
+ uniform, hand-painted to match the others flawlessly.
857
+ She moves toward the paintings.
858
+
859
+ Anthony, in the BISTRO, ensures no lingering employee sees the
860
+ team's movements. A cocktail of charm and tactical diversion.
861
+
862
+ Each action is deliberate, their execution flawless.
863
+ The tension builds as the pieces of their plan click into place.
864
+
865
+ CUT TO:
866
+
867
+ INT. LAVINGTON GALLERY - TECH ADVISOR OFFICE - NIGHT
868
+
869
+ Leon is nestled amongst the screens and servers, bathed in
870
+ the pulse of the technology.
871
+
872
+ His hands move with swift precision over the keyboard, entering
873
+ sequences, dismantling digital barriers with quiet fervor.
874
+
875
+ LEON
876
+ (into his comms)
877
+ All systems are down. Switch to infrared.
878
+
879
+ The GALLERY LIGHTS fall dark, replaced by the otherworldly
880
+ glow of infrared cameras – the team now visible as ghostly
881
+ figures on Leon's SCREEN.
882
+
883
+ They continue, unseen by traditional surveillance.
884
+
885
+ CUT TO:
886
+
887
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - NIGHT
888
+
889
+ Maya approaches the prized masterpiece, her motions fluid
890
+ and quiet.
891
+
892
+ Sasha appears beside her, applying a black paste around the
893
+ frame that QUICKLY HARDENS into a perfect mold.
894
+
895
+ Together, they deftly lift the painting from the wall,
896
+ replacing it with an indistinguishable REPLICA, the
897
+ aging of the forgery immaculate under the scrutinizing
898
+ eye of infrared.
899
+
900
+ CUT TO:
901
+
902
+ INT. LAVINGTON GALLERY - SECURITY HUB - NIGHT
903
+
904
+ TESS, her eyes flicking between monitors, coordinates
905
+ the team's movements with almost supernatural foresight.
906
+
907
+ TESS
908
+ (into her comms)
909
+ East wing clear. Move now.
910
+
911
+ CUT TO:
912
+
913
+ INT. LAVINGTON GALLERY - BACK CORRIDOR - NIGHT
914
+
915
+ ANTHONY slips a MICRO CAMERA under the door of the
916
+ MAINTENANCE ROOM, watching a paired device.
917
+
918
+ He signals an "all clear" snapping on gloves as he prepares
919
+ to open the door with a set of expertly crafted KEYS.
920
+
921
+ CUT TO:
922
+
923
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - NIGHT
924
+
925
+ Maya and Sasha, their task complete, fade back into the shadows.
926
+ The replicas hang where originals once did, undetected, the
927
+ silence of the room accepting the ruse.
928
+
929
+ CUT TO:
930
+
931
+ INT. LEON'S SECRET WORKSHOP - NIGHT
932
+
933
+ Leon, a sentinel at his desk, his eyes never leaving the screens.
934
+
935
+ LEON
936
+ (into his comms, whispering)
937
+ Stage one complete. Prepare for exfil of the originals.
938
+
939
+ CUT TO:
940
+
941
+ EXT. LAVINGTON GALLERY - BACK ALLEY - NIGHT
942
+
943
+ A nondescript van idles quietly as the driver,
944
+ wearing a BASEBALL CAP pulled low, checks their watch.
945
+
946
+ It's TESS, ready for the getaway.
947
+
948
+ She makes a final check of the back, where CANVASES are securely
949
+ hidden in false compartments.
950
+
951
+ TESS
952
+ (into her comms, softly)
953
+ Extraction point is prepped and ready for transport.
954
+
955
+ CUT TO:
956
+
957
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - NIGHT
958
+
959
+ The hall, now veiled in darkness, is a stage set for deception.
960
+ MAYA and SASHA emerge from the shadows, moving briskly but
961
+ cautiously as they cross the hall with the genuine
962
+ masterpieces rolled in protective tubes.
963
+
964
+ SASHA
965
+ (into her comms)
966
+ Heading to the rendezvous point now.
967
+
968
+ CUT TO:
969
+
970
+ INT. LAVINGTON GALLERY - CORRIDOR - NIGHT
971
+
972
+ Leon trails behind, vigilant.
973
+ His eyes scan every corner, his device in hand ready to jam any
974
+ unexpected security breaches.
975
+
976
+ LEON
977
+ (into his comms)
978
+ I'm covering your six. Keep moving.
979
+
980
+ CUT TO:
981
+
982
+ INT. LAVINGTON GALLERY - NORTH WING - NIGHT
983
+
984
+ ANTHONY, with a heavy duffel bag slung over his shoulder,
985
+ pauses at a corner.
986
+
987
+ He peeks around — clear.
988
+
989
+ He continues down the hallway, intent on his objective.
990
+
991
+ CUT TO:
992
+
993
+ EXT. LAVINGTON GALLERY - NIGHT
994
+
995
+ The deserted area around the gallery is a stark contrast to
996
+ the tension-filled operation unfolding within.
997
+
998
+ A CAT slinks by, the only witness to the impending escape.
999
+
1000
+ CUT TO:
1001
+
1002
+ INT. LAVINGTON GALLERY - BACK EXIT - NIGHT
1003
+
1004
+ Maya and Sasha reach the exit, pausing to check the coast is
1005
+ clear. The door opens a crack, spilling a sliver of ambient
1006
+ ight from the alleyway.
1007
+
1008
+ CUT TO:
1009
+
1010
+ EXT. LAVINGTON GALLERY - BACK ALLEY - CONTINUOUS
1011
+
1012
+ The night air is thick as Maya and Sasha step out,
1013
+ the precious rolls of artwork in hand.
1014
+
1015
+ Tess gestures them into the van with urgent finesse.
1016
+
1017
+ TESS
1018
+ (whispering)
1019
+ Come on, come on...
1020
+
1021
+ They slide the paintings into the hidden compartments,
1022
+ the false bottom emitting a soft click as it seals.
1023
+
1024
+ CUT TO:
1025
+
1026
+ INT. LAVINGTON GALLERY - NORTH WING - NIGHT
1027
+
1028
+ Anthony inserts the final painting into another compartment
1029
+ within his bag, checking the fake facsimile he's left in
1030
+ place on the wall.I t matches the others perfectly.
1031
+
1032
+ CUT TO:
1033
+
1034
+ EXT. LAVINGTON GALLERY - ROOFTOP - NIGHT
1035
+
1036
+ Leon watches from above through BINOCULARS,
1037
+ the perfect vantage point to oversee the heist.
1038
+ He whispers an update.
1039
+
1040
+ LEON
1041
+ (into his comms)
1042
+ Final artworks in transit. Time to disappear.
1043
+
1044
+ CUT TO:
1045
+
1046
+ INT. LAVINGTON GALLERY - BACK EXIT - NIGHT
1047
+
1048
+ The door closes silently behind Maya and Sasha as they
1049
+ reenter the gallery.
1050
+
1051
+ They retrace their steps, fading back into the structure of
1052
+ shadows and ghostly infrared outlines.
1053
+
1054
+ CUT TO:
1055
+
1056
+ EXT. LAVINGTON GALLERY - BACK ALLEY - NIGHT
1057
+
1058
+ The van, its precious cargo now aboard, eases out of the
1059
+ alleyway with Tess at the wheel.
1060
+
1061
+ Its departure is quiet, lights off, as it merges with the
1062
+ city's sleeping pulse.
1063
+
1064
+ CUT TO:
1065
+
1066
+ INT. LAVINGTON GALLERY - MAIN EXHIBITION HALL - NIGHT
1067
+
1068
+ The replicas are poised on the walls, a deceptive calm in
1069
+ their place.
1070
+
1071
+ One would never suspect the switch – an illusion resting
1072
+ beneath silent alarms and the watchful eye of motionless
1073
+ cameras.
1074
+
1075
+ CUT TO:
1076
+
1077
+ EXT. LAVINGTON GALLERY - VARIOUS ENTRANCES - NIGHT
1078
+
1079
+ One by one, like phantoms at the stroke of midnight,
1080
+ the team slips out from various nondescript exits.
1081
+
1082
+ Maya, Sasha, Anthony, now divested of their equipment,
1083
+ meld into the night.
1084
+
1085
+ They vanish as suddenly as they appeared—stealth their ally,
1086
+ darkness their cloak.
1087
+
1088
+ CUT TO:
1089
+
1090
+ INT. ARCHER'S POLICE PRECINCT - NIGHT
1091
+
1092
+ DETECTIVE ARCHER, at his desk surrounded by dim light and
1093
+ evidence files, feels a BEAT of intuition, a ripple in the calm.
1094
+
1095
+ He looks up, driven by unspoken urgency.
1096
+
1097
+ ARCHER
1098
+ (under his breath)
1099
+ Got a feeling tonight's the night...
1100
+
1101
+ He grabs his coat and keys, exiting the precinct.
1102
+ His vehicle roars to life, lights cutting through the fog of the
1103
+ city as he heads towards an unknown destiny, towards the gallery
1104
+ that rests, unaware, of its newfound void.
1105
+
1106
+ CUT TO:
1107
+
1108
+ INT. LEON'S SECRET WORKSHOP - NIGHT
1109
+
1110
+ Leon, the last to leave his post, takes one final look at the
1111
+ screens, their luminosity casting his face in stark relief.
1112
+
1113
+ A sense of accomplishment, mixed with the adrenaline of danger,
1114
+ glows in his eyes. He switches off the equipment, the room
1115
+ blanketed in darkness.
1116
+
1117
+ Then, he too departs, the silence of the workshop speaking volumes
1118
+ of the void they've left behind.
1119
+
1120
+ EXT. CITY STREETS - NIGHT
1121
+
1122
+ The haunting hum of the city at NIGHT provides a backdrop as an
1123
+ UNMARKED SEDAN tails the van from Lavington Gallery.
1124
+
1125
+ Inside, DETECTIVE ARCHER's eyes flick to and from,
1126
+ reading the streets with a hunter's focus.
1127
+
1128
+ ARCHER'S POV
1129
+
1130
+ We see the van slip through traffic lights and turn down a
1131
+ narrow side street.
1132
+
1133
+ Archer's hand moves to the radio.
1134
+
1135
+ ARCHER
1136
+ (into radio, low)
1137
+ I'm in pursuit of the target. Approaching the east sector.
1138
+ Keep backup on standby.
1139
+
1140
+ The radio CRACKLES back an affirmation as we:
1141
+
1142
+ CUT TO:
1143
+
1144
+ EXT. VIADUCT UNDERPASS - NIGHT
1145
+
1146
+ The van emerges beneath the underpass, its walls
1147
+ graffiti-tagged with the city's urban tattoo.
1148
+
1149
+ A SHADOWY FIGURE watches from above, obscured by the darkness.
1150
+ As the van passes:
1151
+
1152
+ ANGLE ON SHADOWY FIGURE
1153
+
1154
+ The figure steps out to reveal MAYA, her earlier poise
1155
+ now masked by concentration.
1156
+ She pulls out a two-way radio.
1157
+
1158
+ MAYA
1159
+ (into radio)
1160
+ Hawk is in flight. Keep an eye on the egg.
1161
+
1162
+ She turns and disappears back into the shadows as we:
1163
+
1164
+ CUT TO:
1165
+
1166
+ EXT. CHASING SEQUENCE STREETS - NIGHT
1167
+
1168
+ A maze of BLURRING LIGHTS and PULSATING ENGINES as the
1169
+ chase intensifies.
1170
+
1171
+ Tess maneuvers the van with agility, swerving past oncoming
1172
+ vehicles and pedestrians. The CAMERA JERKS and JOSTLES,
1173
+ mirroring the chase's chaotic energy.
1174
+
1175
+ TESS
1176
+ (stressed)
1177
+ Hold on tight, this is gonna get bumpy!
1178
+
1179
+ SASHA, sitting beside her, clutches a remote control with
1180
+ a RED BUTTON.
1181
+
1182
+ She meets Tess's eyes, a silent query that's answered with
1183
+ a determined nod.
1184
+
1185
+ SASHA
1186
+ (hurried)
1187
+ Ready on your mark!
1188
+
1189
+ Suddenly, the sedan gains ground, its headlights looming
1190
+ ominously.
1191
+
1192
+ Tess's eyes lock on the road ahead – a barricade of
1193
+ CONSTRUCTION SIGNS and flashing amber lights.
1194
+
1195
+ She presses down on the accelerator, a surge of power
1196
+ pushing them onward.
1197
+
1198
+ TESS
1199
+ (bracing)
1200
+ Now, Sasha!
1201
+
1202
+ SASHA presses the button, and:
1203
+
1204
+ EXPLOSION
1205
+
1206
+ A pre-set DETONATION goes off behind them,
1207
+ sending a SHOWER OF SPARKS and DEBRIS into
1208
+ the path of Archer's pursuing sedan.
1209
+
1210
+ The sedan SCREECHES to a halt.
1211
+
1212
+ EXT. ARCHER'S SEDAN - NIGHT
1213
+
1214
+ Archer slams his hands on the steering wheel,
1215
+ frustration etched into every line of his face.
1216
+
1217
+ He reaches for his radio again while eyeing the
1218
+ vanishing tail lights of the van.
1219
+
1220
+ ARCHER
1221
+ (urgent, into radio)
1222
+ They've set a trap.
1223
+ I need aerial support and all units to converge on—
1224
+
1225
+ He cuts off abruptly, as something catches his attention.
1226
+ A glint of LIGHT reflects off something in the distance,
1227
+ drawing his gaze.
1228
+
1229
+ ARCHER'S POV - THE SECOND VAN
1230
+
1231
+ Sneaking through an intersecting street,
1232
+ the SECOND VAN takes a different, SECURER route,
1233
+ unnoticed by the chaos of the first distraction.
1234
+
1235
+ BACK TO SCENE
1236
+
1237
+ Archer, realizing he's been duped, makes a quick decision.
1238
+
1239
+ ARCHER
1240
+ (grim realization, into radio)
1241
+ Forget it. They split up. I'm going after the
1242
+ secondary target. Stay on the original!
1243
+
1244
+ With swift precision, Archer shifts gears and U-TURNS his sedan,
1245
+ racing off toward his new objective. The divided pursuit now has
1246
+ multiple paths converging in the NIGHT.
1247
+
1248
+ CUT TO:
1249
+
1250
+ EXT. BRIDGE OVERLOOKING THE CITY - NIGHT
1251
+
1252
+ LEON stands at the edge of the bridge, his figure enveloped by
1253
+ the sweeping cityscape.
1254
+
1255
+ The distant SIRENS and chaos are drowned out by the RUSHING WATER
1256
+ below.
1257
+
1258
+ He pulls out a discreet EARPIECE, speaking with quiet authority.
1259
+
1260
+ LEON
1261
+ (into Earpiece)
1262
+ The eagle has left the nest.
1263
+ I repeat, the eagle has left the nest.
1264
+ Rendezvous at point delta.
1265
+
1266
+ A SIGH of relief passes his lips, visible in the cold night air.
1267
+ He turns from the scene, his silhouette receding into the urban
1268
+ tapestry as he makes his way toward their ultimate meeting place.
1269
+
1270
+ CUT TO:
1271
+
1272
+ INT. MORETTI'S LUXURIOUS DEN - NIGHT
1273
+
1274
+ MORETTI sits at his grand desk, a fortress of power and
1275
+ indulgence. Around him, henchmen await their orders, the
1276
+ stillness shattered by the ARRIVAL of one of his trusted
1277
+ lieutenants, breathless, carrying a RADIO.
1278
+
1279
+ LIEUTENANT
1280
+ (tense)
1281
+ Boss, the first van's been hit. There's been an incident.
1282
+
1283
+ MORETTI's eyes narrow into slits, fury barely masked.
1284
+ He stands slowly, his demeanor calm but deadly.
1285
+
1286
+ MORETTI
1287
+ (ominous)
1288
+ Then we play our hand. No one double-crosses Victor Moretti.
1289
+
1290
+ He snatches the radio, barking orders.
1291
+ His men mobilize, a swarm of precision and ill intent flooding
1292
+ the room as he stalks toward the PANORAMIC WINDOWS, overlooking
1293
+ his city of sin.
1294
+
1295
+ CUT TO:
1296
+
1297
+ INT. SECOND VAN - NIGHT
1298
+
1299
+ Inside, the mood is palpably tense.
1300
+ The van is filled with the REAL ARTWORKS, each one safely
1301
+ housed in protective casing.
1302
+
1303
+ Maya sits with Leon, sharing a look that speaks volumes of
1304
+ their shared journey.
1305
+
1306
+ MAYA
1307
+ (reassuringly)
1308
+ We did it, Leon. We're almost there.
1309
+
1310
+ LEON
1311
+ (sober, focused)
1312
+ Not until every piece is secured, and Archer's out
1313
+ of the picture. Keep your eyes open; it's not over yet.
1314
+
1315
+ He checks the rear-view mirror, his caution a testament to the
1316
+ stakes at play. The van heads toward the edge of the city,
1317
+ where their FREEDOM – or downfall – awaits.
1318
+
1319
+ EXT. ABANDONED INDUSTRIAL DISTRICT - NIGHT
1320
+
1321
+ The SECOND VAN winds through the desolate streets, flanked by
1322
+ DECAYING WAREHOUSES and FORGOTTEN FACTORIES.
1323
+
1324
+ The pulse of the chase now a distant echo, they pull into a
1325
+ nondescript building shaded by darkness.
1326
+
1327
+ INT. SECOND VAN - CONTINUOUS
1328
+
1329
+ LEON, behind the wheel, kills the engine.
1330
+
1331
+ The silence is deafening.
1332
+
1333
+ MAYA eyes the rearview mirror, vigilant for any sign of pursuit.
1334
+ Her fingers intertwine with Leon's, a quiet show of unity.
1335
+
1336
+ MAYA
1337
+ Just like old times, huh?
1338
+
1339
+ LEON
1340
+ (softly)
1341
+ Yeah. Just like old times.
1342
+
1343
+ CUT TO:
1344
+
1345
+ EXT. ABANDONED INDUSTRIAL DISTRICT - NIGHT
1346
+
1347
+ Their exit is swift, the team unloading the REAL ARTWORKS
1348
+ with practiced ease. Each step resonates with solemnity as
1349
+ they approach a CONCEALED ENTRANCE.
1350
+
1351
+ INT. LEON'S SECRET WORKSHOP - CONTINUOUS
1352
+
1353
+ The workshop door opens with a HISS, beckoning them into the
1354
+ belly of creativity and duplicity. The paintings are
1355
+ carefully carried inside, the tension palpable.
1356
+
1357
+ INT. WORKSHOP - CONTINUOUS
1358
+
1359
+ Surrounded by FORGED ART and TOOLS OF THE TRADE,
1360
+ the team deposits each piece onto a designated table.
1361
+
1362
+ SASHA examines the locking mechanisms on the SHIPPING CRATES,
1363
+ ready to secure the precious cargo.
1364
+
1365
+ SASHA
1366
+ These need to be climate-controlled.
1367
+ Is the vault prepped?
1368
+
1369
+ LEON
1370
+ (nodding)
1371
+ Temperature and humidity are stable. It's time.
1372
+
1373
+ They share a collective breath as LEON leads the way to the HEART
1374
+ OF THE WORKSHOP – a reinforced steel door, its exterior an
1375
+ incongruous mural of eclectic street art.
1376
+
1377
+ INT. VAULT ENTRANCE - CONTINUOUS
1378
+
1379
+ Leon approaches a KEYPAD hidden within the mural, entering a
1380
+ sequence. A CORRECT ENTRY tone sounds, and the steel door
1381
+ retracts with a ponderous groan. The team moves inside.
1382
+
1383
+ INT. VAULT - CONTINUOUS
1384
+
1385
+ Row upon row of MASTERPIECES, the true spoils of their endeavors,
1386
+ stand guarded by state-of-the-art security. The CAMERA PANS over
1387
+ the collection, a silent ode to their triumph.
1388
+
1389
+ ANTHONY
1390
+ (triumphant)
1391
+ We've outdone ourselves this time.
1392
+
1393
+ MAYA
1394
+ (satisfied)
1395
+ We make quite the team.
1396
+
1397
+ They begin to slot the newly acquired pieces into the COLLECTION,
1398
+ their movements a ballet of precision.
1399
+
1400
+ TESS
1401
+ (checking her watch)
1402
+ We need to sync up with the others and confirm extraction.
1403
+
1404
+ Leon nods, pulling out his PHONE to send a pre-arranged signal,
1405
+ a green light illuminating his face. It's done. They are now
1406
+ ghosts, their victory secured.
1407
+
1408
+ CUT TO:
1409
+
1410
+ INT. ARCHER'S SEDAN - MOVING - NIGHT
1411
+
1412
+ DETECTIVE ARCHER, driven by instinct and hard-won experience,
1413
+ cruises the industrial district. His scowl deepens with every
1414
+ passing moment of fruitless search.
1415
+
1416
+ ARCHER
1417
+ (talking to himself)
1418
+ They're close. I can feel it.
1419
+
1420
+ His hand pauses over the radio before he retracts it, his eyes
1421
+ catching a fleeting SHADE disappearing around a warehouse
1422
+ corner. Curiosity piqued, he slows the car.
1423
+
1424
+ EXT. ABANDONED INDUSTRIAL DISTRICT - WAREHOUSE CORNER - CONTINUOUS
1425
+
1426
+ Archer steps out of the vehicle, DRAWING his GUN with deliberate
1427
+ calm. His FOOTSTEPS echo as he advances towards the corner, the
1428
+ light from his flashlight cutting swaths through the night.
1429
+
1430
+ ARCHER
1431
+ (poised)
1432
+ Come out, come out, wherever you are...
1433
+
1434
+ His beam lands on MAYA'S JACKET, discarded at the corner.
1435
+ A calculated tell? Or a genuine mistake?
1436
+ His grip tightens around the pistol, senses heightened.
1437
+
1438
+ INT. MORETTI'S LUXURIOUS DEN - SAME TIME
1439
+
1440
+ MORETTI stands at his grand windows overlooking the night,
1441
+ his hands clasped behind his back. His face is unreadable,
1442
+ but his EYES are alight with cold anticipation.
1443
+
1444
+ LIEUTENANT
1445
+ (entering)
1446
+ Sir, Archer's on the team's trail. But he's alone.
1447
+
1448
+ MORETTI
1449
+ (slyly)
1450
+ Let him play the hero. We'll swoop in at the end and pluck
1451
+ the fruits. Prepare the men... It's time to end this game.
1452
+
1453
+ His lieutenant nods sharply and exits.
1454
+ Moretti turns from the window, his silhouette a portrait of
1455
+ brooding intent.
1456
+
1457
+ CUT TO:
1458
+
1459
+ EXT. ABANDONED INDUSTRIAL DISTRICT - NIGHT
1460
+
1461
+ Archer approaches the warehouse door, pausing to listen.
1462
+ Somewhere inside is the key to unraveling the night's labyrinth of lies.
1463
+
1464
+ With a swift motion, he KICKS the door open and steps into the
1465
+ darkness beyond.
1466
+
1467
+ FADE OUT.
1468
+
1469
+ FADE IN:
1470
+
1471
+ INT. WAREHOUSE - CONTINUOUS
1472
+
1473
+ Silence pervades the cavernous space, punctuated only by the
1474
+ faint hum of the city outside.
1475
+
1476
+ Archer's FOOTSTEPS, heavy and calculated, reverberate against
1477
+ the concrete.
1478
+
1479
+ He sweeps the BEAM OF HIS FLASHLIGHT across the room,
1480
+ uncovering nothing but dust and the remnants of previous
1481
+ occupancy – overturned chairs, rusty machinery.
1482
+
1483
+ ARCHER
1484
+ (under his breath)
1485
+ They've got to be here.
1486
+
1487
+ Suddenly, a CRACKING SOUND echoes through the emptiness.
1488
+ Archer swings around, the Glock ready in his hand.
1489
+ An elongated shadow stretches across the floor.
1490
+
1491
+ Without warning, ANTHONY steps out from the shadows, his hands
1492
+ raised in mock surrender, a smirk playing on his lips.
1493
+
1494
+ ANTHONY
1495
+ Detective Archer, right?
1496
+ I was hoping we’d run into each other.
1497
+
1498
+ ARCHER
1499
+ (aiming the gun)
1500
+ You're a long way from the gala, Mr. Lambert.
1501
+ (tightens grip)
1502
+ Where's the rest of your crew?
1503
+
1504
+ Anthony’s smirk never wavers as he inches closer into the light,
1505
+ his charisma seemingly unperturbed by the tense situation.
1506
+
1507
+ ANTHONY
1508
+ Oh, you know, around.
1509
+ (strategic playfulness)
1510
+ But they're not the company you're looking for.
1511
+
1512
+ Archer's eyes narrow; he senses the game at play.
1513
+
1514
+ ARCHER
1515
+ (cuttingly)
1516
+ Don't test me. I’m not in the mood for games.
1517
+
1518
+ ANTHONY
1519
+ (calmly)
1520
+ Isn't that exactly why we're here?
1521
+ A game of cat and mouse, though I'm not sure who's
1522
+ who anymore.
1523
+
1524
+ Archer's grip on the Glock tightens. He motions with the barrel
1525
+ for Anthony to turn around and places handcuffs onto his wrists.
1526
+
1527
+ A look of genuine surprise crosses Anthony's face, replaced
1528
+ quickly by resignation.
1529
+
1530
+ CUT TO:
1531
+
1532
+ INT. LEON'S SECRET WORKSHOP - VAULT - SAME TIME
1533
+
1534
+ Leon stands back, admiring the new additions to their collection.
1535
+ Maya joins him, her expression a mix of awe and trepidation.
1536
+
1537
+ MAYA
1538
+ (whispers)
1539
+ Is it too good to be true?
1540
+
1541
+ LEON
1542
+ (quiet confidence)
1543
+ No. We've earned this.
1544
+ (glancing at Tess)
1545
+ Everything's in place?
1546
+
1547
+ Tess nods, her eyes locked on her SCREEN, full of lines of code
1548
+ and surveillance feeds, ensuring their ongoing invisibility.
1549
+
1550
+ TESS
1551
+ We're clear. Archer’s busy with Anthony.
1552
+ (beat)
1553
+ It's only a matter of time, though...
1554
+
1555
+ Leon nods, knowing the gravity of Tess's statement.
1556
+ They needed to vanish entirely – and soon.
1557
+
1558
+ LEON
1559
+ Make sure the escape routes are clear. We can't leave anything
1560
+ to chance.
1561
+
1562
+ MAYA
1563
+ And what about Anthony?
1564
+
1565
+ Leon turns, his eyes resolute, the weight of leadership apparent.
1566
+
1567
+ LEON
1568
+ He knows the risks. He’ll hold his own.
1569
+ We move in fifteen.
1570
+ (determined)
1571
+ Prepare for the next phase.
1572
+
1573
+ They exchange solemn nods, each member of the team retreating
1574
+ to their tasks, the silence once again enveloping the vault.
1575
+
1576
+ CUT TO:
1577
+
1578
+ EXT. WAREHOUSE - CONTINUOUS
1579
+
1580
+ Archer, holding his suspect at gunpoint, walks Anthony toward
1581
+ his sedan, powerfully illuminated by the streetlights.
1582
+
1583
+ Anthony goes willingly, still managing a brief, knowing glance
1584
+ back at the warehouse.
1585
+
1586
+ ARCHER
1587
+ (gruffly)
1588
+ You're going to talk, one way or another.
1589
+
1590
+ Anthony grins, locks eyes with Archer, his charm unbroken.
1591
+
1592
+ ANTHONY
1593
+ (disarming)
1594
+ Detective, I'm an open book.
1595
+
1596
+ Archer opens the rear door of the sedan. Before pushing Anthony
1597
+ into the car, he takes one last look at the warehouse, a
1598
+ feeling of unease settling in his stomach.
1599
+
1600
+ ARCHER
1601
+ (to himself)
1602
+ It's too easy.
1603
+
1604
+ The door slams shut, muffling Anthony's last comment.
1605
+ Archer casts a final, lingering glance at the warehouse before
1606
+ climbing into the driver's seat.
1607
+
1608
+ CUT TO:
1609
+
1610
+ INT. ARCHER'S SEDAN - MOVING - MOMENTS LATER
1611
+
1612
+ Archer drives in silence, the only sound the car's ENGINE and the
1613
+ occasional crackling of his RADIO.
1614
+
1615
+ Anthony sits in the back, humming a tune, seemingly at peace with
1616
+ the world.
1617
+
1618
+ ARCHER
1619
+ (glancing in the rearview mirror)
1620
+ Quietly confident for a man in your position.
1621
+
1622
+ ANTHONY
1623
+ (charming)
1624
+ Confidence and a plan go hand in hand, Detective.
1625
+
1626
+ ARCHER
1627
+ (voice low)
1628
+ We'll see about that.
1629
+
1630
+ Anthony stops humming, leans back, and closes his eyes, his
1631
+ silhouette faintly visible in the glow of passing streetlights.
1632
+
1633
+ FADE OUT.
1634
+
1635
+ THE END.
public/samples/scripts/The Goonies.txt ADDED
The diff for this file is too large to render. See raw diff
 
src/components/toolbars/top-menu/file/index.tsx CHANGED
@@ -101,6 +101,41 @@ export function TopMenuFile() {
101
  >
102
  Wasteland.clap
103
  </MenubarItem>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  <MenubarItem
105
  onClick={() => {
106
  openScreenplayUrl('/samples/scripts/Citizen Kane.txt')
@@ -118,15 +153,14 @@ export function TopMenuFile() {
118
  </MenubarSubContent>
119
  </MenubarSub>
120
  <MenubarSeparator />
121
- {/*
122
- <MenubarItem
123
- onClick={() => {
124
- saveVideoFile()
125
- }}>
126
- Export project to MP4
127
- </MenubarItem>
128
- <MenubarSeparator />
129
- */}
130
  <MenubarItem
131
  onClick={() => {
132
  saveZipFile()
 
101
  >
102
  Wasteland.clap
103
  </MenubarItem>
104
+ <MenubarItem
105
+ onClick={() => {
106
+ openScreenplayUrl('/samples/scripts/The Apery.txt')
107
+ }}
108
+ >
109
+ The Apery.txt [by GPT-4]
110
+ </MenubarItem>
111
+ <MenubarItem
112
+ onClick={() => {
113
+ openScreenplayUrl('/samples/scripts/Star Wars A New Hope.txt')
114
+ }}
115
+ >
116
+ Star Wars A New Hope.txt
117
+ </MenubarItem>
118
+ <MenubarItem
119
+ onClick={() => {
120
+ openScreenplayUrl('/samples/scripts/Rear Window.txt')
121
+ }}
122
+ >
123
+ Rear Window
124
+ </MenubarItem>
125
+ <MenubarItem
126
+ onClick={() => {
127
+ openScreenplayUrl('/samples/scripts/Raiders of the Lost Ark.txt')
128
+ }}
129
+ >
130
+ Raiders of the Lost Ark.txt
131
+ </MenubarItem>
132
+ <MenubarItem
133
+ onClick={() => {
134
+ openScreenplayUrl('/samples/scripts/The Goonies.txt')
135
+ }}
136
+ >
137
+ The Goonies.txt
138
+ </MenubarItem>
139
  <MenubarItem
140
  onClick={() => {
141
  openScreenplayUrl('/samples/scripts/Citizen Kane.txt')
 
153
  </MenubarSubContent>
154
  </MenubarSub>
155
  <MenubarSeparator />
156
+ <MenubarItem
157
+ onClick={() => {
158
+ saveVideoFile()
159
+ }}
160
+ >
161
+ Export project to MP4
162
+ </MenubarItem>
163
+ <MenubarSeparator />
 
164
  <MenubarItem
165
  onClick={() => {
166
  saveZipFile()
src/services/io/useIO.ts CHANGED
@@ -376,28 +376,82 @@ export const useIO = create<IOStore>((set, get) => ({
376
  const { saveAnyFile } = get()
377
  console.log(`rendering project using the free community server..`)
378
 
379
- const clap: ClapProject = useTimeline.getState().clap
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
 
381
- const segments: TimelineSegment[] = useTimeline.getState().segments
382
-
383
- // note: I didn't put it inside the clapper's own API,
384
- // because this is something a bit fragile
385
- // (it uses ffmpeg and puppeteer, sometimes it crashes etc)
386
- const result = await fetch(
387
- // TODO: put this into a variable
388
- // also rename this to so cool-sounding module
389
- `https://jbilcke-hf-ai-tube-clap-exporter.hf.space?f=mp4`,
390
- {
391
- method: 'POST',
392
- body: await serializeClap(clap),
393
  }
394
  )
395
 
396
- const videoBlob = await result.blob()
397
 
398
  const videoDataUrl = await blobToBase64DataUri(videoBlob)
399
 
400
- const alreadyAnEmbeddedFinalVideo = segments
401
  .filter(
402
  (s) =>
403
  s.category === ClapSegmentCategory.VIDEO &&
@@ -428,10 +482,6 @@ export const useIO = create<IOStore>((set, get) => ({
428
  )
429
  }
430
 
431
- console.log(
432
- `The free community server responded: ${result.status} ${result.statusText}`
433
- )
434
-
435
  saveAnyFile(videoBlob, 'my_project.mp4')
436
  },
437
 
@@ -466,6 +516,8 @@ export const useIO = create<IOStore>((set, get) => ({
466
  const videos: FFMPegVideoInput[] = []
467
  const audios: FFMPegAudioInput[] = []
468
 
 
 
469
  segments.forEach(
470
  ({
471
  segment,
@@ -486,25 +538,27 @@ export const useIO = create<IOStore>((set, get) => ({
486
  assetUrl = filePath
487
  assetSourceType = ClapAssetSource.PATH
488
 
489
- if (filePath.startsWith('video/')) {
490
- videos.push({
491
- data: base64DataUriToUint8Array(segment.assetUrl),
492
- startTimeInMs: segment.startTimeInMs,
493
- endTimeInMs: segment.endTimeInMs,
494
- durationInSecs: segment.assetDurationInMs / 1000,
495
- })
496
- }
497
-
498
- if (
499
- filePath.startsWith('music/') ||
500
- filePath.startsWith('dialogue/')
501
- ) {
502
- audios.push({
503
- data: base64DataUriToUint8Array(segment.assetUrl),
504
- startTimeInMs: segment.startTimeInMs,
505
- endTimeInMs: segment.endTimeInMs,
506
- durationInSecs: segment.assetDurationInMs / 1000,
507
- })
 
 
508
  }
509
  }
510
 
@@ -523,26 +577,28 @@ export const useIO = create<IOStore>((set, get) => ({
523
  }
524
  )
525
 
526
- const fullVideo = await createFullVideo(
527
- videos,
528
- audios,
529
- 1024,
530
- 576,
531
- timeline.totalDurationInMs,
532
- (progress, message) => {
533
- task.setProgress({
534
- message,
535
- value: progress * 0.9,
536
- })
537
- }
538
- )
539
-
540
- files['video/full.mp4'] = [
541
- // we don't compress assets since normally they already use
542
- // some form of compression (PNG, JPEG, MP3, MP4 etc..)
543
- fullVideo as Uint8Array,
544
- { level: 0 },
545
- ]
 
 
546
 
547
  fflate.zip(
548
  files,
 
376
  const { saveAnyFile } = get()
377
  console.log(`rendering project using the free community server..`)
378
 
379
+ const timeline: TimelineStore = useTimeline.getState()
380
+
381
+ const { clap, totalDurationInMs, segments: timelineSegments } = timeline
382
+
383
+ const task = useTasks.getState().add({
384
+ category: TaskCategory.EXPORT,
385
+ visibility: TaskVisibility.BLOCKER,
386
+ initialMessage: `Rendering the project to MP4..`,
387
+ successMessage: `Successfully exported the MP4 video!`,
388
+ value: 0,
389
+ })
390
+
391
+ const segments: ExportableSegment[] = timelineSegments
392
+ .map((segment, i) => formatSegmentForExport(segment, i))
393
+ .filter(({ isExportableToFile }) => isExportableToFile)
394
+
395
+ const videos: FFMPegVideoInput[] = []
396
+ const audios: FFMPegAudioInput[] = []
397
+
398
+ segments.forEach(
399
+ ({
400
+ segment,
401
+ prefix,
402
+ filePath,
403
+ assetUrl,
404
+ assetSourceType,
405
+ isExportableToFile,
406
+ }) => {
407
+ // we extract the base64 files
408
+ if (isExportableToFile) {
409
+ assetUrl = filePath
410
+ assetSourceType = ClapAssetSource.PATH
411
+
412
+ if (filePath.startsWith('video/')) {
413
+ videos.push({
414
+ data: base64DataUriToUint8Array(segment.assetUrl),
415
+ startTimeInMs: segment.startTimeInMs,
416
+ endTimeInMs: segment.endTimeInMs,
417
+ durationInSecs: segment.assetDurationInMs / 1000,
418
+ })
419
+ }
420
+
421
+ if (
422
+ filePath.startsWith('music/') ||
423
+ filePath.startsWith('dialogue/')
424
+ ) {
425
+ audios.push({
426
+ data: base64DataUriToUint8Array(segment.assetUrl),
427
+ startTimeInMs: segment.startTimeInMs,
428
+ endTimeInMs: segment.endTimeInMs,
429
+ durationInSecs: segment.assetDurationInMs / 1000,
430
+ })
431
+ }
432
+ }
433
+ }
434
+ )
435
 
436
+ const fullVideo = await createFullVideo(
437
+ videos,
438
+ audios,
439
+ 1024,
440
+ 576,
441
+ totalDurationInMs,
442
+ (progress, message) => {
443
+ task.setProgress({
444
+ message,
445
+ value: progress * 0.9,
446
+ })
 
447
  }
448
  )
449
 
450
+ const videoBlob = new Blob([fullVideo], { type: 'video/mp4' })
451
 
452
  const videoDataUrl = await blobToBase64DataUri(videoBlob)
453
 
454
+ const alreadyAnEmbeddedFinalVideo = timelineSegments
455
  .filter(
456
  (s) =>
457
  s.category === ClapSegmentCategory.VIDEO &&
 
482
  )
483
  }
484
 
 
 
 
 
485
  saveAnyFile(videoBlob, 'my_project.mp4')
486
  },
487
 
 
516
  const videos: FFMPegVideoInput[] = []
517
  const audios: FFMPegAudioInput[] = []
518
 
519
+ const includeFullVideo = false
520
+
521
  segments.forEach(
522
  ({
523
  segment,
 
538
  assetUrl = filePath
539
  assetSourceType = ClapAssetSource.PATH
540
 
541
+ if (includeFullVideo) {
542
+ if (filePath.startsWith('video/')) {
543
+ videos.push({
544
+ data: base64DataUriToUint8Array(segment.assetUrl),
545
+ startTimeInMs: segment.startTimeInMs,
546
+ endTimeInMs: segment.endTimeInMs,
547
+ durationInSecs: segment.assetDurationInMs / 1000,
548
+ })
549
+ }
550
+
551
+ if (
552
+ filePath.startsWith('music/') ||
553
+ filePath.startsWith('dialogue/')
554
+ ) {
555
+ audios.push({
556
+ data: base64DataUriToUint8Array(segment.assetUrl),
557
+ startTimeInMs: segment.startTimeInMs,
558
+ endTimeInMs: segment.endTimeInMs,
559
+ durationInSecs: segment.assetDurationInMs / 1000,
560
+ })
561
+ }
562
  }
563
  }
564
 
 
577
  }
578
  )
579
 
580
+ if (includeFullVideo) {
581
+ const fullVideo = await createFullVideo(
582
+ videos,
583
+ audios,
584
+ clap.meta.width,
585
+ clap.meta.height,
586
+ timeline.totalDurationInMs,
587
+ (progress, message) => {
588
+ task.setProgress({
589
+ message,
590
+ value: progress * 0.9,
591
+ })
592
+ }
593
+ )
594
+
595
+ files['video/full.mp4'] = [
596
+ // we don't compress assets since normally they already use
597
+ // some form of compression (PNG, JPEG, MP3, MP4 etc..)
598
+ fullVideo as Uint8Array,
599
+ { level: 0 },
600
+ ]
601
+ }
602
 
603
  fflate.zip(
604
  files,