Update demo video duration and enhance logo animation
Browse files- Updated the demo video duration from 82 seconds to 97 seconds in README.md.
- Adjusted the logo animation timing in record.py to ensure it holds until the dots settle.
- Enhanced the SVG logo animation with new keyframes and clip paths for improved visual effects.
- Updated service worker cache version from v19 to v21 for better asset management.
- scripts/demo_video/README.md +1 -1
- scripts/demo_video/record.py +7 -2
- static/logo-intro.svg +38 -9
- static/service-worker.js +1 -1
scripts/demo_video/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# Students' feature video
|
| 2 |
|
| 3 |
-
|
| 4 |
the path โ new words โ a spoken answer with a ื mistake, its tip, the retry โ a story โ streak and beads โ
|
| 5 |
daily practice โ verbs โ games (a round of the memory game) โ the logo.
|
| 6 |
|
|
|
|
| 1 |
# Students' feature video
|
| 2 |
|
| 3 |
+
A 97-second vertical (1080ร1920) walkthrough for Reels/TikTok/WhatsApp status, with Hebrew captions:
|
| 4 |
the path โ new words โ a spoken answer with a ื mistake, its tip, the retry โ a story โ streak and beads โ
|
| 5 |
daily practice โ verbs โ games (a round of the memory game) โ the logo.
|
| 6 |
|
scripts/demo_video/record.py
CHANGED
|
@@ -23,6 +23,7 @@ sys.path.insert(0, str(HERE))
|
|
| 23 |
from script import LINES
|
| 24 |
|
| 25 |
W, H, DPR, FPS = 432, 768, 2.5, 30 # 9:16 viewport -> 1080x1920 frames
|
|
|
|
| 26 |
|
| 27 |
|
| 28 |
def hold(text, sub):
|
|
@@ -208,9 +209,11 @@ async def run(url, takes, voice, out, music_gain, music_file, sound, keep_frames
|
|
| 208 |
await pg.goto(url, wait_until="networkidle")
|
| 209 |
await rec.start()
|
| 210 |
|
| 211 |
-
# 1 ยท opening: the logo animation
|
|
|
|
| 212 |
await wait(1200)
|
| 213 |
await line("intro"); await spoken(0.5)
|
|
|
|
| 214 |
await tap("#practiceBtn", 700)
|
| 215 |
await pg.evaluate("ME_PERMISSIONS=new Set(['practice.use','exercises.use','path.use','games.use','tutor.use'])")
|
| 216 |
if await pg.locator("#guideTipClose").is_visible():
|
|
@@ -319,9 +322,11 @@ async def run(url, takes, voice, out, music_gain, music_file, sound, keep_frames
|
|
| 319 |
await pg.evaluate("__demo.caption('')")
|
| 320 |
await pg.evaluate("""__demo.card(`<img src="/static/logo-intro.svg?v=${Date.now()}" alt="">
|
| 321 |
<h2>ืืืืื, ืืชืืืืื!</h2><p>ืคืืชืืื ืืช ืืืคืืืงืฆืื<br>ืืืชืจืืืื ืืื ืืงืืช ืืืื</p>`)""")
|
|
|
|
| 322 |
await wait(700)
|
| 323 |
await line("outro"); await spoken()
|
| 324 |
-
await
|
|
|
|
| 325 |
|
| 326 |
await rec.stop()
|
| 327 |
await wait(500) # the last sounds' data
|
|
|
|
| 23 |
from script import LINES
|
| 24 |
|
| 25 |
W, H, DPR, FPS = 432, 768, 2.5, 30 # 9:16 viewport -> 1080x1920 frames
|
| 26 |
+
LOGO_SECONDS = 7.4 # static/logo-intro.svg's animation, to the dots' last bounce
|
| 27 |
|
| 28 |
|
| 29 |
def hold(text, sub):
|
|
|
|
| 209 |
await pg.goto(url, wait_until="networkidle")
|
| 210 |
await rec.start()
|
| 211 |
|
| 212 |
+
# 1 ยท opening: the logo animation, held until its dots have bounced off the lameds and settled (~7.2s)
|
| 213 |
+
logo_start = time.monotonic()
|
| 214 |
await wait(1200)
|
| 215 |
await line("intro"); await spoken(0.5)
|
| 216 |
+
await asyncio.sleep(max(0.0, logo_start + LOGO_SECONDS - time.monotonic()))
|
| 217 |
await tap("#practiceBtn", 700)
|
| 218 |
await pg.evaluate("ME_PERMISSIONS=new Set(['practice.use','exercises.use','path.use','games.use','tutor.use'])")
|
| 219 |
if await pg.locator("#guideTipClose").is_visible():
|
|
|
|
| 322 |
await pg.evaluate("__demo.caption('')")
|
| 323 |
await pg.evaluate("""__demo.card(`<img src="/static/logo-intro.svg?v=${Date.now()}" alt="">
|
| 324 |
<h2>ืืืืื, ืืชืืืืื!</h2><p>ืคืืชืืื ืืช ืืืคืืืงืฆืื<br>ืืืชืจืืืื ืืื ืืงืืช ืืืื</p>`)""")
|
| 325 |
+
card_start = time.monotonic()
|
| 326 |
await wait(700)
|
| 327 |
await line("outro"); await spoken()
|
| 328 |
+
await asyncio.sleep(max(0.0, card_start + LOGO_SECONDS - time.monotonic()))
|
| 329 |
+
await wait(1200)
|
| 330 |
|
| 331 |
await rec.stop()
|
| 332 |
await wait(500) # the last sounds' data
|
static/logo-intro.svg
CHANGED
|
|
|
|
static/service-worker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
const CACHE = "ihki-shell-
|
| 2 |
const SHELL = [
|
| 3 |
"/static/manifest.webmanifest",
|
| 4 |
"/static/icons/icon-192.png?v=2",
|
|
|
|
| 1 |
+
const CACHE = "ihki-shell-v21";
|
| 2 |
const SHELL = [
|
| 3 |
"/static/manifest.webmanifest",
|
| 4 |
"/static/icons/icon-192.png?v=2",
|