Yassaman commited on
Commit
7e7d8c0
·
verified ·
1 Parent(s): f600a49

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +18 -0
  2. app.py +256 -0
  3. prompts.json +164 -0
  4. requirements.txt +2 -0
Dockerfile ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use Python 3.9
2
+ FROM python:3.9
3
+
4
+ # Set working directory
5
+ WORKDIR /code
6
+
7
+ # Copy requirements and install
8
+ COPY ./requirements.txt /code/requirements.txt
9
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
10
+
11
+ # Copy all files (videos, py, json) to the container
12
+ COPY . .
13
+
14
+ # Make sure folder permissions are correct
15
+ RUN chmod -R 777 /code
16
+
17
+ # Run the app using Gunicorn on port 7860 (Hugging Face default)
18
+ CMD ["gunicorn", "-b", "0.0.0.0:7860", "app:app"]
app.py ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+ import os
3
+ import re
4
+ from flask import Flask, render_template_string, send_from_directory
5
+
6
+ # --- CONFIGURATION ---
7
+
8
+ # Make sure these match your actual folder names exactly!
9
+ FOLDERS = {
10
+ 'baseline': 'baseline',
11
+ 'teacache': 'teacache',
12
+ 'magcache': 'magcache',
13
+ 'ours': 'ours'
14
+ }
15
+
16
+ PROMPT_FILE = 'prompts.json'
17
+
18
+ # --- LOGIC ---
19
+
20
+ app = Flask(__name__)
21
+ BASE_DIR = os.path.abspath(os.path.dirname(__file__))
22
+
23
+ def get_prompts():
24
+ path = os.path.join(BASE_DIR, PROMPT_FILE)
25
+ if not os.path.exists(path):
26
+ return []
27
+
28
+ with open(path, 'r', encoding='utf-8') as f:
29
+ try:
30
+ content = json.load(f)
31
+ if isinstance(content, list): return content
32
+ except:
33
+ f.seek(0)
34
+ lines = [line.strip() for line in f if line.strip()]
35
+ return lines
36
+
37
+ def find_file_by_id(folder, video_id):
38
+ dir_path = os.path.join(BASE_DIR, folder)
39
+ if not os.path.exists(dir_path): return None
40
+
41
+ for fname in os.listdir(dir_path):
42
+ if fname.startswith(video_id) and fname.lower().endswith('.mp4'):
43
+ return fname
44
+ return None
45
+
46
+ def build_tasks():
47
+ tasks = []
48
+ prompts = get_prompts()
49
+
50
+ baseline_path = os.path.join(BASE_DIR, FOLDERS['baseline'])
51
+ if not os.path.exists(baseline_path):
52
+ print("Baseline folder missing!")
53
+ return []
54
+
55
+ baseline_files = sorted([f for f in os.listdir(baseline_path) if f.lower().endswith('.mp4')])
56
+ id_regex = re.compile(r'^(\d{4})')
57
+
58
+ for i, b_file in enumerate(baseline_files):
59
+ match = id_regex.match(b_file)
60
+ if not match: continue
61
+
62
+ vid_id = match.group(1)
63
+ prompt_text = prompts[i] if i < len(prompts) else "(No prompt)"
64
+
65
+ tea_file = find_file_by_id(FOLDERS['teacache'], vid_id)
66
+ mag_file = find_file_by_id(FOLDERS['magcache'], vid_id)
67
+ our_file = find_file_by_id(FOLDERS['ours'], vid_id)
68
+
69
+ tasks.append({
70
+ "index": i + 1,
71
+ "id": vid_id,
72
+ "prompt": prompt_text,
73
+ "baseline": f"videos/{FOLDERS['baseline']}/{b_file}",
74
+ "teacache": f"videos/{FOLDERS['teacache']}/{tea_file}" if tea_file else "",
75
+ "magcache": f"videos/{FOLDERS['magcache']}/{mag_file}" if mag_file else "",
76
+ "ours": f"videos/{FOLDERS['ours']}/{our_file}" if our_file else ""
77
+ })
78
+
79
+ print(f"Loaded {len(tasks)} videos.")
80
+ return tasks
81
+
82
+ TASKS = build_tasks()
83
+
84
+ # --- HTML TEMPLATE ---
85
+
86
+ HTML = """
87
+ <!DOCTYPE html>
88
+ <html lang="en">
89
+ <head>
90
+ <meta charset="UTF-8">
91
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
92
+ <title>2x2 Visualizer</title>
93
+ <script src="https://cdn.tailwindcss.com"></script>
94
+ <style>
95
+ body { background-color: #0f172a; color: #e2e8f0; font-family: sans-serif; }
96
+
97
+ /* Darker theme to make videos pop */
98
+ .video-box {
99
+ background: #1e293b;
100
+ padding: 0.5rem;
101
+ border-radius: 0.5rem;
102
+ height: 100%;
103
+ display: flex;
104
+ flex-direction: column;
105
+ }
106
+
107
+ video {
108
+ width: 100%;
109
+ height: auto;
110
+ border-radius: 0.25rem;
111
+ background: #000;
112
+ flex-grow: 1;
113
+ }
114
+
115
+ .label {
116
+ text-align: center;
117
+ font-weight: bold;
118
+ font-size: 1rem;
119
+ margin-bottom: 0.5rem;
120
+ color: #94a3b8;
121
+ text-transform: uppercase;
122
+ letter-spacing: 0.05em;
123
+ }
124
+
125
+ /* Highlight 'Ours' */
126
+ .highlight { border: 2px solid #3b82f6; background: #1e3a8a; }
127
+ .highlight .label { color: #60a5fa; }
128
+
129
+ .prompt-box {
130
+ background: #1e293b;
131
+ border-bottom: 1px solid #334155;
132
+ padding: 1rem;
133
+ position: sticky;
134
+ top: 0;
135
+ z-index: 50;
136
+ }
137
+ </style>
138
+ </head>
139
+ <body class="h-screen flex flex-col overflow-hidden">
140
+
141
+ <div class="prompt-box flex flex-col md:flex-row gap-4 items-center flex-none shadow-lg">
142
+ <div class="flex-none w-full md:w-48 space-y-2">
143
+ <div class="flex justify-between items-center text-xs text-gray-400 font-mono">
144
+ <span>ID: <span id="vid-id" class="text-white">--</span></span>
145
+ <span><span id="idx" class="text-white">0</span> / <span id="total">0</span></span>
146
+ </div>
147
+ <div class="flex gap-2">
148
+ <button onclick="move(-1)" class="flex-1 bg-gray-700 hover:bg-gray-600 text-white py-2 rounded font-bold text-sm transition">Prev</button>
149
+ <button onclick="move(1)" class="flex-1 bg-blue-600 hover:bg-blue-500 text-white py-2 rounded font-bold text-sm transition">Next</button>
150
+ </div>
151
+ </div>
152
+
153
+ <div class="flex-grow overflow-y-auto max-h-20 w-full">
154
+ <p id="prompt-text" class="text-sm md:text-lg text-gray-200 leading-snug font-light">Loading...</p>
155
+ </div>
156
+ </div>
157
+
158
+ <div class="flex-grow overflow-y-auto p-4">
159
+ <div class="w-full h-full max-w-[1920px] mx-auto">
160
+
161
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4 h-full">
162
+
163
+ <div class="video-box">
164
+ <div class="label">Baseline</div>
165
+ <video id="v-baseline" controls loop muted playsinline></video>
166
+ </div>
167
+
168
+ <div class="video-box">
169
+ <div class="label">TeaCache</div>
170
+ <video id="v-teacache" controls loop muted playsinline></video>
171
+ </div>
172
+
173
+ <div class="video-box">
174
+ <div class="label">MagCache</div>
175
+ <video id="v-magcache" controls loop muted playsinline></video>
176
+ </div>
177
+
178
+ <div class="video-box highlight">
179
+ <div class="label">Ours</div>
180
+ <video id="v-ours" controls loop muted playsinline></video>
181
+ </div>
182
+
183
+ </div>
184
+ </div>
185
+ </div>
186
+
187
+ <script>
188
+ const tasks = {{ tasks_json | safe }};
189
+ let current = 0;
190
+
191
+ const els = {
192
+ prompt: document.getElementById('prompt-text'),
193
+ id: document.getElementById('vid-id'),
194
+ idx: document.getElementById('idx'),
195
+ total: document.getElementById('total'),
196
+ v1: document.getElementById('v-baseline'),
197
+ v2: document.getElementById('v-teacache'),
198
+ v3: document.getElementById('v-magcache'),
199
+ v4: document.getElementById('v-ours')
200
+ };
201
+
202
+ els.total.innerText = tasks.length;
203
+
204
+ function loadTask(index) {
205
+ if (tasks.length === 0) return;
206
+
207
+ if (index < 0) index = tasks.length - 1;
208
+ if (index >= tasks.length) index = 0;
209
+ current = index;
210
+
211
+ const t = tasks[current];
212
+
213
+ els.prompt.innerText = t.prompt;
214
+ els.id.innerText = t.id;
215
+ els.idx.innerText = t.index;
216
+
217
+ els.v1.src = t.baseline;
218
+ els.v2.src = t.teacache;
219
+ els.v3.src = t.magcache;
220
+ els.v4.src = t.ours;
221
+
222
+ [els.v1, els.v2, els.v3, els.v4].forEach(v => {
223
+ if(v.src) {
224
+ v.currentTime = 0;
225
+ v.play().catch(e => {});
226
+ }
227
+ });
228
+ }
229
+
230
+ function move(dir) { loadTask(current + dir); }
231
+
232
+ document.addEventListener('keydown', e => {
233
+ if (e.key === "ArrowLeft") move(-1);
234
+ if (e.key === "ArrowRight") move(1);
235
+ });
236
+
237
+ if (tasks.length > 0) loadTask(0);
238
+ else els.prompt.innerText = "No tasks found. Check console.";
239
+ </script>
240
+ </body>
241
+ </html>
242
+ """
243
+
244
+ @app.route('/')
245
+ def home():
246
+ return render_template_string(HTML, tasks_json=json.dumps(TASKS))
247
+
248
+ @app.route('/videos/<folder>/<path:filename>')
249
+ def serve_file(folder, filename):
250
+ if folder in FOLDERS:
251
+ return send_from_directory(os.path.join(BASE_DIR, FOLDERS[folder]), filename)
252
+ return "Error", 404
253
+
254
+ if __name__ == '__main__':
255
+ print("Starting server...")
256
+ app.run(port=5001, debug=True)
prompts.json ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ A car driving in a highway and passing a cross road.
2
+ A young girl with extraordinary musical talent has never been able to produce a sound. On the first day, she hears an old man playing ancient tunes in the market, feeling her soul deeply moved. The next day, the old man gives her a silver flute and tells her that it will allow her to express the voice deep within her. On the third day, she sits by a stream playing the flute, and the notes flow like water, causing the flowers around her to bloom. On the fourth day, she feels a strange power as her music seems to change people’s emotions, calming them down. On the fifth day, when she plays the final tune, she herself emits a sound, realizing that she has always sung with her soul, and the notes were her true language.
3
+ Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage.
4
+ Summer beach vacation style, a white cat wearing sunglasses sits on a surfboard. The fluffy-furred feline gazes directly at the camera with a relaxed expression. Blurred beach scenery forms the background featuring crystal-clear waters, distant green hills, and a blue sky dotted with white clouds. The cat assumes a naturally relaxed posture, as if savoring the sea breeze and warm sunlight. A close-up shot highlights the feline's intricate details and the refreshing atmosphere of the seaside.
5
+ A cat walks on the grass, realistic style.
6
+ A cat wearing sunglasses.
7
+ A dog playing with a blue ball in the park.
8
+ A cat walks on the grass, realistic style.
9
+ Woman during a sunset on a rooftop, Silhouette of a woman standing on top of a city, while raising her arms to the air, with the sunset sun just ahead.
10
+ Rancher smoking at sunset, Person wearing a cowboy hat and denim jacket sits on a wooden fence smoking a cigarette, silhouetted in front of the sun.
11
+ Woman in an infinity pool at sunset, Cinemagraph of the silhouette of a woman standing and palm trees and umbrellas in an infinity pool at sunset.
12
+ Aerial landscape around a highway at sunset, Slow overflight over a long straight road with cars, which crosses an immense forest with abundant trees and vegetation, in a view of the sunset in the distant mountains.
13
+ two cats playing with each other on a stage, cartoon style.
14
+ two dogs playing with each other on a stage, cartoon style.
15
+ A street photographer rapidly adjusts their camera settings to capture a fleeting moment of joy in a passing crowd.
16
+ An intense argument between two people escalating quickly, involving sharp gestures and shifting body language.
17
+ A professional dancer executes a gravity-defying leap followed by a perfectly controlled landing.
18
+ A close-up of a human face transitioning from deep sleep to sudden, wide-eyed terror.
19
+ A person meticulously attempts to tie a complex, tangled knot under high-pressure conditions.
20
+ A chef rapidly chops vegetables with incredible speed and precision, using a large, sharp knife.
21
+ A continuous shot of a person running a full marathon, showing their gradual exhaustion and determination.
22
+ A mother and child playing catch, with the child misjudging the throw and stumbling in the grass.
23
+ A detailed shot of a musician's fingers flawlessly playing a complex piece on a piano keyboard.
24
+ A mime performing a detailed pantomime of struggling against a strong, invisible wind.
25
+ A sudden reaction: a group of friends laughing uncontrollably after hearing a surprising joke.
26
+ A person struggling to lift a heavy box, showing the strain and wobble in their muscles.
27
+ A highly skilled surgeon performing a delicate procedure with steady, focused hand movements.
28
+ A person attempting to juggle five objects, with one object occasionally slipping and being recovered mid-air.
29
+ An emotional embrace between two long-lost friends, involving rapid changes in facial expression.
30
+ A bartender fluidly mixing and pouring multiple cocktails simultaneously with flair.
31
+ A person is startled by a noise in a dark room, spinning around quickly, light flashing across their face.
32
+ A crowd of fans erupts in cheers and synchronized celebration after a winning goal in a stadium.
33
+ A close-up of a human artist rapidly sketching a detailed portrait with charcoal and quick strokes.
34
+ A person performing a backflip off a high diving board, twisting and entering the water cleanly.
35
+ A rapid sequence of a human learning a new physical skill, moving from awkward attempts to mastery.
36
+ A person experiencing extreme cold, shivering violently and rubbing their hands together for warmth.
37
+ A tense moment where a poker player slowly reveals their cards, showing subtle tells and anxiety.
38
+ A detailed shot of a professional archer drawing, holding, and releasing an arrow with flawless form.
39
+ A group of children having a wild pillow fight, with feathers flying and chaotic movement.
40
+ A person desperately trying to open a jammed door, pulling and twisting the handle with force.
41
+ A slow-motion sequence of a runner crossing the finish line, pushing their body to the absolute limit.
42
+ An elderly person gently struggling to button a small coat button with arthritic hands.
43
+ A close-up of a human eye shedding a single, perfect tear that slowly rolls down the cheek.
44
+ A person receiving a shocking piece of news, going through denial, anger, and finally acceptance.
45
+ A martial artist performing a complex, fast-paced Kata with powerful strikes and quick stances.
46
+ A human quickly assembling a complicated piece of flat-pack furniture, showing moments of confusion and clarity.
47
+ A sequence of a person giving CPR, demonstrating realistic pressure and rhythm.
48
+ A crowd performing a wave at a stadium, with individual participants moving up and down seamlessly.
49
+ A person falling gracefully and catching themselves just before hitting the ground.
50
+ A detailed shot of a tattoo artist's needle moving rapidly and precisely across the skin.
51
+ A theatrical scene where a human whispers a secret to another, who instantly reacts with gasping shock.
52
+ A group of hikers crossing a difficult, unstable rope bridge high above a canyon.
53
+ A street magician manipulating a deck of cards with blindingly fast shuffles and flourishes.
54
+ A close-up of a person biting into a very sour lemon, showing the puckered reaction.
55
+ A person trying to hold back laughter during a formal, serious meeting, subtly shaking.
56
+ A choreographed fight scene where two characters exchange rapid, block-and-strike movements.
57
+ A person climbing a vertical rock face, searching for handholds and securing their position.
58
+ A waiter carrying a massive, unstable stack of plates across a crowded room without dropping any.
59
+ A detailed shot of a person quickly reading a complex document, their eyes rapidly scanning lines of text.
60
+ A person playing a virtual reality game, their body reacting realistically to unseen digital events.
61
+ A rapid transition of a person's hairstyle being cut and styled into a completely new look.
62
+ A human interacting with a complex hologram, swiping and manipulating 3D data in the air.
63
+ A person attempting to extinguish a small fire with a blanket, showing panicked but effective movements.
64
+ A group of dancers performing a synchronized routine in perfect, fluid harmony.
65
+ A pedestrian suddenly steps into a crosswalk, and an autonomous vehicle smoothly brakes to a halt.
66
+ A delivery robot navigates a crowded city sidewalk, skillfully avoiding multiple human pedestrians.
67
+ A human driver in a traditional car attempts to merge into heavy traffic while an autonomous car maintains its lane.
68
+ An autonomous shuttle picks up and drops off passengers at a busy airport terminal, interacting with luggage carts.
69
+ A child chases a ball into the street, and both a human-driven car and an autonomous car react simultaneously.
70
+ A human cyclist swerves to avoid a pothole, causing an autonomous vehicle behind them to adjust its path.
71
+ A driverless car performs parallel parking on a bustling street, watched by curious onlookers.
72
+ A human flags down an autonomous taxi, which then pulls over and waits for them to enter.
73
+ A sudden torrential downpour begins, affecting visibility for both human and autonomous vehicles on a highway.
74
+ An autonomous vehicle navigates a construction zone, carefully avoiding workers and moving machinery.
75
+ A human street performer is juggling fire at an intersection, and an autonomous car slows down to pass.
76
+ A car with a human driver aggressively cuts off an autonomous vehicle, which calmly maintains its distance.
77
+ A group of friends interacts with the touchscreen interface inside a futuristic autonomous car while it drives.
78
+ An autonomous delivery drone descends to drop off a package to a person waiting on their doorstep.
79
+ A human driver gives a thumbs-up to an autonomous car that successfully yielded for them at an intersection.
80
+ A dense fog rolls in, challenging the sensors of an autonomous truck as it pulls a heavy load.
81
+ An autonomous vehicle assists a human in changing a flat tire on the side of a busy road.
82
+ A driverless car drops off a passenger at a drive-through restaurant, and the human collects their order.
83
+ A human-driven motorcycle weaves through traffic, and an autonomous car adjusts its speed and spacing.
84
+ A person riding an electric scooter quickly crosses in front of an autonomous vehicle.
85
+ A snowstorm hits, covering the road in ice and snow, and autonomous vehicles continue to navigate cautiously.
86
+ An autonomous bus picks up a group of elderly passengers, carefully deploying a ramp for accessibility.
87
+ A human jogger overtakes a slow-moving autonomous cleaning robot on a park pathway.
88
+ A human passenger falls asleep in a fully autonomous car, which continues to drive safely through varying conditions.
89
+ An autonomous vehicle encounters a fallen tree blocking the road and automatically reroutes.
90
+ A police officer directs traffic at a busy intersection, and both human and autonomous cars follow their signals.
91
+ A human driver reacts with frustration to a perceived error by an autonomous vehicle.
92
+ An autonomous street sweeper navigates a city street, cleaning around parked cars and pedestrians.
93
+ A group of tourists takes selfies with an autonomous shuttle passing by a famous landmark.
94
+ A human driver changes lanes without signaling, and an autonomous car reacts with a slight swerve.
95
+ An autonomous farming tractor cultivates a field while a farmer watches from the side.
96
+ A sudden gust of wind blows debris onto the road, and an autonomous car swerves to avoid it.
97
+ A human family is having a picnic in a park, and an autonomous delivery drone flies overhead.
98
+ An autonomous valet parking system parks a car in a multi-story garage without human intervention.
99
+ A human crossing guard stops traffic, allowing children to cross, while an autonomous car waits patiently.
100
+ A low-light scenario where streetlights flicker, and autonomous vehicles rely on advanced sensors.
101
+ A human on a bicycle signals a turn, and an autonomous car accurately predicts their movement.
102
+ A high-speed chase where an autonomous police vehicle pursues a human-driven getaway car.
103
+ An autonomous vehicle detects a sick person on the sidewalk and pulls over to offer assistance.
104
+ A human driver accidentally veers into the lane of an autonomous car, which safely avoids a collision.
105
+ An autonomous robot dog walks alongside a human owner in a bustling urban environment.
106
+ A sudden tire blowout on a human-driven car, and a nearby autonomous vehicle provides assistance.
107
+ A human mechanic performs diagnostics on an autonomous vehicle, interacting with its internal systems.
108
+ An autonomous vehicle drives through a tunnel where GPS signals are lost, relying on other sensors.
109
+ A human-operated forklift loads cargo onto an autonomous truck in a busy warehouse.
110
+ A street vendor sets up their stall, causing an autonomous vehicle to slightly alter its route.
111
+ A human waves to an autonomous car as it passes, acknowledging its presence.
112
+ An autonomous vehicle detects an animal running into the road and brakes safely.
113
+ A human tests the emergency override system of an autonomous car during a simulated critical event.
114
+ An autonomous snowplow clears a road during a heavy snowfall, navigating around parked cars and pedestrians.
115
+ A grand, ornate chandelier slowly detaches from the ceiling, swinging precariously before crashing dramatically onto a polished marble floor.
116
+ A dense forest undergoes a rapid seasonal change from vibrant autumn colors to a stark, snow-covered winter landscape.
117
+ A futuristic city skyline is suddenly engulfed by a rapidly expanding swarm of bioluminescent drones, forming shifting patterns.
118
+ A historical battlefield comes to life with hundreds of soldiers engaged in close-quarters combat, dust and smoke filling the air.
119
+ A delicate sandcastle on a beach is slowly eroded by the incoming tide, its intricate details dissolving into the waves.
120
+ A complex Rube Goldberg machine activates, with each elaborate step triggering the next in a fluid, continuous motion.
121
+ An ancient stone statue slowly cracks and crumbles, revealing a vibrant, glowing energy source within.
122
+ A powerful tornado tears through a suburban neighborhood, lifting houses and debris into the churning vortex.
123
+ A detailed underwater scene where a school of fish swims in perfect synchronicity, reacting to a passing shark.
124
+ A barren desert landscape is rapidly transformed by a sudden, intense flash flood, carving new channels.
125
+ A crowded train station experiences a sudden blackout, plunging commuters into darkness before emergency lights flicker on.
126
+ A magician performs a levitation trick, with a human subject slowly rising into the air, defying gravity.
127
+ A controlled demolition of a large building, showing the structure collapsing inwards with realistic dust and debris.
128
+ A magnificent fireworks display illuminates a night sky over a tranquil lake, with vibrant reflections on the water.
129
+ A detailed diorama of a miniature town is brought to life, with tiny cars moving and minuscule people walking.
130
+ A calm ocean surface is suddenly disturbed by a massive whale breaching and splashing back down.
131
+ A close-up of a complex clockwork mechanism where all gears, springs, and levers are in precise, constant motion.
132
+ A person walking through a field of tall grass, which sways realistically with each step and passing breeze.
133
+ A vibrant coral reef ecosystem where various fish, anemones, and other marine life interact in a dynamic dance.
134
+ A sudden volcanic eruption spews molten lava and ash into the sky, flowing down the mountain.
135
+ A high-speed pursuit through narrow city streets, with vehicles swerving, near-misses, and dynamic camera angles.
136
+ A detailed model ship in a bottle is hit by a sudden, miniature storm, with tiny waves rocking the vessel.
137
+ A time-lapse of a massive ice glacier calving, with huge chunks of ice breaking off and falling into the sea.
138
+ A grand theatrical stage where props and backdrops shift and transform seamlessly between acts.
139
+ A group of parkour athletes navigates a complex urban environment, leaping and climbing with incredible agility.
140
+ A close-up of a delicate spiderweb catching dew drops, which then shimmer and slide down the strands.
141
+ A massive swarm of locusts descends upon a field of crops, devouring everything in its path.
142
+ A slow-motion shot of colorful paint being mixed and swirled together, creating intricate, ephemeral patterns.
143
+ A futuristic factory floor where robotic arms assemble complex machinery with precision and speed.
144
+ A serene garden pond suddenly comes alive with a multitude of frogs leaping and birds splashing.
145
+ A detailed shot of a human hand manipulating a complex puzzle cube at high speed.
146
+ A powerful waterfall with mist rising, and a lone figure standing at its base, seemingly unfazed.
147
+ A crowded marketplace where vendors are selling goods and people are haggling, creating a bustling atmosphere.
148
+ A close-up of a bonfire, with flames dancing, sparks flying, and logs slowly crumbling into embers.
149
+ A medieval siege where a battering ram repeatedly strikes a castle gate, causing splinters and cracks.
150
+ A rapid change in weather from bright sunshine to a dark, stormy sky with lightning flashes.
151
+ A group of acrobats performing a complex routine, with fluid movements and intricate formations.
152
+ A detailed shot of water droplets rolling off a hydrophobic surface, coalescing and moving independently.
153
+ A subterranean cave system with glowing crystals and underground rivers, constantly shifting and revealing new paths.
154
+ A flock of pigeons suddenly takes flight from a city square, scattering in all directions.
155
+ A large crowd at a music concert reacting dynamically to the rhythm of the performance.
156
+ A close-up of a flower blooming in fast-motion, its petals unfurling in exquisite detail.
157
+ A rapid transition from an arid desert to a lush, green oasis appearing as if by magic.
158
+ A group of children playing an intense game of tag in a park, weaving between trees and playground equipment.
159
+ A detailed interior of a spaceship during a sudden emergency, with alarms blaring and systems flickering.
160
+ A close-up of a waterfall where individual water molecules can be seen cascading over rocks.
161
+ A detailed shot of a blacksmith hammering glowing hot metal, with sparks flying and steam rising.
162
+ A slow-motion explosion of a colorful piñata, releasing candy and confetti into the air.
163
+ A serene forest clearing where a deer grazes peacefully, but its ears constantly twitch, alert to danger.
164
+ A massive school of fish forms intricate, dynamic shapes in the ocean, resembling a living sculpture.
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ flask
2
+ gunicorn