§
    XÇÉj—'  ã                   óh  — 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	 d dlmZmZ n# e$ r  ed¦  «        ‚w xY wd	d
lmZmZmZmZmZmZmZ  G d„ d¦  «        ZdS )é    N)ÚPath)ÚOptionalÚDictÚTupleÚAnyÚwin32zutf-8)Úencoding)ÚClientÚhandle_fileu>   Vui lÃ²ng cÃ i Ä‘áº·t gradio_client: pip install gradio_clienté   )ÚBASE_DIRÚOUTPUTS_DIRÚASSETS_VIDEOS_DIRÚSUPPORTED_SPACESÚDEFAULT_MODELÚHF_TOKENÚNEGATIVE_PROMPT_DEFAULTc                   ó  — e Zd ZdZddee         fd„Zdedefd„Ze	ddddddfd	ed
ededee         de
dee         dee         dee         dee         deeee         f         fd„Ze	 ddedee         dee         fd„¦   «         ZdS )ÚHuggingFaceVideoClientuw   Client káº¿t ná»‘i tá»›i cÃ¡c ZeroGPU Spaces trÃªn Hugging Face Ä‘á»ƒ sinh Image-to-Video hoÃ n toÃ n miá»…n phÃ­ ($0).NÚtokenc                 ó\   — |pt           | _        i | _        t          j        dd¬¦  «         d S )NT)ÚparentsÚexist_ok)r   r   Ú_clientsr   Úmkdir)Úselfr   s     ú1C:\Projects\KieuStory\gradio_version\hf_client.pyÚ__init__zHuggingFaceVideoClient.__init__$   s1   € ØÐ&�hˆŒ
Ø+-ˆŒÝÔ $°Ð6Ñ6Ô6Ð6Ð6Ð6ó    Ú	model_keyÚreturnc           	      óT  — |t           vr3t          d|› dt          t          j        ¦   «         ¦  «        › �¦  «        ‚|| j        vrWt           |         d         }t          d|› d�¦  «         t          || j        ¬¦  «        | j        |<   t          d|› d�¦  «         | j        |         S )	uK   Khá»Ÿi táº¡o hoáº·c tÃ¡i sá»­ dá»¥ng Gradio Client káº¿t ná»‘i tá»›i Space.u   MÃ´ hÃ¬nh 'u)   ' khÃ´ng há»£p lá»‡. Chá»�n má»™t trong: Úspace_idu+   [HF Client] Ä�ang káº¿t ná»‘i tá»›i Space: ú...)r   u/   [HF Client] âœ“ Káº¿t ná»‘i thÃ nh cÃ´ng tá»›i ú!)r   Ú
ValueErrorÚlistÚkeysr   Úprintr
   r   )r   r    r#   s      r   Ú
get_clientz!HuggingFaceVideoClient.get_client)   sÀ   € àÕ,Ð,Ð,ÝØq˜iÐqÐqÕRVÕWgÔWlÑWnÔWnÑRoÔRoÐqÐqñô ð ð ˜DœMÐ)Ð)Ý'¨	Ô2°:Ô>ˆHÝÐMÀÐMÐMÐMÑNÔNÐNÝ'-¨h¸d¼jÐ'IÑ'IÔ'IˆDŒM˜)Ñ$ÝÐOÀHÐOÐOÐOÑPÔPÐPàŒ}˜YÔ'Ð'r   g      @Ú
image_pathÚpromptÚnegative_promptÚdurationÚwidthÚheightÚseedÚoutput_filenamec
                 ó˜  — t          |¦  «                             ¦   «         }
|
                     ¦   «         st          d|
› �¦  «         dS t	          j        |t          t                   ¦  «        }|pt          }|p|                     dd¦  «        }|p|                     dd¦  «        }t          d¦  «         t          d¦  «         t          d	|d
         › d|d         › d�¦  «         t          d|
j        › �¦  «         t          d|dd…         › d�¦  «         t          d|d         › �¦  «         t          d¦  «         t          j	        ¦   «         }|  
                    |¦  «        }	 |dk    r¾t          d¦  «         |                     ||t          t          |
¦  «        ¦  «        dt          |¦  «        t          |¦  «        dt          |¦  «        d|�t          |¦  «        nd|€dndddd¬¦  «        }|d          }t!          |t"          ¦  «        r|                     d!¦  «        n|}�nÇ|d"k    rŸt          d#¦  «         |                     |t          t          |
¦  «        ¦  «        dd$|�t          |¦  «        nd%ddd&¬'¦  «        }|d(         p=t!          |d          t"          ¦  «        r|d                               d!¦  «        n|d          }�n"|d)k    �rXt          d*¦  «         |                     |t          t          |
¦  «        ¦  «        d|�t          |¦  «        nd%d+¬,¦  «         t          d-¦  «         d}d.}t%          |¦  «        D ]Í}t          j        d/¦  «         |                     d0¬1¦  «        }|r†t!          |t(          t*          f¦  «        rj|d          }t!          |t"          ¦  «        r|                     d!¦  «        r
|d!         } nHt!          |t          ¦  «        r|                     d2¦  «        r|} nt          d3|d(z   › d4|› d5�¦  «         ŒÎ|st          d6¦  «         dS nÃ|d7k    r©t          d8|d         › d9�¦  «         |                     t          t          |
¦  «        ¦  «        |d:|t          |¦  «        dd|�t          |¦  «        nd;|€dndd<¬=¦
  «
        }|d          }t!          |t"          ¦  «        r|                     d!¦  «        n|}nt          d>|› �¦  «         dS t          j	        ¦   «         |z
  }t          d?|d@›dA|› �¦  «         |	s0t          t          j	        ¦   «         ¦  «        }|› dB|
j        › dB|› d2�}	t0          |	z  }t3          j        |t          |¦  «        ¦  «         t          dC|› �¦  «         dt          |¦  «        fS # t6          $ r}t          dD|› �¦  «         Y d}~dS d}~ww xY w)Eu–   Sinh video tá»« áº£nh Start Frame vÃ  Prompt chuyá»ƒn Ä‘á»™ng.

        Tráº£ vá»�: (thÃ nh cÃ´ng: bool, Ä‘Æ°á»�ng dáº«n file video mp4: str)
        u*   [!] KhÃ´ng tÃ¬m tháº¥y áº£nh Ä‘áº§u vÃ o: )FNÚdefault_widthiÀ  Údefault_heighti   z=
============================================================u)   ðŸŽ¬ HUGGING FACE ZERO-GPU I2V GENERATIONu      â€¢ Model: Únamez (r#   ú)u      â€¢ Input Image: u      â€¢ Prompt: NéP   r$   u      â€¢ Chi phÃ­: Úcostz<============================================================Últxu4   [...] Ä�ang gá»­i tÃ¡c vá»¥ tá»›i LTX-Video Space...zimage-to-videoé	   é*   TFg      ð?z/image_to_video)r,   r-   Úinput_image_filepathÚinput_video_filepathÚ	height_uiÚwidth_uiÚmodeÚduration_uiÚui_frames_to_useÚseed_uiÚrandomize_seedÚui_guidance_scaleÚimprove_texture_flagÚapi_namer   ÚvideoÚ	cogvideoxu4   [...] Ä�ang gá»­i tÃ¡c vá»¥ tá»›i CogVideoX Space...gš™™™™™é?éÿÿÿÿz	/generate)r,   Úimage_inputÚvideo_inputÚvideo_strengthÚ
seed_valueÚscale_statusÚrife_statusrH   r   Úwan21uE   [...] Ä�ang gá»­i tÃ¡c vá»¥ báº¥t Ä‘á»“ng bá»™ tá»›i Wan 2.1 Space...z/i2v_generation_async)r,   ÚimageÚwatermark_wanr1   rH   uJ   [...] Ä�ang theo dÃµi tiáº¿n trÃ¬nh sinh video Wan 2.1 (Polling status)...é<   é   z/status_refresh)rH   z.mp4u         [Wan 2.1 Polling] Láº§n ú/u   ... Ä�ang xá»­ lÃ½uE   [!] QuÃ¡ thá»�i gian chá»� (Timeout) khi Ä‘á»£i Wan 2.1 hoÃ n thÃ nh.Úwan22u1   [...] Ä�ang gá»­i tÃ¡c vá»¥ tá»›i Wan 2.2 Space (z)...g      @g      E@z/generate_video)
Úinput_imager,   Ústepsr-   Úduration_secondsÚguidance_scaleÚguidance_scale_2r1   rE   rH   u4   [!] KhÃ´ng há»— trá»£ phÆ°Æ¡ng thá»©c xá»­ lÃ½ cho: u(   [âœ“] Space Ä‘Ã£ táº¡o xong video trong z.1fzs: Ú_u)   [âœ“] Ä�Ã£ lÆ°u video hoÃ n táº¥t táº¡i: u-   [!] Lá»—i trong quÃ¡ trÃ¬nh gá»�i Space API: )r   ÚresolveÚexistsr)   r   Úgetr   r   r6   Útimer*   Úpredictr   ÚstrÚfloatÚintÚ
isinstanceÚdictÚrangeÚsleepr'   ÚtupleÚendswithÚstemr   ÚshutilÚcopy2Ú	Exception)r   r+   r,   r    r-   r.   r/   r0   r1   r2   Úimg_pÚcfgÚ
neg_promptÚwÚhÚ
start_timeÚclientÚresÚ
video_dataÚtemp_video_pathÚ	max_pollsÚpoll_iÚpoll_resÚvid_candidateÚelapsedÚ	timestampÚ
final_destÚes                               r   Úgenerate_i2vz#HuggingFaceVideoClient.generate_i2v8   sƒ  € õ  �ZÑ Ô ×(Ò(Ñ*Ô*ˆØ�|Š|‰~Œ~ð 	ÝÐF¸uÐFÐFÑGÔGÐGØ�;åÔ" 9Õ.>½}Ô.MÑNÔNˆØ$Ð?Õ(?ˆ
ØÐ2�S—W’W˜_¨cÑ2Ô2ˆØÐ4�c—g’gÐ.°Ñ4Ô4ˆåˆoÑÔÐÝÐ:Ñ;Ô;Ð;ÝÐ@˜s 6œ{Ð@Ð@¨c°*¬oÐ@Ð@Ð@ÑAÔAÐAÝÐ1 U¤ZÐ1Ð1Ñ2Ô2Ð2ÝÐ0  s¨ s¤Ð0Ð0Ð0Ñ1Ô1Ð1ÝÐ/ # f¤+Ð/Ð/Ñ0Ô0Ð0Ýˆh‰Œˆå”Y‘[”[ˆ
Ø—’ Ñ+Ô+ˆðH	Ø˜EÒ!Ð!åÐMÑNÔNÐNØ—n’nØ!Ø$.Ý)4µS¸±Z´ZÑ)@Ô)@Ø)-Ý# A™hœhÝ" 1™XœXØ)Ý % h¡¤Ø%&Ø)-Ð)9�C ™IœI˜I¸rØ+/¨< 4 4¸UØ&)Ø)-Ø.ð %ñ ô �ð" ! œV�
õ " *­dÑ3Ô3ð$�J—N’N 7Ñ+Ô+Ð+à#ð  ‘ð ˜kÒ)Ð)åÐMÑNÔNÐNØ—n’nØ!Ý +­C°©J¬JÑ 7Ô 7Ø $Ø#&Ø.2Ð.>�u T™{œ{˜{ÀBØ!&Ø %Ø(ð %ñ 	ô 	�ð #& a¤&ð #Ý+5°c¸!´f½dÑ+CÔ+CÐO�C˜”F—J’J˜wÑ'Ô'Ð'ÈÈQÌð  ‘ð ˜gÒ%Ñ%åØ\ñô ð ð —’Ø!Ý%¥c¨%¡j¤jÑ1Ô1Ø"'Ø(,Ð(8�˜t™œ˜¸bØ4ð ñ ô ð õ Ø`ñô ð ð #'�Ø�	Ý# IÑ.Ô.ð ð �FÝ”J˜q‘M”M�MØ%Ÿ~š~Ð7H˜~ÑIÔI�Hàð "¥J¨x½$Å¸Ñ$GÔ$Gð "Ø(0°¬˜Ý% mµTÑ:Ô:ð 
"¸}×?PÒ?PØ#ñ@ô @ð 
"ð /<¸GÔ.D˜OØ!˜Eå& }µcÑ:Ô:ð"à -× 6Ò 6°vÑ >Ô >ð"ð /<˜OØ!˜EÝØa¸À¹ÐaÐaÀIÐaÐaÐañô ð ð ð 'ð 'ÝØ_ñô ð ð '˜;ð	'ð ˜gÒ%Ð%åÐ_È#ÈjÌ/Ð_Ð_Ð_Ñ`Ô`Ð`Ø—n’nÝ +­C°©J¬JÑ 7Ô 7Ø!ØØ$.Ý%*¨8¡_¤_Ø#&Ø%(Ø(,Ð(8�˜t™œ˜¸dØ+/¨< 4 4¸UØ.ð %ñ ô �ð ! œV�
õ " *­dÑ3Ô3ð$�J—N’N 7Ñ+Ô+Ð+à#ð  �õ ÐXÈYÐXÐXÑYÔYÐYØ"�{å”i‘k”k JÑ.ˆGÝØ\¸7Ð\Ð\Ð\È?Ð\Ð\ñô ð ð
 #ð NÝ¥¤	¡¤Ñ,Ô,�	Ø%.Ð"MÐ"M°´Ð"MÐ"M¸iÐ"MÐ"MÐ"M�å$ Ñ6ˆJÝŒL˜­#¨j©/¬/Ñ:Ô:Ð:ÝÐJ¸jÐJÐJÑKÔKÐKà�˜Z™œÐ(Ð(øåð 	ð 	ð 	ÝÐEÀ!ÐEÐEÑFÔFÐFØ�;�;�;�;�;øøøøð	øøøs'   Å*KV" Ð1CV" Ó5B,V" Ö"
W	Ö,W×W	Ú
video_pathÚoutput_tail_framec                 óž  — t          | ¦  «        }|                     ¦   «         sdS |s*t          |                     |j        › d�¦  «        ¦  «        }dddddt          |¦  «        dd	d
dt          |¦  «        g}t          j        |d¬¦  «        }|j        dk    r3t          j	                             |¦  «        rt          d|› �¦  «         |S dS )ug   TrÃ­ch xuáº¥t Tail Frame (khung hÃ¬nh cuá»‘i cÃ¹ng) báº±ng FFmpeg Ä‘á»ƒ phá»¥c vá»¥ Head-Tail Chaining.Nz	_tail.jpgÚffmpegz-yz-sseofz-1z-iz-updateÚ1z-q:vÚ2T)Úcapture_outputr   u%   [âœ“] Ä�Ã£ trÃ­ch xuáº¥t Tail Frame: )r   r`   rd   Ú	with_namerm   Ú
subprocessÚrunÚ
returncodeÚosÚpathr)   )r„   r…   Úvid_pÚcmdrx   s        r   Úextract_tail_framez)HuggingFaceVideoClient.extract_tail_frameç   sç   € õ
 �ZÑ Ô ˆØ�|Š|‰~Œ~ð 	Ø�4à ð 	OÝ # E§O¢O°u´zÐ4LÐ4LÐ4LÑ$MÔ$MÑ NÔ NÐð ØØØØÝ�‰JŒJØØØØÝÐ!Ñ"Ô"ð
ˆõ Œn˜S°Ð6Ñ6Ô6ˆØŒ>˜QÒÐ¥2¤7§>¢>Ð2CÑ#DÔ#DÐÝÐMÐ:KÐMÐMÑNÔNÐNØ$Ð$Øˆtr   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rd   r   r
   r*   r   re   rf   r   Úboolrƒ   Ústaticmethodr“   © r   r   r   r   !   sr  € € € € € ð Bð  Bð7ð 7˜h sœmð 7ð 7ð 7ð 7ð
( Cð (¨Fð (ð (ð (ð (ð& 'Ø)-ØØ#Ø $Ø"Ø)-ðmð màðmð ðmð ð	mð
 " #œðmð ðmð ˜Œ}ðmð ˜”ðmð �sŒmðmð " #œðmð 
ˆt�X˜c”]Ð"Ô	#ðmð mð mð mð^ à<@ðð ØðØ,4°S¬Mðà	�#Œðð ð ñ „\ðð ð r   r   )r�   Úsysrb   rn   rŒ   Úpathlibr   Útypingr   r   r   r   ÚplatformÚstdoutÚreconfigureÚstderrrp   Úgradio_clientr
   r   ÚImportErrorÚ	hf_configr   r   r   r   r   r   r   r   rš   r   r   ú<module>r¥      s»  ðØ 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð „<�7ÒÐðØŒ
×Ò¨ÐÑ0Ô0Ð0ØŒ
×Ò¨ÐÑ0Ô0Ð0Ð0øØð ð ð ØˆðøøøðXØ1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øØð Xð Xð XØ
ˆ+ÐVÑ
WÔ
WÐWðXøøøðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðcð cð cð cð cñ cô cð cð cð cs   ³6A* Á*A2Á1A2Á6A? Á?B