§
    ¥%Ëj‚  ã                   ó„  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	d dl
mZ d dlmZmZmZmZ ej        dk    rC	 ej                             d¬¦  «         ej                             d¬¦  «         n# e$ r Y nw xY w ee¦  «                             ¦   «         j        j        Z ee¦  «                             ¦   «         j        Z ee¦  «        ej        vr$ej                             d  ee¦  «        ¦  «         edz  Zedz  Zed	z  Z  ej!        ¦   «         d
z  Z"	 d dl#m$Z$m%Z% dZ&n(# e'$ r  	 ddl#m$Z$m%Z% dZ&n# e$ r	 dZ&dZ$dZ%Y nw xY wY nw xY wdefd„Z(dZ)dedefd„Z*dedefd„Z+dZ,g d¢Z-dEdede.defd„Z/g d¢Z0g d¢Z1dFdedee         dee         defd„Z2dEdededede.dee.ee         f         f
d „Z3	 	 	 	 	 	 	 	 dGdedee         dee         d#ed$ed%ee         dee.         d&ee.         d'efd(„Z4e5d)k    �r< ej6        d*¬+¦  «        Z7e7 8                    d,d-ddd.¬/¦  «         e7 8                    d0dd1¬2¦  «         e7 8                    d3dd4¬2¦  «         e7 8                    d5dd6¬2¦  «         e7 8                    d7d!d8¬2¦  «         e7 8                    d9dd:¬2¦  «         e7 8                    d;d<dd=dd>¬?¦  «         e7 8                    d@d"g dA¢dB¬C¦  «         e7 9                    ¦   «         Z: e4e:j;        e:j<        e:j=        e:j>        e:j?        e:j@        r ee:j@        ¦  «        nde:jA        e:jB        ¬D¦  «         dS dS )Hé    N)ÚPath)ÚOptionalÚListÚDictÚTupleÚwin32úutf-8©ÚencodingÚ	04_AssetsÚvideosÚ	keyframesÚ	Downloads)ÚMuseApiClientÚrender_shot_via_apiTé   FÚreturnc                  óº   — t          t          j        ¦  «        j        dz  } |                      ¦   «         rt          | ¦  «        S t          j        d¦  «        rdS dS )Nz
ffmpeg.exeÚffmpeg)r   ÚsysÚ
executableÚparentÚexistsÚstrÚshutilÚwhich)Úexes    ú8C:\Projects\KieuStory\05_Production_Pipeline\run_shot.pyÚ
get_ffmpegr   *   sP   € Ý
�sŒ~Ñ
Ô
Ô
%¨Ñ
4€CØ
‡z‚z�|„|ð Ý�3‰xŒxˆÝ„|�HÑÔð ØˆxØˆ8ó    uò    Quy táº¯c Ã¢m thanh: Tuyá»‡t Ä‘á»‘i KHÃ”NG sinh nháº¡c ná»�n (no music/BGM), khÃ´ng Ã¢m thanh Ä‘iá»‡n tá»­, khÃ´ng táº¡p Ã¢m rÃ¨ nhiá»…u. Chá»‰ sinh Ã¢m thanh mÃ´i trÆ°á»�ng tá»± nhiÃªn (foley, ambience) vÃ  thoáº¡i nhÃ¢n váº­t chÃ¢n thá»±c.Úpromptc                 ón   — | s| S g d¢}| }|D ]'\  }}t          j        |||t           j        ¬¦  «        }Œ(|S )uU   Thanh lá»�c tá»« khÃ³a nháº¡y cáº£m kÃ­ch hoáº¡t bá»™ lá»�c kiá»ƒm duyá»‡t Meta/Muse.))uV   \b(náº¥m má»“|má»“ máº£|nghÄ©a Ä‘á»‹a|má»™ Ä‘á»‹a|má»™ pháº§n|ngÃ´i má»™|ngÃ´i máº£)\bu"   gÃ² Ä‘áº¥t phá»§ cá»� Ãºa xÆ°a cÅ©)u-   \b(Ã¢m khÃ­|tá»­ khÃ­|Ã¢m khÃ­ náº·ng ná»�)\bu)   giÃ³ láº¡nh chiá»�u tÃ  se sáº¯t hoang vu)u8   \b(khÃ³c ngÆ°á»�i Ä‘á»�i xÆ°a|khÃ³c than báº¡c má»‡nh)\bu)   nghiÃªng mÃ¬nh tráº§m tÆ° Ä‘Æ°á»£m buá»“n)u0   \b(ráº£i vÃ ng mÃ£|tiá»�n vÃ ng mÃ£|vÃ ng mÃ£)\bu)   tháº¯p nÃ©n hÆ°Æ¡ng tráº§m pháº£ng pháº¥t)u9   \b(xÆ°Æ¡ng tÃ n|xÆ°Æ¡ng cá»‘t|xÃ¡c cháº¿t|cháº¿t chÃ³c)\bu   dáº¥u tÃ­ch xÆ°a cÅ©)u   \b(báº¡c má»‡nh)\bu   sá»‘ pháº­n long Ä‘ong)Úflags)ÚreÚsubÚ
IGNORECASE)r!   ÚreplacementsÚcleanedÚpatternÚrepls        r   Úsanitize_promptr+   4   s]   € àð Øˆðð ð €Lð €GØ%ð Fð F‰ˆ�Ý”&˜ $¨µr´}ÐEÑEÔEˆˆØ€Nr    c                 ó¢   — | st                                ¦   «         S t          | ¦  «        } d| vr d| vr|                      ¦   «         t           z   S | S )u|   Ä�áº£m báº£o prompt tuÃ¢n thá»§ chá»‰ thá»‹ Audio Guard cáº¥m nháº¡c ná»�n vÃ  Ä‘Æ°á»£c thanh lá»�c tá»« khÃ³a nháº¡y cáº£m.u'   Tuyá»‡t Ä‘á»‘i KHÃ”NG sinh nháº¡c ná»�nzStrictly NO background music)ÚAUDIO_GUARD_CANONICALÚstripr+   Úrstrip©r!   s    r   Úensure_audio_guardr1   E   sY   € àð -Ý$×*Ò*Ñ,Ô,Ð,Ý˜VÑ$Ô$€FØ0¸Ð>Ð>ÐCaÐioÐCoÐCoØ�}Š}‰ŒÕ!6Ñ6Ð6Ø€Mr    uš    [KHÃ“A KHáº¨U HÃŒNH Báº®T BUá»˜C / LIPS CLOSED]: Ä�Ã´i mÃ´i cÃ¡c nhÃ¢n váº­t trong khung hÃ¬nh khÃ©p cháº·t tá»± nhiÃªn (lips closed), khÃ´ng máº¥p mÃ¡y.)zv.o.u
   ngÃ¢m thÆ¡u   thuyáº¿t minhu   dáº«n chuyá»‡nu   ngoÃ i khungu   tá»« xaz
off-screenu   nghe tiáº¿ngu   tiáº¿ng gá»�iu   tiáº¿ng khÃ³c tá»« xau   tiáº¿ng Ä‘Ã n tá»« xaÚforcec                 ó  ‡— | s| S |                       ¦   «         Št          ˆfd„dD ¦   «         ¦  «        }|r| S |s t          ˆfd„t          D ¦   «         ¦  «        r¬d| v rD|                      dd¦  «        }|d                              ¦   «         t
          z   dz   |d         z   S d| v rD|                      dd¦  «        }|d                              ¦   «         t
          z   d	z   |d         z   S |                      ¦   «         t
          z   S | S )
u€   Ä�áº£m báº£o prompt tuÃ¢n thá»§ Closed Lips Guard khi cÃ³ thoáº¡i tá»« xa, VO, ngÃ¢m thÆ¡ hoáº·c lá»�i gá»�i ngoÃ i khung hÃ¬nh.c              3   ó    •K  — | ]}|‰v V — Œ	d S ©N© )Ú.0ÚwÚprompt_lowers     €r   ú	<genexpr>z+ensure_closed_lips_guard.<locals>.<genexpr>Y   s@   øè è € ð  Ið  I¨!�A˜Ð%ð  Ið  Ið  Ið  Ið  Ið  Ir    )u   khÃ©p cháº·tu
   khÃ©p mÃ´izlips closedu   khÃ´ng máº¥p mÃ¡yu   khÃ³a kháº©u hÃ¬nhc              3   ó    •K  — | ]}|‰v V — Œ	d S r5   r6   )r7   Útr9   s     €r   r:   z+ensure_closed_lips_guard.<locals>.<genexpr>\   s(   øè è € ÐDÐD¨!�A˜Ð%ÐDÐDÐDÐDÐDÐDr    u
   Ã‚m thanh:r   r   u    Ã‚m thanh:u   Quy táº¯c Ã¢m thanh:u    Quy táº¯c Ã¢m thanh:)ÚlowerÚanyÚCLOSED_LIPS_TRIGGERSÚsplitr/   ÚCLOSED_LIPS_CANONICAL)r!   r2   Ú	has_guardÚpartsr9   s       @r   Úensure_closed_lips_guardrD   T   sC  ø€ àð ØˆØ—<’<‘>”>€LÝð  Ið  Ið  Ið  Ið  0Hð  Iñ  Iô  Iñ  Iô  I€IØð ØˆØð ;•ÐDÐDÐDÐDÕ/CÐDÑDÔDÑDÔDð ;Ø˜6Ð!Ð!Ø—L’L ¨qÑ1Ô1ˆEØ˜”8—?’?Ñ$Ô$Õ'<Ñ<¸}ÑLÈuÐUVÌxÑWÐWØ# vÐ-Ð-Ø—L’LÐ!7¸Ñ;Ô;ˆEØ˜”8—?’?Ñ$Ô$Õ'<Ñ<Ð?VÑVÐY^Ð_`ÔYaÑaÐaà—=’=‘?”?Õ%:Ñ:Ð:Ø€Mr    )u   cáº­n cáº£nhzclose-upÚmcuÚcuÚecuu   trung cáº­nu   bÃ n tayu
   Ã¡nh máº¯tu   khuÃ´n máº·tu   gÆ°Æ¡ng máº·tu   giá»�t lá»‡u
   chÃ©n trÃ u	   ngÃ³n tayu   tÃ³c bayu   Ä‘áº·c táº£Úportraitu   ná»¥ cÆ°á»�izmicro-expressionÚprevis)u   toÃ n cáº£nhz	wide shotzextreme wideÚaerialu   Ä‘áº¡i cáº£nhu   kinh thÃ nhu   báº§u trá»�iu   dÃ²ng sÃ´ngu   sÃ´ng biáº¿cu   cáº£nh rá»™ngu   khung cáº£nhu   phá»‘ thá»‹u   quÃ¢n lÃ­nhu   hÃ nh Ä‘á»™ngÚshot_idÚ	shot_datac                 óP  ‡
— |€:	 ddl m}  |¦   «         }|                     | i ¦  «        }n# t          $ r i }Y nw xY w|r/|                     d¦  «        r|d                              ¦   «         S |r|                     dd¦  «        nd}|r|                     dd¦  «        nd}|p|r|                     dd¦  «        nd}| › d	|› d	|› d	|› �                     ¦   «         Š
t          ˆ
fd
„t          D ¦   «         ¦  «        }t          ˆ
fd„t          D ¦   «         ¦  «        }	|rdS |	rdS dS )uÝ   
    PhÃ¢n loáº¡i Ä‘á»™ng cÃ´ng cá»¥ render video cho Shot:
    - Cáº£nh toÃ n (Wide / Establishing / Action / Foley): Tráº£ vá»� 'muse'
    - Cáº­n cáº£nh / Ä�áº·c táº£ / ChÃ¢n dung / Previs: Tráº£ vá»� 'gradio_ltx'
    Nr   ©Úget_all_shotsÚvideo_engineÚscene_titleÚ Úcamera_motionÚmotion_promptú c              3   ó    •K  — | ]}|‰v V — Œ	d S r5   r6   ©r7   ÚkwÚcombineds     €r   r:   z'classify_shot_engine.<locals>.<genexpr>ˆ   s'   øè è € Ð9Ð9 R�"˜�.Ð9Ð9Ð9Ð9Ð9Ð9r    c              3   ó    •K  — | ]}|‰v V — Œ	d S r5   r6   rW   s     €r   r:   z'classify_shot_engine.<locals>.<genexpr>‰   s'   øè è € Ð;Ð; b�2˜�>Ð;Ð;Ð;Ð;Ð;Ð;r    ÚmuseÚ
gradio_ltx)Úproduction_orchestratorrO   ÚgetÚ	Exceptionr=   r>   ÚWIDE_KEYWORDSÚCLOSE_KEYWORDS)rK   rL   r!   rO   ÚshotsÚtitleÚcameraÚmotionÚis_wideÚis_closerY   s             @r   Úclassify_shot_enginerh   r   sˆ  ø€ ð Ðð	Ø=Ð=Ð=Ð=Ð=Ð=Ø!�M‘O”OˆEØŸ	š	 '¨2Ñ.Ô.ˆIˆIøÝð 	ð 	ð 	ØˆIˆIˆIð	øøøð ð 1�Y—]’] >Ñ2Ô2ð 1Ø˜Ô(×.Ò.Ñ0Ô0Ð0à09ÐAˆI�MŠM˜-¨Ñ,Ô,Ð,¸r€EØ3<ÐDˆY�]Š]˜?¨BÑ/Ô/Ð/À"€FØÐP¸iÐO˜	Ÿš o°rÑ:Ô:Ð:ÈR€FØÐ5Ð5˜EÐ5Ð5 FÐ5Ð5¨VÐ5Ð5×;Ò;Ñ=Ô=€HåÐ9Ð9Ð9Ð9­=Ð9Ñ9Ô9Ñ9Ô9€GÝÐ;Ð;Ð;Ð;­NÐ;Ñ;Ô;Ñ;Ô;€Hàð ØˆvØð Øˆ|Øˆ6s   …&, ¬;º;Úinput_frameÚreverse_motionc                 óÔ  — t          d¦  «         	 t          t          ¦  «        t          j        vr2t          j                             dt          t          ¦  «        ¦  «         ddlm}  |¦   «         }t          j	        dt          j
        | ¦  «        › d�t          j        ¦  «        }d}d}t                               | › d�¦  «        D ]U}	|                     |	j        ¦  «        }
|
r7|
                     d¦  «        }|�t#          |t%          |¦  «        ¦  «        }ŒSd
}ŒVt#          |dz   |r|dk    rdn|dz   ¦  «        }|dk    s|r| › d|› d�n| › d�}t          |z  }|                     ||dd|¬¦  «        \  }}|�r1|�r.t)          |¦  «                             ¦   «         �rt-          j        |t          |¦  «        ¦  «         t          d|› �¦  «         |rÈ|                     |j        › d�¦  «        }t5          ¦   «         }|ddt          |¦  «        ddddddddt          |¦  «        g}t7          j        |d
d
¬¦  «        }|j        dk    rR|                     ¦   «         r>t-          j        t          |¦  «        t          |¦  «        ¦  «         t          d¦  «         d	}t>          d z  t>          d!z  t>          d"z  fD ]A}|                     ¦   «         sŒd#D ]#}|| › |› �z  }|                     ¦   «         r|} nŒ$|r nŒB|�r6t          d$|j        › d%�¦  «         |                     |j        › d&�¦  «        }t5          ¦   «         }|ddt          |¦  «        dt          |¦  «        dd'd(d)d*d+d,d-d.t          |¦  «        g}t7          j        |d
d
¬¦  «        }|j        dk    rp|                     ¦   «         r\|                      ¦   «         j!        d/k    r?t-          j        t          |¦  «        t          |¦  «        ¦  «         t          d0¦  «         n(|                     ¦   «         r| "                    ¦   «          tF          | z  }| $                    d
d
¬1¦  «         |d2z  }| %                    t          |¦  «        t          |¦  «        ¦  «        }|r!t)          |¦  «                             ¦   «         sÏtM          j'        t          |¦  «        ¦  «        }t%          | (                    tL          j)        ¦  «        ¦  «        } | *                    tL          j+        t#          d| dz
  ¦  «        ¦  «         | ,                    ¦   «         \  }!}"| -                    ¦   «          |!r$|"�"tM          j.        t          |¦  «        |"¦  «         t          d3|› d4|j        › d5�¦  «         d
t          |¦  «        fS t          d6¦  «         d7S # t^          $ r}#t          d8|#› �¦  «         Y d	}#~#d7S d	}#~#ww xY w)9uO   Thá»±c thi sinh video I2V qua Gradio LTX-Video API (Hugging Face ZeroGPU Free).uM         âš¡ KÃ­ch hoáº¡t Gradio LTX-Video Engine (Hugging Face ZeroGPU Free)...r   )ÚHuggingFaceVideoClientú^ú_10s(?:_v(\d+))?\.mp4$Fú	_10s*.mp4r   NTé   Ú_10s_vú.mp4ú_10s.mp4Últxg      @)Ú
image_pathr!   Ú	model_keyÚdurationÚoutput_filenameu$         âœ“ Ä�Ã£ lÆ°u video LTX vÃ o: ú_rev_temp.mp4ú-yú-iú-vfÚreverseú-c:vÚlibx264ú-crfÚ18ú-presetÚslow©Úcapture_outputÚtextu6         âœ“ Ä�Ã£ Ä‘áº£o ngÆ°á»£c video LTX thÃ nh cÃ´ng!Ú	audio_sfxÚaudio_voiceÚaudio)z.wavz.m4az.mp3z.aacu2         ðŸŽµ PhÃ¡t hiá»‡n Ã¢m thanh chuyÃªn biá»‡t: u%   . Ä�ang tÃ­ch há»£p vÃ o video LTX...z_mux_temp.mp4Úcopyú-c:aÚaacú-b:aÚ192kú-arÚ48000z	-shortestéè  u;         âœ“ Ä�Ã£ gáº¯n Ã¢m thanh vÃ o video LTX thÃ nh cÃ´ng!©ÚparentsÚexist_okúclean_frame_239.jpgu.   
[âœ“] HOÃ€N Táº¤T THÃ€NH CÃ”NG (LTX Engine): ú
 -> Tail: ú
u8         [!] LTX Engine khÃ´ng tráº£ vá»� video há»£p lá»‡.©FNz      [!] LTX Engine error: )0Úprintr   ÚBASE_DIRr   ÚpathÚinsertÚgradio_version.hf_clientrl   r$   ÚcompileÚescaper&   Ú
VIDEOS_DIRÚglobÚmatchÚnameÚgroupÚmaxÚintÚgenerate_i2vr   r   r   Úcopy2Ú	with_nameÚstemr   Ú
subprocessÚrunÚ
returncodeÚmoveÚ
ASSETS_DIRÚstatÚst_sizeÚunlinkÚKEYFRAMES_DIRÚmkdirÚextract_tail_frameÚcv2ÚVideoCapturer^   ÚCAP_PROP_FRAME_COUNTÚsetÚCAP_PROP_POS_FRAMESÚreadÚreleaseÚimwriter_   )$rK   r!   ri   rj   rl   Ú	hf_clientr)   Ú	highest_vÚhas_unversionedÚfÚmÚv_numÚnext_vÚtarget_video_nameÚtarget_video_pathÚokÚgenerated_pathÚtemp_reversedÚ
ffmpeg_exeÚcmd_revÚres_revÚ
audio_candÚa_dirÚextÚafÚ
temp_muxedÚcmd_muxÚres_muxÚkf_dirÚ	tail_pathÚ	extractedÚcapÚtotÚretÚtfÚes$                                       r   Ú_execute_gradio_ltxrÜ   ‘   sW  € å	Ð
YÑZÔZÐZðfÝ�x‰=Œ=¥¤Ð(Ð(ÝŒH�OŠO˜A�s¥8™}œ}Ñ-Ô-Ð-ØCÐCÐCÐCÐCÐCà*Ð*Ñ,Ô,ˆ	å”*ÐL¥"¤)¨GÑ"4Ô"4ÐLÐLÐLÍbÌmÑ\Ô\ˆØˆ	ØˆÝ—’ GÐ!6Ð!6Ð!6Ñ7Ô7ð 	+ð 	+ˆAØ—’˜aœfÑ%Ô%ˆAØð +ØŸš ™
œ
�ØÐ$Ý # I­s°5©z¬zÑ :Ô :�I�Ià&*�OøÝ�Y ‘]¨Ð$^¸YÈ!º^¸^ A AÐQZÐ]^ÑQ^Ñ_Ô_ˆØ?HÈ1º}¸}ÐP_¸}˜wÐ:Ð:¨fÐ:Ð:Ð:Ð:ÐipÐfzÐfzÐfzÐÝ&Ð):Ñ:Ðà&×3Ò3Ø"ØØØØ-ð 4ñ 
ô 
ÑˆˆNð ñ E	�.ñ E	¥T¨.Ñ%9Ô%9×%@Ò%@Ñ%BÔ%Bñ E	ÝŒL˜­Ð->Ñ)?Ô)?Ñ@Ô@Ð@ÝÐLÐ9JÐLÐLÑMÔMÐMàð UØ 1× ;Ò ;Ð?PÔ?UÐ<dÐ<dÐ<dÑ eÔ e�Ý'™\œ\�
à Ø�#Ð/Ñ0Ô0Ø˜9Ø˜I v¨t°YÀÝ˜Ñ&Ô&ð�õ %œ.¨ÀÈDÐQÑQÔQ�ØÔ%¨Ò*Ð*¨}×/CÒ/CÑ/EÔ/EÐ*Ý”K¥ MÑ 2Ô 2µCÐ8IÑ4JÔ4JÑKÔKÐKÝÐSÑTÔTÐTð ˆJÝ$ {Ñ2µJÀÑ4NÕPZÐ]dÑPdÐeð ð �Ø—|’|‘~”~Ð/ xØ;ð ð �CØ GÐ!2¨SÐ!2Ð!2Ñ2�BØ—y’y‘{”{ð Ø%'˜
Ø˜ðð ð Ø�Eðð ñ (Ýð  BÈ:Ì?ð  Bð  Bð  Bñ  Cô  Cð  CØ.×8Ò8Ð<MÔ<RÐ9aÐ9aÐ9aÑbÔb�
Ý'™\œ\�
à Ø�#Ð/Ñ0Ô0Ø�#˜j™/œ/Ø˜FØ˜E 6¨6°5¸'ØÝ˜
‘O”Oð�õ %œ.¨ÀÈDÐQÑQÔQ�ØÔ%¨Ò*Ð*¨z×/@Ò/@Ñ/BÔ/BÐ*ÀzÇÂÑGXÔGXÔG`ÐcgÒGgÐGgÝ”K¥ J¡¤µÐ5FÑ1GÔ1GÑHÔHÐHÝÐXÑYÔYÐYÐYØ×&Ò&Ñ(Ô(ð (Ø×%Ò%Ñ'Ô'Ð'å" WÑ,ˆFØ�LŠL °ˆLÑ5Ô5Ð5ØÐ!6Ñ6ˆIà.×AÒAÅ#ÐFWÑBXÔBXÕZ]Ð^gÑZhÔZhÑiÔiˆIØð 4¥D¨¡O¤O×$:Ò$:Ñ$<Ô$<ð 4ÝÔ&¥sÐ+<Ñ'=Ô'=Ñ>Ô>�Ý˜#Ÿ'š'¥#Ô":Ñ;Ô;Ñ<Ô<�Ø—’�Ô/µ°Q¸¸a¹±´ÑAÔAÐAØŸ(š(™*œ*‘��RØ—’‘”�Øð 4˜2˜>Ý”K¥ I¡¤°Ñ3Ô3Ð3åÐsÐDUÐsÐsÐajÔaoÐsÐsÐsÑtÔtÐtØ�˜Y™œÐ'Ð'åÐMÑNÔNÐNØ�;øÝð ð ð ÝÐ0¨QÐ0Ð0Ñ1Ô1Ð1Øˆ{ˆ{ˆ{ˆ{ˆ{øøøøðøøøs   ‘VW  Ö/W  × 
W'×
W"×"W'r[   ÚautoÚ
prev_videoÚsession_nameÚdownload_dirÚdry_runÚenginec	                 óX'  ‡X— |dk    rt          | |¬¦  «        n|                     ¦   «         }	t          d¦  «         t          d| › �¦  «         t          d|	                     ¦   «         › d|dk    rdnd› d	�¦  «         t          d
|› �¦  «         t          d¦  «         |�€	 ddlm}
  |
¦   «         }|                     | i ¦  «        }t          |                     dd¦  «        ¦  «        }nÒ# t          $ rÅ t          dz  dz  }| 
                    ¦   «         r¡dd l}	 |                     |                     d¬¦  «        ¦  «        }|                     di ¦  «                             | i ¦  «        }t          |t          ¦  «        r#t          |                     dd¦  «        ¦  «        }n# t          $ r Y nw xY wY nw xY w|€d}|r|�s/	 ddlm}
m}  |
¦   «         }|                     | i ¦  «        }|s|                     d¦  «        }|s || |¦  «        }nà# t          $ rÓ t          dz  dz  }| 
                    ¦   «         r¯dd l}	 |                     |                     d¬¦  «        ¦  «        }|                     di ¦  «        }|                     | i ¦  «        }|sBt          |t          ¦  «        r|                     d¦  «        }nt          |t"          ¦  «        r|}n# t          $ r Y nw xY wY nw xY w|st          d| › �¦  «         dS t%          |¦  «        }t'          |¦  «        }|r%	 ddlm}  ||| ¬¦  «        }n# t          $ r Y nw xY w|€4t*          j                             dd¦  «                             ¦   «         dv }|�rùt          d| › d�¦  «         t.                               d d ¬!¦  «         t3          j        d"t3          j        | ¦  «        › d#�t2          j        ¦  «        }d}d}t.                               | › d$�¦  «        D ]U}|                     |j        ¦  «        }|r7|                      d%¦  «        }|�tC          |tE          |¦  «        ¦  «        }ŒSd }ŒVtC          |d%z   |r|dk    rd&n|d%z   ¦  «        }t.          | › d'|› d(�z  }tG          ¦   «         }|d)d*d+d,d-d*d+d,d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<t#          |¦  «        g}tI          j%        |d d ¬=¦  «        }|j&        dk    s| 
                    ¦   «         st          d>|j'        › �¦  «         dS tP          | z  }|                     d d ¬!¦  «         |d?z  } tS          j*        t#          |¦  «        ¦  «        }!tE          |!                     tR          j+        ¦  «        ¦  «        }"|! ,                    tR          j-        tC          d|"d%z
  ¦  «        ¦  «         |! .                    ¦   «         \  }#}$|! /                    ¦   «          |#r%|$�#tS          j0        t#          | ¦  «        |$¦  «         nBtc          j2        d@tb          j3        ¬A¦  «        }%tS          j0        t#          | ¦  «        |%¦  «         t          dB|j        › dC| j        › dD�¦  «         d t#          | ¦  «        fS |	dEk    r*ti          | |||¦  «        \  }&} |&rd | fS t          dF¦  «         tj          r«tl          �¤tn          ��	 tm          ¦   «         }'|' 8                    ¦   «         rAt          dG¦  «         to          | |||dH|'¬I¦  «        \  }&} |&rd | fS t          dJ| › dK�¦  «         nt          dL¦  «         n)# t          $ r}(t          dM|(› �¦  «         Y d }(~(nd }(~(ww xY w	 ddNl9m:})m;}*m<}+ |*rt          dO¦  «          |)| |||¬P¦  «        \  }&} |&rt          dQ| › dR�¦  «         d | fS t          dS| › dT�¦  «         |	dEk    r*t          dU¦  «         ti          | |||¦  «        \  },}-|,rd |-fS dS nP# t          $ rC}(t          dV|(› �¦  «         |	dEk    r ti          | |||¦  «        \  },}-|,r	d |-fcY d }(~(S Y d }(~(dS d }(~(ww xY w|r!t{          |¦  «         >                    ¦   «         nt~          }.|.                     d d ¬!¦  «         t*          j         @                    ¦   «         }/t#          |.¦  «        |/dW<   tY          |.                     dX¦  «        ¦  «        }0|r–t*          jA         
                    |¦  «        rwt          dYt{          |¦  «        j        › d�¦  «         dZd[|d\d]t#          |¦  «        g}1tI          j%        |1d d d|/¬^¦  «        }2t…          jC        d_¦  «         t          d`¦  «         nt          da¦  «         t%          |¦  «        }tI          j%        dZd[|dbd,gd d d|/¬^¦  «        jD        }3t3          jE        dc|3¦  «        pt3          jE        dd|3¦  «        }4|4r|4                      d%¦  «        nde}5t          df|5› dg�¦  «         dZd[|dhdi|5› �|g}6tI          j%        |6d d d|/¬^¦  «         t…          jC        d&¦  «         tI          j%        dZd[|dbd,gd d d|/¬^¦  «        jD        }7tY          t3          jF        dj|7¦  «        ¦  «        ŠX|7 G                    dk¦  «        |7 G                    dl¦  «        z   }8d }9|7 H                    ¦   «         D ]@}:dm|:v r:dn|:v r6|: I                    dn¦  «        do          I                    dp¦  «        d         }9 nŒA|9rKt          dq|9› dr�¦  «         dZd[|dsdi|9› �g};tI          j%        |;d d d|/¬^¦  «         t…          jC        d&¦  «         n`t          dt¦  «         tI          j%        dZd[|dudi|5› �gd d |/¬v¦  «         tI          j%        dZd[|dwdxgd d |/¬v¦  «         t…          jC        d&¦  «         tI          j%        dZd[|dbd,gd d d|/¬^¦  «        jD        }<dm|<v r`t          dy¦  «         tI          j%        dZd[|dudi|5› �gd d |/¬v¦  «         tI          j%        dZd[|dwdxgd d |/¬v¦  «         t…          jC        d&¦  «         t          dz¦  «         t          d{¦  «         t…          jC        d|¦  «         t3          j        d"t3          j        | ¦  «        › d#�t2          j        ¦  «        }d}d}t.                               | › d$�¦  «        D ]U}|                     |j        ¦  «        }|r7|                      d%¦  «        }|�tC          |tE          |¦  «        ¦  «        }ŒSd }ŒVtC          |d%z   |r|dk    rd&n|d%z   ¦  «        }t.          | › d'|› d(�z  }=d}>d}?t•          d}¦  «        D �]ì}@tI          j%        dZd[|dbd,gd d d|/¬^¦  «        jD        }At3          jF        dj|A¦  «        }BˆXfd~„|BD ¦   «         }C|A G                    dk¦  «        |A G                    dl¦  «        z   }D|D|8k    sd|Av sd€|Av o|C }E|Erd }>|Erd�n|Crd‚ndƒ}Ft          d„|@d&z   dHz  › d…|F› �d ¬†¦  «         |CsÎ|@d‡k    rÈ|7 G                    dˆ¦  «        |7 G                    d‰¦  «        z   |7 G                    dŠ¦  «        z   |7 G                    d‹¦  «        z   }G|A G                    dˆ¦  «        |A G                    d‰¦  «        z   |A G                    dŠ¦  «        z   |A G                    d‹¦  «        z   }H|H|Gk    rt          dŒd ¬†¦  «          dS |C�rU|Cdo         }It          d�|I› dg�d ¬†¦  «         tI          j%        dZd[|dsdi|I› �gd d |/¬v¦  «         t…          jC        d‡¦  «         tY          |.                     dX¦  «        ¦  «        }J|J|0z
  }K|Ksht—          |.                     dX¦  «        dŽ„ d ¬�¦  «        }L|Lr@t…          jB        ¦   «         |Ld          L                    ¦   «         jM        z
  d�k     r	|Ld         g}K|Krqt�          |K¦  «        d         }MtŸ          jP        |M|=¦  «         t          d‘|=› �¦  «         d }?|.t~          k    r&	 |M Q                    ¦   «          n# t          $ r Y nw xY w nt…          jC        dH¦  «         �Œî|?st          d’¦  «         dS |�r[t          d“| › d”�¦  «         |= R                    |=jS        › d•�¦  «        }NtG          ¦   «         }O|Od)d,t#          |=¦  «        d–d—d˜d™d/d0d3dšd1d›d7d8d9d:d;d<t#          |N¦  «        g}PtI          j%        |Pd d ¬=¦  «        }Q|Qj&        dk    ry|N 
                    ¦   «         re|N L                    ¦   «         jT        dœk    rHtŸ          jU        t#          |N¦  «        t#          |=¦  «        ¦  «         t          d�|=j        › dž�¦  «         nQt          dŸ|Qj'        › �¦  «         |N 
                    ¦   «         r&	 |N Q                    ¦   «          n# t          $ r Y nw xY wt          d ¦  «         tS          j*        t#          |=¦  «        ¦  «        }!tE          |!                     tR          j+        ¦  «        ¦  «        }"|! ,                    tR          j-        tC          d|"d%z
  ¦  «        ¦  «         |! .                    ¦   «         \  }#}R|! /                    ¦   «          tP          | z  }S|Sd?z  }T|#rM|R�K|S                     d d ¬!¦  «         tS          j0        t#          |T¦  «        |R¦  «         t          d¡|T› �¦  «         |r©t*          jA         
                    |¦  «        rŠt          d¢t{          |¦  «        j        › dg�¦  «         dd£lVmW}U  |U|t#          |=¦  «        ¦  «        \  }V}W|Vrt          d¤|Wd¥›�¦  «         n<t          d¦|Wd¥›d§t{          |¦  «        j        › d¨| › d©�¦  «         nt          dª¦  «         t          dQ| › dR�¦  «         d t#          |T¦  «        fS )«NrÝ   r0   z8
=======================================================u4   ðŸŽ¬ Báº®T Ä�áº¦U CHU TRÃŒNH Tá»° Ä�á»˜NG CHO SHOT: u      â€¢ Assigned Engine: z (u   Tá»± Ä‘á»™ng phÃ¢n loáº¡iu   Chá»‰ Ä‘á»‹nh thá»§ cÃ´ngú)u      â€¢ Worker Session:  z7=======================================================r   rN   rj   FÚ02_AI_Promptszmuse_ai_video_prompts.jsonr	   r
   Úmotion_prompts)rO   Úresolve_start_framerT   u<   [!] Lá»—i: KhÃ´ng thá»ƒ tÃ¬m tháº¥y motion prompt cho shot: r˜   )Úensure_16x9_start_frame)rK   ÚMUSE_DRY_RUNÚ0)Ú1ÚtrueÚyesuS         âš¡ [DRY-RUN] MUSE_DRY_RUN kÃ­ch hoáº¡t. Ä�ang sinh synthetic 720p video cho z...Tr’   rm   rn   ro   r   rp   rq   rr   rz   z-fÚlavfir{   z)testsrc=duration=10:size=1280x720:rate=24zsine=f=440:d=10:r=48000r~   r   r‚   Ú	ultrafastr€   Ú23z-pix_fmtÚyuv420pr‹   rŒ   r�   rŽ   r�   r�   r„   u"   [!] Lá»—i khi sinh dry-run video: r•   )iÐ  i   é   )Údtypeu+   
[âœ“] [DRY-RUN] HOÃ€N Táº¤T THÃ€NH CÃ”NG: r–   r—   r\   u\         [!] LTX Engine khÃ´ng tráº£ vá»� video, tiáº¿p tá»¥c fallback sang Muse2API Gateway...uT         âš¡ KÃ­ch hoáº¡t Muse2API Gateway (FastAPI REST API http://127.0.0.1:18610)...é   )rK   r!   ri   rj   rw   Úclientu1         [!] Muse2API Gateway tháº¥t báº¡i cho shot u.   , tiáº¿p tá»¥c fallback sang trÃ¬nh duyá»‡t...u^         [~] Muse2API Gateway chÆ°a sáºµn sÃ ng, tiáº¿p tá»¥c fallback sang browser automation...z      [!] Muse2API exception: )Úrender_shot_invpwÚ	HAS_INVPWÚcheck_login_statusuG         âš¡ KÃ­ch hoáº¡t InvisiblePlaywright Engine (Camoufox Stealth)...)rK   r!   ri   rj   u!   
[âœ“] HOÃ€N Táº¤T THÃ€NH CÃ”NG: z!
uK   
[!] Muse.ai InvisiblePlaywright khÃ´ng pháº£n há»“i/tháº¥t báº¡i cho shot ú.uL         âš¡ Chuyá»ƒn hÆ°á»›ng sang Gradio LTX-Video Engine theo cáº¥u hÃ¬nh...z%      [!] InvisiblePlaywright error: ÚAGENT_BROWSER_DOWNLOAD_PATHz*.mp4u    [1/5] Ä�ang upload Start Frame: zagent-browserú	--sessionÚuploadzinput[type=file])r…   r†   r   Úenvrò   u(         âœ“ Ä�Ã£ náº¡p áº£nh thÃ nh cÃ´ng!u4   [1/5] Bá»� qua upload (khÃ´ng cÃ³ áº£nh Ä‘Ã­nh kÃ¨m)Úsnapshotu'   textbox "Nháº¯n tin"\s*\[ref=([^\]]+)\]ztextbox.*\[ref=([^\]]+)\]Úe14u*   [2/5] Ä�ang Ä‘iá»�n Prompt vÃ o Ã´ chat (@z)...Úfillú@u-   button "Táº£i video xuá»‘ng" \[ref=([^\]]+)\]u   Dá»«ng nhiá»‡m vá»¥u   button "Dá»«ng"u   button "Gá»­i"z[ref=éÿÿÿÿú]u          PhÃ¡t hiá»‡n nÃºt Gá»­i (@u   ), Ä‘ang báº¥m gá»­i...ÚclickuP         KhÃ´ng tháº¥y nÃºt Gá»­i rÃµ rÃ ng, gá»­i lá»‡nh focus vÃ  nháº¥n Enter...Úfocus)r…   r†   rý   ÚpressÚEnteruR         PhÃ¡t hiá»‡n tin nháº¯n chÆ°a gá»­i Ä‘i, kÃ­ch hoáº¡t Enter trá»±c tiáº¿p...u0         âœ“ Ä�Ã£ gá»­i lá»‡nh render sang Muse.ai!uS   [3/5] Ä�ang giÃ¡m sÃ¡t tiáº¿n Ä‘á»™ render ngáº§m (chá»� Muse khá»Ÿi táº¡o task)...é
   éd   c                 ó   •— g | ]}|‰v¯|‘Œ	S r6   r6   )r7   ÚrÚpre_dl_refss     €r   ú
<listcomp>z%run_shot_pipeline.<locals>.<listcomp>  s#   ø€ ÐJÐJÐJ˜Q°Q¸kÐ5IÐ5I�qÐ5IÐ5IÐ5Ir    u   Ä�ang dá»±ngu   Ä�ang táº¡ou   Ä�ang render...u
   Ä�Ã£ xong!u   Ä�ang khá»Ÿi táº¡o task...z      [u   s] Tráº¡ng thÃ¡i: )Úflushé   u   khÃ´ng dá»±ng Ä‘Æ°á»£cu   váº«n khÃ´ng dá»±ng Ä‘Æ°á»£cu   tháº¥t báº¡iu   khÃ´ng thá»ƒ táº¡o Ä‘Æ°á»£cuI         [!] PhÃ¡t hiá»‡n Muse AI tá»« chá»‘i táº¡o video vá»›i prompt nÃ y!uH         [âœ“] PhÃ¡t hiá»‡n video má»›i hoÃ n táº¥t! Báº¥m táº£i xuá»‘ng (@c                 ó4   — |                       ¦   «         j        S r5   )r°   Úst_mtime)rÁ   s    r   ú<lambda>z#run_shot_pipeline.<locals>.<lambda>1  s   € ÀAÇFÂFÁHÄHÔDU€ r    )Úkeyr}   é´   u          âœ“ Ä�Ã£ lÆ°u video vÃ o: u*   [!] Lá»—i: Háº¿t thá»�i gian chá»� render.u-   [3.5/5] ðŸ”„ KÃ­ch hoáº¡t Reverse Motion cho z) via FFmpeg (-vf reverse -af areverse)...ry   r|   r}   z-afÚareverser�   rƒ   r‘   u@         âœ“ Ä�Ã£ Ä‘áº£o ngÆ°á»£c video vÃ  audio thÃ nh cÃ´ng cho ú!u9         [!] Lá»—i khi thá»±c hiá»‡n reverse motion FFmpeg: u5   [4/5] Ä�ang trÃ­ch xuáº¥t Tail Frame báº±ng OpenCV...u          âœ“ Ä�Ã£ lÆ°u Tail Frame: u>   [5/5] Ä�ang kiá»ƒm tra tÃ­nh liÃªn tá»¥c vá»›i shot trÆ°á»›c ()Úcheck_shot_continuityuE         [âœ“] Máº CH PHIM LIá»€N Máº CH TUYá»†T Ä�á»�I: Ä�iá»ƒm khá»›p z.2%u4         âš ï¸� Gá»¢I Ã� Ä�áº O DIá»„N: Ä�iá»ƒm khá»›p u,   . Cáº§n chÃ¨n 1 transition bridge 1s giá»¯a u    vÃ  rs   u"   [5/5] HoÃ n táº¥t chu trÃ¬nh shot.)Xrh   r=   r™   Úupperr]   rO   r^   Úboolr_   rš   r   ÚjsonÚloadsÚ	read_textÚ
isinstanceÚdictrç   r   r1   rD   rè   ÚosÚenvironr    r´   r$   rž   rŸ   r&   r¡   r¢   r£   r¤   r¥   r¦   r   r«   r¬   r­   Ústderrr³   r¶   r·   r¸   r¹   rº   r»   r¼   r½   ÚnpÚzerosÚuint8rÜ   ÚHAS_MUSE_APIr   r   Úis_availableÚmuse_invpw_driverrö   r÷   rø   r   ÚresolveÚDEFAULT_DOWNLOADS_DIRrŠ   r›   ÚtimeÚsleepÚstdoutÚsearchÚfindallÚcountÚ
splitlinesr@   ÚrangeÚsortedr°   r  Úlistr   r¨   r²   r©   rª   r±   r®   Úcontinuity_checkerr  )YrK   ri   r!   rÞ   rß   rà   rj   rá   râ   Úresolved_enginerO   rb   rL   Úprompts_filer  Úp_dataÚp_inforç   ræ   rè   r)   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   Útarget_videoÚ
ffmpeg_binÚ	cmd_synthÚresrÔ   rÕ   r×   Útotal_framesrÙ   ÚframeÚblankrÇ   Ú
api_clientrÛ   rö   r÷   rø   Úok_fbÚtail_fbÚdl_dirÚbrowser_envÚinitial_downloadsÚ
cmd_uploadÚres_upÚsnap_before_fillÚtb_matchÚtb_refÚcmd_fillÚpre_snapÚpre_stop_countÚsend_refÚlineÚcmd_sendÚpost_send_snaprÆ   Útask_startedÚvideo_savedÚattemptÚsnapÚcurrent_dl_refsÚnew_dl_refsÚcurr_stop_countÚis_busyÚ
status_msgÚpre_err_countÚcurr_err_countÚlast_dl_refÚcurrent_downloadsÚ	new_filesÚrecentÚ
downloadedrÉ   rÊ   Ú
ffmpeg_cmdrÌ   Ú
tail_frameÚshot_kf_dirÚtail_frame_pathr  Ú	is_smoothÚscorer  sY                                                                                           @r   Úrun_shot_pipelinerh  ü   sh  ø€ ð GMÐPVÒFVÐFVÕ*¨7¸6ÐBÑBÔBÐBÐ\b×\hÒ\hÑ\jÔ\j€OÝ	Ð
FÑGÔGÐGÝ	Ð
JÀÐ
JÐ
JÑKÔKÐKÝ	ð  T _×%:Ò%:Ñ%<Ô%<ð  Tð  TÐ_eÐioÒ_oÐ_oÐ@[Ð@[ð  vQð  Tð  Tð  Tñ  Uô  Uð  UÝ	Ð
3 \Ð
3Ð
3Ñ4Ô4Ð4Ý	Ð
DÑEÔEÐEð Ñð	Ø=Ð=Ð=Ð=Ð=Ð=Ø!�M‘O”OˆEØŸ	š	 '¨2Ñ.Ô.ˆIÝ! )§-¢-Ð0@À%Ñ"HÔ"HÑIÔIˆNˆNøÝð 
	ð 
	ð 
	Ý# oÑ5Ð8TÑTˆLØ×"Ò"Ñ$Ô$ð Ø���ðØ!ŸZšZ¨×(>Ò(>ÈÐ(>Ñ(PÔ(PÑQÔQ�FØ#ŸZšZÐ(8¸"Ñ=Ô=×AÒAÀ'È2ÑNÔN�FÝ! &­$Ñ/Ô/ð SÝ)-¨f¯jªjÐ9IÈ5Ñ.QÔ.QÑ)RÔ)R˜øøÝ ð ð ð Ø�Dðøøøøøð
	øøøð ÐØˆð ð ˜ñ ð	ØRÐRÐRÐRÐRÐRÐRÐRØ!�M‘O”OˆEØŸ	š	 '¨2Ñ.Ô.ˆIØð 8Ø"Ÿš Ñ7Ô7�Øð FØ1Ð1°'¸9ÑEÔE�øøÝð 	ð 	ð 	Ý# oÑ5Ð8TÑTˆLØ×"Ò"Ñ$Ô$ð Ø���ð
Ø!ŸZšZ¨×(>Ò(>ÈÐ(>Ñ(PÔ(PÑQÔQ�FØ%+§Z¢ZÐ0@À"Ñ%EÔ%E�NØ+×/Ò/°¸Ñ<Ô<�FØ!ð ,Ý% f­dÑ3Ô3ð ,Ø%+§Z¢Z°Ñ%@Ô%@˜F˜FÝ'¨µÑ4Ô4ð ,Ø%+˜FøøÝ ð ð ð Ø�Dðøøøøøð	øøøð  ð ÝÐVÈWÐVÐVÑWÔWÐWØˆ{õ   Ñ'Ô'€FÝ% fÑ-Ô-€Fð ð ð	ØGÐGÐGÐGÐGÐGØ1Ð1°+ÀwÐOÑOÔOˆKˆKøÝð 	ð 	ð 	ØˆDð	øøøð €Ý”*—.’. °Ñ5Ô5×;Ò;Ñ=Ô=ÐAUÐUˆàñ /$ÝÐpÐdkÐpÐpÐpÑqÔqÐqÝ×Ò °ÐÑ5Ô5Ð5Ý”*ÐL¥"¤)¨GÑ"4Ô"4ÐLÐLÐLÍbÌmÑ\Ô\ˆØˆ	ØˆÝ—’ GÐ!6Ð!6Ð!6Ñ7Ô7ð 	+ð 	+ˆAØ—’˜aœfÑ%Ô%ˆAØð +ØŸš ™
œ
�ØÐ$Ý # I­s°5©z¬zÑ :Ô :�I�Ià&*�OøÝ�Y ‘]¨Ð$^¸YÈ!º^¸^ A AÐQZÐ]^ÑQ^Ñ_Ô_ˆÝ! wÐ$BÐ$B°fÐ$BÐ$BÐ$BÑBˆå‘\”\ˆ
à˜Ø�'˜4Ð!LØ�'˜4Ð!:Ø�I˜y¨+°v¸tÀZÐQZØ�E˜6 6¨5°'Ý�ÑÔð
ˆ	õ Œn˜Y°tÀ$ÐGÑGÔGˆØŒ>˜QÒÐ l×&9Ò&9Ñ&;Ô&;ÐÝÐC°s´zÐCÐCÑDÔDÐDØ�;å Ñ(ˆØ�Š˜T¨DˆÑ1Ô1Ð1ØÐ2Ñ2ˆ	åÔ�s <Ñ0Ô0Ñ1Ô1ˆÝ˜3Ÿ7š7¥3Ô#;Ñ<Ô<Ñ=Ô=ˆØ�Š•Ô'­¨Q°¸qÑ0@Ñ)AÔ)AÑBÔBÐBØ—X’X‘Z”Z‰
ˆˆUØ�Š‰ŒˆØð 	/�5Ð$ÝŒK�˜I™œ¨Ñ.Ô.Ð.Ð.å”H˜^µ2´8Ð<Ñ<Ô<ˆEÝŒK�˜I™œ¨Ñ.Ô.Ð.åÐl¸\Ô=NÐlÐlÐZcÔZhÐlÐlÐlÑmÔmÐmØ•S˜‘^”^Ð#Ð#ð ˜,Ò&Ð&Ý+¨G°V¸[È.ÑYÔY‰ˆˆIØð 	#Ø˜�?Ð"ÝÐmÑnÔnÐnõ ð 8�Ð1Õ6IÐ6Uð	8Ý&™œˆJØ×&Ò&Ñ(Ô(ð xÝÐlÑmÔmÐmÝ 3Ø#Ø!Ø +Ø#1ØØ%ð!ñ !ô !‘��Ið ð GØ ˜?Ð*åð  FÈgð  Fð  Fð  Fñ  Gô  Gð  Gð  GåÐvÑwÔwÐwøøÝð 	8ð 	8ð 	8ÝÐ6°1Ð6Ð6Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7øøøøð	8øøøðØVÐVÐVÐVÐVÐVÐVÐVÐVÐVØð 	#ÝÐ[Ñ\Ô\Ð\Ø-Ð-ØØØ'Ø-ð	ñ ô ‰MˆB�	ð ð 
#ÝÐG¸7ÐGÐGÐGÑHÔHÐHØ˜Y�Ð&åÐoÐelÐoÐoÐoÑpÔpÐpØ" lÒ2Ð2ÝÐiÑjÔjÐjÝ%8¸À&È+ÐWeÑ%fÔ%f‘N�E˜7Øð -Ø# W˜}Ð,Ø"�{ð%	#øõ& ð ð ð ÝÐ9°aÐ9Ð9Ñ:Ô:Ð:Ø˜lÒ*Ð*Ý0°¸&À+È~Ñ^Ô^‰NˆE�7Øð %Ø˜W�}Ð$Ð$Ð$Ð$Ð$Ð$Øˆ{ˆ{ˆ{ˆ{ˆ{øøøøðøøøð .:ÐT�T�,ÑÔ×'Ò'Ñ)Ô)Ð)Õ?T€FØ
‡L‚L˜¨€LÑ-Ô-Ð-Ý”*—/’/Ñ#Ô#€KÝ14°V±´€KÐ-Ñ.å˜FŸKšK¨Ñ0Ô0Ñ1Ô1Ðð ð G•r”w—~’~ kÑ2Ô2ð GÝÐLµ°kÑ1BÔ1BÔ1GÐLÐLÐLÑMÔMÐMØ% {°LÀ(ÐL^Õ`cÐdoÑ`pÔ`pÐqˆ
Ý” 
¸4ÀdÐU\ÐbmÐnÑnÔnˆÝŒ
�1‰ŒˆÝÐ9Ñ:Ô:Ð:Ð:åÐEÑFÔFÐFõ   Ñ'Ô'€Fõ "”~ ¸À\ÐS]Ð_cÐ&dÐuyð  AEð  PWð  ]hð  iñ  iô  iô  pÐÝŒyÐCÐEUÑVÔVð  TÕZ\ÔZcð  eAð  CSñ  [Tô  [T€HØ"*Ð5ˆX�^Š^˜AÑÔÐ°€Få	Ð
C°vÐ
CÐ
CÐ
CÑDÔDÐDØ ¨l¸FÀLÈÀLÀLÐRXÐY€HÝ„N�8¨D°tÀgÐS^Ð_Ñ_Ô_Ð_Ý„Jˆq�M„M€Mõ Œ~˜°¸\È:ÐW[Ð\ÐmqÐx|ð  HOð  U`ð  añ  aô  aô  h€HÝ•b”jÐ!QÐS[Ñ\Ô\Ñ]Ô]€Kà—^’^Ð$9Ñ:Ô:¸X¿^º^ÐL]Ñ=^Ô=^Ñ^€Nð €HØ×#Ò#Ñ%Ô%ð ð ˆØ˜tÐ#Ð#¨°4¨¨Ø—z’z 'Ñ*Ô*¨2Ô.×4Ò4°SÑ9Ô9¸!Ô<ˆHØˆEøàð 	ÝÐR°ÐRÐRÐRÑSÔSÐSØ# [°,ÀÈÈXÈÈÐXˆÝŒ�x°¸4È'ÐWbÐcÑcÔcÐcÝŒ
�1‰ŒˆˆåÐaÑbÔbÐbÝŒ˜¨°lÀGÈ\ÐQWÈ\È\ÐZÐkoÐvzð  ALð  	Mñ  	Mô  	Mð  	MÝŒ˜¨°lÀGÈWÐUÐfjÐquð  |Gð  	Hñ  	Hô  	Hð  	HÝŒ
�1‰Œˆõ  ”^ _°kÀ<ÐQ[Ð]aÐ$bÐswð  Cð  NUð  [fð  gñ  gô  gô  n€NØ˜>Ð)Ð)ÝÐcÑdÔdÐdÝŒ˜¨°lÀGÈ\ÐQWÈ\È\ÐZÐkoÐvzð  ALð  	Mñ  	Mô  	Mð  	MÝŒ˜¨°lÀGÈWÐUÐfjÐquð  |Gð  	Hñ  	Hô  	Hð  	HÝŒ
�1‰Œˆå	Ð
=Ñ>Ô>Ð>õ 
Ð
`ÑaÔaÐaÝ„Jˆr�N„N€NåŒjÐH�bœi¨Ñ0Ô0ÐHÐHÐHÍ"Ì-ÑXÔX€GØ€IØ€OÝ�_Š_ Ð2Ð2Ð2Ñ3Ô3ð 'ð 'ˆØ�MŠM˜!œ&Ñ!Ô!ˆØð 	'Ø—G’G˜A‘J”JˆEØÐ Ý 	­3¨u©:¬:Ñ6Ô6�	�	à"&�øÝ�˜Q‘ _Ð Z¸Àaº¸  ÈYÐYZÉ]Ñ[Ô[€FÝ"¨Ð%CÐ%C°vÐ%CÐ%CÐ%CÑCÐØ€LØ€KÝ˜‘:”:ð /ñ /ˆÝŒ~˜°¸\È:ÐW[Ð\ÐmqÐx|ð  HOð  U`ð  añ  aô  aô  hˆÝœ*Ð%UÐW[Ñ\Ô\ˆØJÐJÐJÐJ /ÐJÑJÔJˆàŸ*š*Ð%:Ñ;Ô;¸d¿jºjÐIZÑ>[Ô>[Ñ[ˆØ" ^Ò3Ðf°~ÈÐ7MÐfÐQ^ÐbfÐQfÐ{Ðp{Ðl{ˆØð 	 ØˆLà*1ÐvÐ&Ð&ÈÐ8u¸¸ÐYuˆ
ÝÐI˜ 1™¨Ñ)ÐIÐI¸ZÐIÐIÐQUÐVÑVÔVÐVð ð 	#˜w¨!š|˜|Ø$ŸNšNÐ+CÑDÔDÀxÇ~Â~ÐVtÑGuÔGuÑuð  yA÷  yGò  yGð  HVñ  yWô  yWñ  Wð  Zb÷  Zhò  Zhð  iFñ  ZGô  ZGñ  GˆMØ!ŸZšZÐ(@ÑAÔAÀDÇJÂJÐOmÑDnÔDnÑnÐqu×q{Òq{ð  }Kñ  rLô  rLñ  Lð  OS÷  OYò  OYð  Zwñ  Oxô  Oxñ  xˆNØ Ò-Ð-ÝÐaÐimÐnÑnÔnÐnØ"�{�{ð ñ 	Ø% bœ/ˆKÝÐnÐ]hÐnÐnÐnÐvzÐ{Ñ{Ô{Ð{ÝŒN˜O¨[¸,ÈÐQbÐU`ÐQbÐQbÐcÐtxð  @Dð  JUð  Vñ  Vô  Vð  VÝŒJ�q‰MŒMˆMõ !$ F§K¢K°Ñ$8Ô$8Ñ 9Ô 9ÐØ)Ð,=Ñ=ˆIØð ,Ý §¢¨GÑ 4Ô 4Ð:UÐ:UÐ_cÐdÑdÔd�Øð ,�tœy™{œ{¨V°A¬Y¯^ª^Ñ-=Ô-=Ô-FÑFÈÒLÐLØ!'¨¤ �Iàð 
Ý! )™_œ_¨QÔ/�
Ý”˜ZÐ):Ñ;Ô;Ð;ÝÐLÐ9JÐLÐLÑMÔMÐMØ"�ØÕ2Ò2Ð2ðØ"×)Ò)Ñ+Ô+Ð+Ð+øÝ$ð ð ð Ø˜ðøøøà�ÝŒ
�1‰Œˆ‰àð ÝÐ;Ñ<Ô<Ð<Øˆ{ð ñ ÝÐp¸gÐpÐpÐpÑqÔqÐqØ)×3Ò3Ð7HÔ7MÐ4\Ð4\Ð4\Ñ]Ô]ˆÝ‘\”\ˆ
à˜Ø•#Ð'Ñ(Ô(Ø�9Ø�:Ø�IØ�DØ�vØ�EØ�FØ�7Ý�ÑÔð
ˆ
õ ”. ¸DÀtÐLÑLÔLˆØÔ Ò"Ð" }×';Ò';Ñ'=Ô'=Ð"À-×BTÒBTÑBVÔBVÔB^ÐaeÒBeÐBeÝŒK�˜MÑ*Ô*­CÐ0AÑ,BÔ,BÑCÔCÐCÝÐnÐUfÔUkÐnÐnÐnÑoÔoÐoÐoåÐ^ÈgÌnÐ^Ð^Ñ_Ô_Ð_Ø×#Ò#Ñ%Ô%ð ðØ!×(Ò(Ñ*Ô*Ð*Ð*øÝ ð ð ð Ø�Dðøøøõ 
Ð
BÑCÔCÐCÝ
Ô
�3Ð0Ñ1Ô1Ñ
2Ô
2€CÝ�s—w’w�sÔ7Ñ8Ô8Ñ9Ô9€LØ‡G‚G�CÔ#¥S¨¨L¸1Ñ,<Ñ%=Ô%=Ñ>Ô>Ð>Ø—h’h‘j”j�O€CˆØ‡K‚K�M„M€Må 'Ñ)€KØ!Ð$9Ñ9€OØ
ð DˆzÐ%Ø×Ò $°ÐÑ6Ô6Ð6ÝŒ•C˜Ñ(Ô(¨*Ñ5Ô5Ð5ÝÐB°ÐBÐBÑCÔCÐCð ð 	5•b”g—n’n ZÑ0Ô0ð 	5ÝÐjÍtÐT^ÑO_ÔO_ÔOdÐjÐjÐjÑkÔkÐkØ<Ð<Ð<Ð<Ð<Ð<Ø0Ð0°½SÐARÑ=SÔ=SÑTÔTÑˆ	�5Øð 	oÝÐeÐZ_ÐeÐeÐeÑfÔfÐfÐfåð  nÈð  nð  nð  nõ  AEð  FPñ  AQô  AQô  AVð  nð  nð  ]dð  nð  nð  nñ  oô  oð  oð  oåÐ3Ñ4Ô4Ð4å	Ð
;¨wÐ
;Ð
;Ð
;Ñ<Ô<Ð<Ø•�_Ñ%Ô%Ð%Ð%s÷   Â#A	C- Ã-/F<ÄBF)Æ(F<Æ)
F6Æ3F<Æ5F6Æ6F<Æ;F<Ç	AH È/K4ÉBK!Ë K4Ë!
K.Ë+K4Ë-K.Ë.K4Ë3K4Ì.M Í
MÍMÛ
A\= Ü#\= Ü=
]#Ý]Ý]#Ý'A_3 Þ-A_3 ß3
a ß=2`;à/a à;a Á@
A@Á@
A@,Á@+A@,ÁFAF( ÁF(
AF5ÁF4AF5Ú__main__u<   Cháº¡y render tá»± Ä‘á»™ng cho 1 shot Ä‘Æ¡n láº» qua Muse.ai)Údescriptionz--shotz	--shot-idu/   MÃ£ Ä‘á»‹nh danh shot (vd: ep01_scene01_shot01))ÚdestÚrequiredÚhelpz--input-frameuE   Ä�Æ°á»�ng dáº«n Start Frame (tá»± Ä‘á»™ng resolve náº¿u bá»� trá»‘ng))Údefaultrm  z--promptuG   Prompt mÃ´ táº£ chuyá»ƒn Ä‘á»™ng (tá»± Ä‘á»™ng load náº¿u bá»� trá»‘ng)z--prev-videou?   Ä�Æ°á»�ng dáº«n video shot trÆ°á»›c Ä‘á»ƒ kiá»ƒm tra continuityrû   u0   TÃªn session agent-browser (máº·c Ä‘á»‹nh: muse)z--download-diru(   ThÆ° má»¥c download cÃ´ láº­p cho workerz	--reversez--reverse-motionÚ
store_trueuY   KÃ­ch hoáº¡t Ä‘áº£o ngÆ°á»£c chuyá»ƒn Ä‘á»™ng video qua FFmpeg (-vf reverse -af areverse))rk  Úactionrn  rm  z--engine)rÝ   r[   Úmuse_apir\   ua   Ä�á»™ng cÆ¡ render (máº·c Ä‘á»‹nh: auto - tá»± Ä‘á»™ng dÃ¹ng Muse2API Gateway náº¿u kháº£ dá»¥ng))rn  Úchoicesrm  )rß   rà   rj   râ   )F)NN)NNNr[   NNNrÝ   )Cr  r   r$   r*  Úargparser«   r   r¶   Únumpyr"  Úpathlibr   Útypingr   r   r   r   Úplatformr,  Úreconfigurer!  r_   Ú__file__r(  r   rš   ÚPIPELINE_DIRr   r›   rœ   r¯   r    r³   Úhomer)  Úmuse_api_clientr   r   r%  ÚImportErrorr   r-   r+   r1   rA   r?   r  rD   ra   r`   rh   rÜ   rh  Ú__name__ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsrK   ri   r!   rÞ   Úsessionrà   rj   râ   r6   r    r   ú<module>r…     s.  ðØ 	€	€	€	Ø 
€
€
€
Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð „<�7ÒÐðØŒ
×Ò¨ÐÑ0Ô0Ð0ØŒ
×Ò¨ÐÑ0Ô0Ð0Ð0øØð ð ð Øˆðøøøð ˆ4�‰>Œ>×!Ò!Ñ#Ô#Ô*Ô1€Øˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.€Ø€3€|ÑÔ˜CœHÐ$Ð$Ø„H‡O‚O�A�s�s˜<Ñ(Ô(Ñ)Ô)Ð)Ø˜Ñ#€
Ø˜(Ñ"€
Ø˜[Ñ(€Ø!˜œ	™œ kÑ1Ð ð
#ØBÐBÐBÐBÐBÐBÐBÐBØ€L€LøØð #ð #ð #ð#ØGÐGÐGÐGÐGÐGÐGÐGØˆˆøØð #ð #ð #ØˆØˆØ"ÐÐÐð#øøøøøð	#øøøð�Cð ð ð ð ð MÐ ð˜Cð  Cð ð ð ð ð"˜sð  sð ð ð ð ð uÐ ðð ð Ð ð
ð  Sð °ð À#ð ð ð ð ð&ð ð €ð
ð ð €ðð  #ð °(¸4´.ð ÐQYÐZ]ÔQ^ð Ðjmð ð ð ð ð>ið i ð i¨cð iÀð iÐUYð iÐfkÐlpÐrzÐ{~ÔrÐlô  gAð ið ið ið iðZ "&Ø ØØØ#'Ø%)Ø"ØðD&ð D&ØðD&à˜#”ðD&ð �SŒMðD&ð ð	D&ð
 ðD&ð ˜4”.ðD&ð ˜T”NðD&ð �dŒ^ðD&ð ðD&ð D&ð D&ð D&ðL ˆzÒÑØ$ˆXÔ$Ð1oÐpÑpÔp€FØ
×Ò˜ +°IÈð  TEÐñ  Fô  Fð  FØ
×Ò˜°ð  =DÐñ  Eô  Eð  EØ
×Ò˜
¨Dð  8AÐñ  Bô  Bð  BØ
×Ò˜°Ð;|ÐÑ}Ô}Ð}Ø
×Ò˜¨VÐ:lÐÑmÔmÐmØ
×ÒÐ(°$Ð=gÐÑhÔhÐhØ
×Ò˜Ð%7Ð>NÐWcÐmqð  yTÐñ  Uô  Uð  UØ
×Ò˜
¨FÐ<fÐ<fÐ<fð  nQÐñ  Rô  Rð  RØ×ÒÑÔ€DàÐØŒØÔØŒØŒØ”\Ø04Ô0AÐK�T�T˜$Ô+Ñ,Ô,Ð,ÀtØÔ*ØŒ{ð	ñ 	ô 	ð 	ð 	ð 	ð ÐsH   Á6A: Á:BÂBÄ&
D1 Ä1EÄ7
EÅEÅEÅEÅEÅEÅE