diff --git a/public/template-media/CharacterStory-16x9-c1-loop.mp4 b/public/template-media/CharacterStory-16x9-c1-loop.mp4 new file mode 100644 index 0000000..a1a479a Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c1-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c10-loop.mp4 b/public/template-media/CharacterStory-16x9-c10-loop.mp4 new file mode 100644 index 0000000..d251238 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c10-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c11-loop.mp4 b/public/template-media/CharacterStory-16x9-c11-loop.mp4 new file mode 100644 index 0000000..22fb7b6 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c11-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c12-loop.mp4 b/public/template-media/CharacterStory-16x9-c12-loop.mp4 new file mode 100644 index 0000000..06fefa4 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c12-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c13-loop.mp4 b/public/template-media/CharacterStory-16x9-c13-loop.mp4 new file mode 100644 index 0000000..da90f02 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c13-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c2-loop.mp4 b/public/template-media/CharacterStory-16x9-c2-loop.mp4 new file mode 100644 index 0000000..72a8b5e Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c2-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c3-loop.mp4 b/public/template-media/CharacterStory-16x9-c3-loop.mp4 new file mode 100644 index 0000000..8377f36 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c3-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c4-loop.mp4 b/public/template-media/CharacterStory-16x9-c4-loop.mp4 new file mode 100644 index 0000000..27cc3d8 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c4-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c5-loop.mp4 b/public/template-media/CharacterStory-16x9-c5-loop.mp4 new file mode 100644 index 0000000..507a66f Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c5-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c6-loop.mp4 b/public/template-media/CharacterStory-16x9-c6-loop.mp4 new file mode 100644 index 0000000..2147ff4 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c6-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c7-loop.mp4 b/public/template-media/CharacterStory-16x9-c7-loop.mp4 new file mode 100644 index 0000000..a08e527 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c7-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c8-loop.mp4 b/public/template-media/CharacterStory-16x9-c8-loop.mp4 new file mode 100644 index 0000000..e0af251 Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c8-loop.mp4 differ diff --git a/public/template-media/CharacterStory-16x9-c9-loop.mp4 b/public/template-media/CharacterStory-16x9-c9-loop.mp4 new file mode 100644 index 0000000..82ac3ed Binary files /dev/null and b/public/template-media/CharacterStory-16x9-c9-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c1-loop.mp4 b/public/template-media/CharacterStory-1x1-c1-loop.mp4 new file mode 100644 index 0000000..5d3d119 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c1-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c10-loop.mp4 b/public/template-media/CharacterStory-1x1-c10-loop.mp4 new file mode 100644 index 0000000..60639d1 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c10-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c11-loop.mp4 b/public/template-media/CharacterStory-1x1-c11-loop.mp4 new file mode 100644 index 0000000..dd5454e Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c11-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c12-loop.mp4 b/public/template-media/CharacterStory-1x1-c12-loop.mp4 new file mode 100644 index 0000000..49f1890 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c12-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c13-loop.mp4 b/public/template-media/CharacterStory-1x1-c13-loop.mp4 new file mode 100644 index 0000000..8139ba8 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c13-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c2-loop.mp4 b/public/template-media/CharacterStory-1x1-c2-loop.mp4 new file mode 100644 index 0000000..7ddc91e Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c2-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c3-loop.mp4 b/public/template-media/CharacterStory-1x1-c3-loop.mp4 new file mode 100644 index 0000000..cb92a6a Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c3-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c4-loop.mp4 b/public/template-media/CharacterStory-1x1-c4-loop.mp4 new file mode 100644 index 0000000..78e1b21 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c4-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c5-loop.mp4 b/public/template-media/CharacterStory-1x1-c5-loop.mp4 new file mode 100644 index 0000000..3fea9af Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c5-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c6-loop.mp4 b/public/template-media/CharacterStory-1x1-c6-loop.mp4 new file mode 100644 index 0000000..75a621e Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c6-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c7-loop.mp4 b/public/template-media/CharacterStory-1x1-c7-loop.mp4 new file mode 100644 index 0000000..62e4511 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c7-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c8-loop.mp4 b/public/template-media/CharacterStory-1x1-c8-loop.mp4 new file mode 100644 index 0000000..69fee56 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c8-loop.mp4 differ diff --git a/public/template-media/CharacterStory-1x1-c9-loop.mp4 b/public/template-media/CharacterStory-1x1-c9-loop.mp4 new file mode 100644 index 0000000..9488b80 Binary files /dev/null and b/public/template-media/CharacterStory-1x1-c9-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c1-loop.mp4 b/public/template-media/CharacterStory-9x16-c1-loop.mp4 new file mode 100644 index 0000000..79852c5 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c1-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c10-loop.mp4 b/public/template-media/CharacterStory-9x16-c10-loop.mp4 new file mode 100644 index 0000000..156c2cb Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c10-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c11-loop.mp4 b/public/template-media/CharacterStory-9x16-c11-loop.mp4 new file mode 100644 index 0000000..0106bd7 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c11-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c12-loop.mp4 b/public/template-media/CharacterStory-9x16-c12-loop.mp4 new file mode 100644 index 0000000..114b8c7 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c12-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c13-loop.mp4 b/public/template-media/CharacterStory-9x16-c13-loop.mp4 new file mode 100644 index 0000000..9824c0a Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c13-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c2-loop.mp4 b/public/template-media/CharacterStory-9x16-c2-loop.mp4 new file mode 100644 index 0000000..fa66b85 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c2-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c3-loop.mp4 b/public/template-media/CharacterStory-9x16-c3-loop.mp4 new file mode 100644 index 0000000..b17f22b Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c3-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c4-loop.mp4 b/public/template-media/CharacterStory-9x16-c4-loop.mp4 new file mode 100644 index 0000000..197e62b Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c4-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c5-loop.mp4 b/public/template-media/CharacterStory-9x16-c5-loop.mp4 new file mode 100644 index 0000000..ca6541b Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c5-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c6-loop.mp4 b/public/template-media/CharacterStory-9x16-c6-loop.mp4 new file mode 100644 index 0000000..a1ec6be Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c6-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c7-loop.mp4 b/public/template-media/CharacterStory-9x16-c7-loop.mp4 new file mode 100644 index 0000000..a0bcfe6 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c7-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c8-loop.mp4 b/public/template-media/CharacterStory-9x16-c8-loop.mp4 new file mode 100644 index 0000000..4de95f3 Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c8-loop.mp4 differ diff --git a/public/template-media/CharacterStory-9x16-c9-loop.mp4 b/public/template-media/CharacterStory-9x16-c9-loop.mp4 new file mode 100644 index 0000000..4c8d70c Binary files /dev/null and b/public/template-media/CharacterStory-9x16-c9-loop.mp4 differ diff --git a/public/template-media/LogoMotion3D-16x9-loop.mp4 b/public/template-media/LogoMotion3D-16x9-loop.mp4 new file mode 100644 index 0000000..039afbe Binary files /dev/null and b/public/template-media/LogoMotion3D-16x9-loop.mp4 differ diff --git a/public/template-media/LogoMotion3D-1x1-loop.mp4 b/public/template-media/LogoMotion3D-1x1-loop.mp4 new file mode 100644 index 0000000..c9365bc Binary files /dev/null and b/public/template-media/LogoMotion3D-1x1-loop.mp4 differ diff --git a/public/template-media/LogoMotion3D-9x16-loop.mp4 b/public/template-media/LogoMotion3D-9x16-loop.mp4 new file mode 100644 index 0000000..cd9d4fe Binary files /dev/null and b/public/template-media/LogoMotion3D-9x16-loop.mp4 differ diff --git a/scripts/seed_remotion_templates.py b/scripts/seed_remotion_templates.py index c049599..212f720 100644 --- a/scripts/seed_remotion_templates.py +++ b/scripts/seed_remotion_templates.py @@ -101,6 +101,10 @@ TEXTCOLORS = { # the matching render, not the 16:9 cropped). Others reuse the single 16:9 preview. PERASPECT_VIDEO = {"AppShowcase3D", "CharacterStory", "LogoMotion3D"} +# Templates that ship a short ~1.5s LOOP video PER SCENE (scene.demo), so the studio +# scene cards play a looping preview. Others fall back to the full preview MP4. +LOOP_SCENES = {"CharacterStory", "LogoMotion3D"} + # Templates whose content is split across MANY scenes (key c1..cN), one editable # scene card per beat. value = scene count; texts are assigned 2-per-scene in order. MULTISCENE = {"CharacterStory": len(CS_BEATS)} @@ -143,18 +147,20 @@ for idx, (tid, slug, name, desc, dur, texts, (accent, sec, bg)) in enumerate(T): # one editable scene card per beat; 2 text fields (title+caption) each. for sc in range(1, nscenes + 1): skid = uid(f"s-{tid}-{asp}-{sc}") - scimg = f"{MINIO}/template-media/{tid}-{asp}-c{sc}.png" # per-scene rendered still + scimg = f"{MINIO}/template-media/{tid}-{asp}-c{sc}.png" # per-scene still + scdemo = f"{MINIO}/template-media/{tid}-{asp}-c{sc}-loop.mp4" if tid in LOOP_SCENES else pvideo out.append( - "INSERT INTO content.scenes (id,project_id,key,title,image,snapshot_url,scene_color_svg,default_duration_sec,sort) VALUES (" - f"{q(skid)},{q(pid)},{q('c'+str(sc))},{q('صحنه '+str(sc))},{q(scimg)},{q(scimg)},{q(swatch_svg([accent,sec,bg,txt]))},{SCENE_SECONDS},{sc-1});") + "INSERT INTO content.scenes (id,project_id,key,title,image,snapshot_url,demo,scene_color_svg,default_duration_sec,sort) VALUES (" + f"{q(skid)},{q(pid)},{q('c'+str(sc))},{q('صحنه '+str(sc))},{q(scimg)},{q(scimg)},{q(scdemo)},{q(swatch_svg([accent,sec,bg,txt]))},{SCENE_SECONDS},{sc-1});") for pos, (k, title, val) in enumerate(texts[(sc - 1) * 2: sc * 2]): out.append( "INSERT INTO content.scene_content_elements (id,scene_id,key,title,type,default_value,position_in_container,direction_layer_value) VALUES (" f"{q(uid(f'ce-{tid}-{asp}-{k}'))},{q(skid)},{q(k)},{q(title)},'Text',{q(val)},{pos},1);") else: + scdemo = f"{MINIO}/template-media/{tid}-{asp}-loop.mp4" if tid in LOOP_SCENES else pvideo out.append( - "INSERT INTO content.scenes (id,project_id,key,title,image,snapshot_url,scene_color_svg,default_duration_sec,sort) VALUES (" - f"{q(sid)},{q(pid)},'c1','صحنه ۱',{q(thumb)},{q(thumb)},{q(swatch_svg([accent,sec,bg,txt]))},{dur},0);") + "INSERT INTO content.scenes (id,project_id,key,title,image,snapshot_url,demo,scene_color_svg,default_duration_sec,sort) VALUES (" + f"{q(sid)},{q(pid)},'c1','صحنه ۱',{q(thumb)},{q(thumb)},{q(scdemo)},{q(swatch_svg([accent,sec,bg,txt]))},{dur},0);") for pos, (k, title, val) in enumerate(texts): out.append( "INSERT INTO content.scene_content_elements (id,scene_id,key,title,type,default_value,position_in_container,direction_layer_value) VALUES ("