+
    V¤–jÌ  ã                   óB  € R t ^ RIt^ RIt^ RIt]P                  P                  ]P                  P                  ]4      4      t]P                  P                  ]R4      t
]P                  P                  ]
RR4      t. ROtRtR tR tR tR	 t^ RIt^ RItR
 tR tR tR# )uí  
AI æ¼«å‰§ Â· ç”»å¸ƒ <-> manju åˆ†é•œæ¡¥æŽ¥
====================================
æŠŠ aicomic-canvas.html çš„åœºæ™¯å�¡/è§’è‰²å�¡è½¬æ�¢ä¸º manju/build.py éœ€è¦�çš„
script/shots.jsonï¼Œå¹¶å¤�ç”¨ç”»å¸ƒä¸Šå·²ç»�ã€ŒðŸŽ¨ ç”Ÿå›¾ã€�å¾—åˆ°çš„å›¾ç‰‡ URLï¼Œ
è®©ä¸¤ä¸ªé¡¹ç›®å�ˆå¹¶æˆ�ä¸€æ�¡é¾™ï¼šç”»å¸ƒè§„åˆ’ -> ä¸€é”®å¯¼å‡º -> manju pipeline å‡ºç‰‡ã€‚

ç”¨æ³•ï¼ˆä¸€èˆ¬ç”± aicomic-server.py è°ƒç”¨ï¼‰:
    import aicomic_bridge
    shots = aicomic_bridge.export_shots(cards)   # å†™ manju/script/shots.json
NÚmanjuÚscriptz
shots.jsonÚzoom_inc                óà   € T ;'       g    RP                  4       P                  4       pV'       g   \        # \         F)  w  r#V F  pVP                  4       V9   g   K  Vu u # 	  K+  	  \        # )u    ä¸­æ–‡è¿�é•œ -> manju motion keyÚ )ÚstripÚlowerÚDEFAULT_MOTIONÚ
MOTION_MAP)ÚmoveÚmÚkeysÚvalÚks   &    Úaicomic_bridge.pyÚ
map_motionr   %   sX   € à	�ˆ�×ÑÓ×"Ñ"Ó$€AßÜÐß‰	ˆÛˆAØ�w‰w‹y˜AŽ~Ø”
ó ñ  ô Ðó    c                ó~   € V'       d   \        V4      # \        R \        V 4       4       4      p^dVR,          ,           # )uF   å�Œä¸€å�¡ç‰‡æ¯�æ¬¡å¯¼å‡º seed ç¨³å®šï¼›æ—  seed æ—¶ç”±å�¡ç‰‡ id æ´¾ç”Ÿc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5i©N)Úord)Ú.0Úchs   & r   Ú	<genexpr>Ú_stable_seed.<locals>.<genexpr>5   s   é € Ð+™l˜ŒC��GˆG›lùs   ‚i » )ÚintÚsumÚstr)Úcard_idÚexistingÚss   && r   Ú_stable_seedr!   1   s2   € çÜ�8‹}ÐÜÑ+œc 'œlÓ+Ó+€AØ�!�f•*ÕÐr   c                óÆ  € . pV '       g   V# V Uu. uF  q3'       g   K  VNK  	  ppV P                  4        EF   pVP                  4       pV'       g   K  RpTp\        P                  ! RV\        P                  4      p	V	'       dQ   V	P                  ^4      P                  4       p
V	P                  ^4      P                  4       pV
R
9   d   RpMW¤9   d   T
pVf   V F  pV'       g   K  W69   g   K  Tp M	  Vf   RV9   d   RMRpV'       g   KÚ  \        P                  ! RRVP                  4       4      pV'       g   EK  VP                  RVR	V/4       EK#  	  V# u upi )u  æŠŠå�°è¯�æ–‡æœ¬è§£æž�æˆ� [{speaker, text}]ã€‚

æ”¯æŒ�çš„å†™æ³•:
    æ—�ç™½ï¼šxxxxx
    èµµé“�ï¼šã€Œæ–°äººï¼Ÿã€�
    å�¶é�’ï¼šä»€ä¹ˆä¿®æ­¦ä¸–ç•Œï¼Ÿ
speaker ä¼˜å…ˆå�–ã€Œå��å­—ï¼šã€�å‰�ç¼€ï¼›å…¶æ¬¡æŒ‰è¡Œå†…å‡ºçŽ°çš„è§’è‰²å��ï¼›å�«ã€Œç³»ç»Ÿã€�å�– systemï¼›å�¦åˆ™æ—�ç™½ã€‚
Nu   ^([^ï¼š:]{1,16})[ï¼š:]\s*(.*)$Únarratoru   ç³»ç»ŸÚsystemu   ^[ã€Œâ€œã€Ž](.*)[ã€�â€�ã€�]$z\1ÚspeakerÚtext)u   æ—�ç™½u	   ç”»å¤–éŸ³u	   æ—�ç™½éŸ³u   ç‹¬ç™½u   å­—å¹•)Ú
splitlinesr   ÚreÚmatchÚSÚgroupÚsubÚappend)r&   Ú
char_namesÚoutÚnÚnamesÚrawÚliner%   Úbodyr   Úprefixs   &&         r   Úparse_linesr6   9   s-  € ð €CßØˆ
Ù"Ó(™
�1£a�QˆQ™
€EÐ(Ø�‰× ˆØ�y‰y‹{ˆßÙØˆØˆÜ�HŠHÐ6¸¼b¿d¹dÓCˆßØ—W‘W˜Q“Z×%Ñ%Ó'ˆFØ—7‘7˜1“:×#Ñ#Ó%ˆDØÐQÔQØ$‘Ø”Ø �ØŠ?Û�ß‘1˜žØ�GÙñ ð Š?Ø#+¨tÔ#3‘h¸*ˆGßÙä�vŠvÐ5°u¸d¿j¹j»lÓKˆßŠ4Ø�J‰J˜	 7¨F°DÐ9×:ñ5 !ð6 €Jùò9 )s
   ‘	EŸEc                ó€  € V  Uu. uF  qP                  R4      R8X  g   K  VNK  	  ppV  Uu. uF  qP                  R4      R8X  g   K  VNK  	  ppV Uu/ uF%  qR,          VP                  R4      ;'       g    / bK'  	  ppVP                  4        Uu. uF-  qUP                  R4      '       g   K  VP                  RR4      NK/  	  pp. p\        V^R7       EFÍ  w  r�VP                  R4      ;'       g    / p. p	VP                  R	4      ;'       g    .  F¬  p
VP                  V
4      pV'       g   K  \        VP                  R4      ;'       g    R4      .pR# F<  pVP                  V4      '       g   K  VP	                  \        W½,          4      4       K>  	  V	P	                  R
P                  R V 4       4      4       K®  	  . pVP                  R4      '       d)   VP	                  R\        VR,          4      ,           4       VP                  R4      '       d)   VP	                  R\        VR,          4      ,           4       V	'       d(   VP	                  RRP                  V	4      ,           4       R
P                  V4      ;'       g    Rp\        VP                  RR4      V4      pV'       g!   RRRVP                  R4      ;'       g    R/.pVP                  R4      ;'       g    RpVP                  R4      '       d   TMRpTP	                  RTRVP                  R4      ;'       g#    VP                  R4      ;'       g
    RV,          R,          RVRVR\        VP                  R4      4      R. R \        VR,          VP                  R 4      4      R!. R"V/	4       EKÐ  	  V# u upi u upi u upi u upi )$u"   ç”»å¸ƒ cards -> manju shots åˆ—è¡¨ÚtypeÚsceneÚcharÚidÚdataÚnamer   )ÚstartÚcharIdsu   ï¼Œc              3   ó8   "  € T F  q'       g   K  Vx € K  	  R # 5ir   © )r   Úps   & r   r   Ú!cards_to_shots.<locals>.<genexpr>x   s   é € Ð(?±E¨q»Q¯ª³Eùs   ‚	�
u	   åœºæ™¯ï¼šÚpromptu	   ç»†èŠ‚ï¼šu	   è§’è‰²ï¼šu   ï¼›zempty sceneÚlinesr%   r#   r&   u   ï¼ˆæ— å�°è¯�ï¼‰ÚimgÚhttpÚlocationÚepu   é•œå¤´%d:Né<   NÚmotionr   ÚsfxÚseedÚeffectsÚimg_url)Ú
appearanceÚoutfitÚfeature)
ÚgetÚvaluesÚ	enumerater   r-   Újoinr6   Ú
startswithr   r!   )ÚcardsÚcÚscenesÚcharsÚ
char_by_idÚdr.   ÚshotsÚiÚ
role_partsÚcidÚcdÚpartsr   Úprompt_partsrD   rE   rF   rO   s   &                  r   Úcards_to_shotsre   d   s  € áÓ;™�A§%¡%¨£-°7Ñ":�aˆa™€FÐ;ÙÓ9™�1§¡ v£°&Ñ!8�QˆQ™€EÐ9Ù:?Ó@¹%°Q�D•'˜AŸE™E &›M×/Ð/¨RÒ/¹%€JÐ@Ø-7×->Ñ->Ô-@ÓRÑ-@¨ÇEÁEÈ&ÇMÔ#�!—%‘%˜ Ö#Ñ-@€JÐRà€EÜ˜&¨×*Ð*‰ˆØ�E‰E�&‹M×Ð˜Rˆàˆ
Ø—E‘E˜)Ó$×*Ð*¨Ò*ˆCØ—‘ Ó$ˆBßÙÜ˜Ÿ™ ›×-Ð-¨2Ó.Ð/ˆEÛ8�Ø—6‘6˜!—9”9Ø—L‘L¤ R¥U£Ö,ñ 9ð ×Ñ˜eŸj™jÑ(?±EÓ(?Ó?Ö@ñ +ð ˆØ�5‰5��>Š>Ø×Ñ ¬c°!°Gµ*«oÕ =Ô>Ø�5‰5��?Š?Ø×Ñ ¬c°!°Hµ+Ó.>Õ >Ô?ßØ×Ñ ¨e¯j©j¸Ó.DÕ DÔEØ—‘˜LÓ)×:Ð:¨]ˆä˜AŸE™E '¨2Ó.°
Ó;ˆßØ ¨V°a·e±e¸G³n×6YÐ6YÐHYÐ[Ð\ˆEà�e‰e�E‹l× Ð ˜bˆØŸ™¨×/Ò/‘#°RˆØ�‰Ø�!Ø˜Ÿ™˜t›×HÐH¨¯©¨g«×HÐH¸*Àq½.È#ÕNØ�fØ�UØ”j §¡ v£Ó/Ø�2Ø”L  4¥¨!¯%©%°«-Ó8Ø�rØ�wð

÷ 
	ñ9 +ðN €Lùò[ <ùÚ9ùÚ@ùÚRs-   …N,¡N,­N1Á	N1Á#N6Á9N6ÂN;Â1N;c                ó  € \         P                  ! V P                  R4      V P                  R4      V P                  R4      V P                  R4      V P                  R4      V P                  R4      V P                  R4      .RR	7      # )
u?   åˆ†é•œå†…å®¹æŒ‡çº¹ï¼šä»»ä¸€å­—æ®µå�˜åŒ–å�³è®¤ä¸ºéœ€è¦�é‡�æ¸²æŸ“r;   rD   rK   rM   rH   rO   rE   F)Úensure_ascii)ÚjsonÚdumpsrS   )r    s   &r   Ú	_shot_keyrj   š   sh   € ä�:Š:Ø	�‰ˆd‹�Q—U‘U˜8“_ a§e¡e¨H£o°q·u±u¸V³}Ø	�‰ˆjÓ˜1Ÿ5™5 Ó+Ø	�‰ˆg‹ðð ô	ð r   c                ón  € ^ pV  EF«  pRV,          p\         P                  P                  \        RRVR,           4      \         P                  P                  \        RRVR,           4      \         P                  P                  \        RRRV,          4      \         P                  P                  \        RRR	V,          4      .pV FI  p\         P                  P	                  V4      '       g   K*  \         P
                  ! V4       V^,          pKK  	  \         P                  P                  \        RR
VR,           4      \         P                  P                  \        RRVR,           4      3 F?  p\        P                  ! V4       F"  p\         P
                  ! V4       V^,          pK$  	  KA  	  EK®  	  V# )u�   åˆ é™¤æŸ�å‡ ä¸ªé•œå¤´çš„æ—§ç¼“å­˜èµ„äº§ï¼ˆå›¾/éŸ³/é•œå¤´/å­—å¹•/éŸ³è½¨ï¼‰ï¼Œ
é˜²æ­¢ç”»å¸ƒå†…å®¹å�˜åŒ–å�Žè¯¯ç”¨ manju æ—§å‰§æœ¬é�—ç•™çš„æ–‡ä»¶ã€‚z	shot_%02dÚassetsÚimagesz.jpgÚclipsz.mp4Útmpzbase_%02d.mp4zshot_%02d_track.wavÚaudioz_*.mp3Úsubsz_*.png)ÚosÚpathrV   Ú	MANJU_DIRÚexistsÚremoveÚglob)Úshot_idsÚremovedÚsidÚstemÚsinglesÚfÚpats   &      r   Ú_clear_shot_assetsr   £   s5  € ð €GÜˆØ˜SÕ ˆä�G‰G�L‰Lœ H¨h¸¸v½ÓFÜ�G‰G�L‰Lœ H¨g°t¸fµ}ÓEÜ�G‰G�L‰Lœ H¨e°_ÀsÕ5JÓKÜ�G‰G�L‰Lœ H¨eÐ5JÈSÕ5PÓQð	
ˆó ˆAÜ�w‰w�~‰~˜a× Ô Ü—	’	˜!”Ø˜1•’ñ ô
 —‘—‘œY¨°'¸4À(½?ÓKÜ—‘—‘œY¨°&¸$À½/ÓJóLˆCô —Y’Y˜s–^�Ü—	’	˜!”Ø˜1•’ó $ôLñ ð$ €Nr   c           	     ó`  € \        V 4      p\        P                  ! \        P                  P	                  \
        R4      RR7       . p\        P                  P                  \        4      '       d:    \        \        RR7      ;_uu_ 4       p\        P                  ! V4      pRRR4       V Uu/ uF  qDP                  R4      VbK  	  pp. pV FT  p\        V4      \        VP                  VP                  R4      4      4      8w  g   K<  VP                  VR,          4       KV  	  \        V4      p\        \        RRR7      ;_uu_ 4       p\        P                   ! WR	^R
7       RRR4       W3#   + '       g   i     LÖ; i  \         d    . p Lèi ; iu upi   + '       g   i     Y3# ; i)uQ   è½¬æ�¢å¹¶å†™å…¥ manju/script/shots.jsonï¼›å†…å®¹å�˜åŒ–çš„é•œå¤´è‡ªåŠ¨æ¸…æ—§ç¼“å­˜r   T)Úexist_okzutf-8)ÚencodingNr;   ÚwF)rg   Úindent)re   rr   Úmakedirsrs   rV   rt   ru   Ú
SHOTS_PATHÚopenrh   ÚloadÚ	ExceptionrS   rj   r-   r   Údump)rX   r^   Ú	old_shotsr}   r    Úold_mapÚchanged_idsry   s   &       r   Úexport_shotsrŽ   »   s3  € ä˜5Ó!€EÜ‡K‚K”—‘—‘œY¨Ó1¸DÕAØ€IÜ	‡w�w‡~�~”j×!Ò!ð	Ü”j¨7×3Õ3°qÜ ŸIšI a›L�	÷ 4ñ (1Ó1¡y !�u‰u�T‹{˜AŠ~¡y€GÐ1Ø€KÛˆÜ�Q‹<œ9 W§[¡[°·±°t³Ó%=Ó>Ö>Ø×Ñ˜q �wÖ'ñ ô ! Ó-€GÜ	Œj˜#¨×	0Õ	0°AÜ�	Š	�%¨°qÕ9÷ 
1àˆ>Ð÷ 4×3ûäô 	ØŠIð	üâ1÷ 
1Ö	0àˆ>ÐúsB   Á2F ÂE0Â"F Â.FÅFÅ0F 	Å;F Æ F ÆFÆFÆF-	)	))u   æŽ¨é•œu   æŽ¨è¿›u   æŽ¨r   ))u   æ‹‰é•œu   æ‹‰è¿œu   æ‹‰Úzoom_out))u   ä¸Šæ‘‡u   æ‘‡ä¸ŠÚpan_up))u   ä¸‹æ‘‡u   æ‘‡ä¸‹Úpan_down))u   å·¦æ‘‡u   æ‘‡å·¦Úpan_left))u   å�³æ‘‡u   æ‘‡å�³Ú	pan_right))u   æ‘‡é•œu   æ‘‡Úpanr�   ))u   è·Ÿé•œu   è·Ÿæ‹�u   è·Ÿè¸ªÚtrackr“   ))u   é�™æ­¢u   å›ºå®šÚstaticu   ä¸�åŠ¨r–   )Ú__doc__rh   rr   r(   rs   ÚdirnameÚabspathÚ__file__ÚBASE_DIRrV   rt   r†   r
   r	   r   r!   r6   re   rw   Úhashlibrj   r   rŽ   rA   r   r   Ú<module>r�      s™   ðñ
ó Û 	Û 	à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨8Ó4Ó5€Ø�G‰G�L‰L˜ 7Ó+€	Ø�W‰W�\‰\˜) X¨|Ó<€
ò
€
ð €ò	òò(òV/ód Û òòô0r   