§
    oF§j°0  ã                   óÆ   — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZ dddddœd„Zdadad ag adadd	„Zd
„ Zdd„Zdd„Zd„ Zdd„Zdd„Zd„ Zdd„Zdd„Zdd„ZdS )é    N)ÚNamedTemporaryFileÚTemporaryDirectory)ÚDownloadCancelledÚcheck_download_cancelledÚdownload_contextÚinstall_hf_download_patchTé   ©ÚgenÚshow_filenameÚ
file_indexÚ
file_countc                 ó    — ddl m} t          ¦   «          t          | |d         |||¦  «        5   |di |¤Žcd d d ¦  «         S # 1 swxY w Y   d S )Nr   )Úhf_hub_downloadÚfilename© )Úhuggingface_hubr   r   r   )r   r   r   r   Úkwargsr   s         ú.C:\Users\johnn\Wan2GP\shared\utils\download.pyÚ_hf_downloadr      s²   € Ø/Ð/Ð/Ð/Ð/Ð/åÑÔÐÝ	˜#˜v jÔ1°=À*ÈjÑ	YÔ	Yð )ð )ØˆÐ(Ð( Ð(Ð(ð)ð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   ®AÁAÁ
Ag      à?c                 ó  — t          j         ¦   «         }| |z  }t          �| dk    r|a|adag ad}|t          z
  t
          k    ršt          dk    rŠ|t          z
  |t          z
  z  }t                               |¦  «         t          t          ¦  «        dk    rt                               d¦  «         t          t          ¦  «        t          t          ¦  «        z  }|a|an0t          r)t          t          ¦  «        t          t          ¦  «        z  }d„ }|r|nd}	|dk    r||dk    rd ||¦  «        › d�nd}
d	|	› d
 ||¦  «        › |
› �}t          j                             |                     d¦  «        ¦  «         t          j                             ¦   «          dS | |z  }t          d||z  dz  ¦  «        }d}t!          ||z  dz  ¦  «        }d|z  d||z
  z  z   }d„ }|dk    rd ||¦  «        › d�nd}
d	|	› d|› d|d›d ||¦  «        › d ||¦  «        › d|
› �}t          j                             |                     d¦  «        ¦  «         t          j                             ¦   «          |dk    rt#          ¦   «          dS dS )a  
    Simple progress bar hook for urlretrieve
    
    Args:
        block_num: Number of blocks downloaded so far
        block_size: Size of each block in bytes
        total_size: Total size of the file in bytes
        filename: Name of the file being downloaded (optional)
    Nr   é   c                 ó@   — dD ]}| dk     r	| d›|› �c S | dz  } Œ| d›d�S ©N)ÚBÚKBÚMBÚGBi   ú.1fÚTBr   ©Ú	bytes_valÚunits     r   Úformat_bytesz#progress_hook.<locals>.format_bytes<   óT   € Ø+ð 	ð 	ˆDØ˜4ÒÐØ#Ð/Ð/¨Ð/Ð/Ð/Ð/Ð/Ø˜ÑˆIˆIØÐ#Ð#Ð#Ð#Ð#ó    zUnknown filez @ z/sÚ úz: éP   éd   é(   u   â–ˆu   â–‘c                 ó@   — dD ]}| dk     r	| d›|› �c S | dz  } Œ| d›d�S r   r   r!   s     r   r$   z#progress_hook.<locals>.format_bytesW   r%   r&   z: [z] r   z% (ú/ú))ÚtimeÚ_start_timeÚ
_last_timeÚ_last_downloadedÚ_speed_historyÚ_update_intervalÚappendÚlenÚpopÚsumÚsysÚstdoutÚwriteÚljustÚflushÚminÚintÚprint)Ú	block_numÚ
block_sizeÚ
total_sizer   Úcurrent_timeÚ
downloadedÚspeedÚcurrent_speedr$   Úfile_displayÚ	speed_strÚlineÚpercentÚ
bar_lengthÚfilledÚbars                   r   Úprogress_hookrO      sÞ  € õ ”9‘;”;€LØ˜ZÑ'€Jõ Ð˜i¨1šn˜nØ"ˆØ!ˆ
ØÐØˆð €EØ•jÑ Õ$4Ò4Ð4Ý˜Š>ˆ>Ø'Õ*:Ñ:¸|ÍjÑ?XÑYˆMÝ×!Ò! -Ñ0Ô0Ð0å•>Ñ"Ô" QÒ&Ð&Ý×"Ò" 1Ñ%Ô%Ð%å�Ñ'Ô'­#­nÑ*=Ô*=Ñ=ˆEà!ˆ
Ø%ÐÐÝ	ð :å•NÑ#Ô#¥c­.Ñ&9Ô&9Ñ9ˆð$ð $ð $ð  (Ð;�8�8¨^€Là�Q‚€à5:¸Q²Y°YÐ1˜,˜, uÑ-Ô-Ð1Ð1Ð1Ð1ÀBˆ	ØI�LÐIÐI L L°Ñ$<Ô$<ÐI¸iÐIÐIˆåŒ
×Ò˜Ÿš B™œÑ(Ô(Ð(ÝŒ
×ÒÑÔÐØˆà˜ZÑ'€JÝ�#˜
 ZÑ/°3Ñ6Ñ7Ô7€Gð €JÝ�˜gÑ%¨Ñ+Ñ,Ô,€FØ
�&‰.˜5 J°Ñ$7Ñ8Ñ
8€Cð$ð $ð $ð 27¸²°Ð-�l�l 5Ñ)Ô)Ð-Ð-Ð-Ð-À€Ið z�ÐyÐy ÐyÐy¨ÐyÐyÐy¸¸ÀZÑ8PÔ8PÐyÐyÐS_ÐS_Ð`jÑSkÔSkÐyÐyÐnwÐyÐy€Då„J×Ò�T—Z’Z ‘_”_Ñ%Ô%Ð%Ý„J×ÒÑÔÐð �#‚~€~Ý‰Œˆˆˆð €~r&   c                 ó"   ‡ — da dadag aˆ fd„}|S )z2Creates a progress hook with the filename includedNr   c                 ó(   •— t          | ||‰¦  «        S ©N)rO   )rA   rB   rC   r   s      €r   Úhookz"create_progress_hook.<locals>.hookt   s   ø€ Ý˜Y¨
°JÀÑIÔIÐIr&   )r0   r1   r2   r3   )r   rS   s   ` r   Úcreate_progress_hookrT   k   s=   ø€ ð €KØ€JØÐØ€NðJð Jð Jð Jð Jà€Kr&   c                 óô  ‡— ddl m}m} ddlm} t          |¦  «         |€d gt          |¦  «        z  }g }	t          |||¦  «        D �]y\  }
}}|
�t          |
¦  «        dk    rd }
|
�|
nt          |¦  «        dk    r|nd }|                     |¦  «        }|
� t          j
                             ||
¦  «        n|}t          |¦  «        dk    r’|€K|                     |
€|nt          j
                             |
|¦  «        d¬¦  «        € || |dz   |¬¦  «         ŒÒ|r|                     d¦  «        dz   nd	Šˆfd
„ |¦   «                              | ¦  «        D ¦   «         }|D ]_}t          |¦  «         |                     t!          |||
¦  «        d¬¦  «        €(|	                     t%          | |||pd ¬¦  «        ¦  «         Œ`�Œ{t'          |	d¦  «        D ]%\  }}t)          di |¤|||t          |	¦  «        dœ¤Ž Œ&d S )Nr   )ÚHfApiÚsnapshot_download©Úfiles_locatorF©Úerror_if_nonez/*)Úrepo_idÚallow_patternsÚ	local_dirr-   r'   c                 óh   •— g | ].}|                      ‰¦  «        ¯|t          ‰¦  «        d …         ‘Œ/S rR   )Ú
startswithr6   )Ú.0ÚnameÚprefixs     €r   ú
<listcomp>z%process_files_def.<locals>.<listcomp>Ž   s=   ø€ ÐoÐoÐo¨DÐW[×WfÒWfÐgmÑWnÔWnÐo�T�#˜f™+œ+˜,˜,Ô'ÐoÐoÐor&   )r\   r   r^   Ú	subfolderr	   r
   r   )r   rV   rW   Úshared.utilsrY   r   r6   ÚzipÚget_smart_download_rootÚosÚpathÚjoinÚlocate_folderÚrstripÚlist_repo_filesÚlocate_fileÚ_download_relpathr5   ÚdictÚ	enumerater   )ÚrepoIdÚsourceFolderListÚfileListÚtargetFolderListr   r   rV   rW   ÚflÚ	downloadsÚtargetFolderÚsourceFolderÚfilesÚexplicit_targetÚ
targetRootr^   ÚonefileÚindexÚdownloadrc   s                      @r   Úprocess_files_defr�   y   s™  ø€ Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø0Ð0Ð0Ð0Ð0Ð0å˜SÑ!Ô!Ð!ØÐØ ˜6¥CÐ(8Ñ$9Ô$9Ñ9ÐØ€IÝ-0Ð1AÐCSÐU]Ñ-^Ô-^ð ~ñ ~Ñ)ˆ�l EØÐ#­¨LÑ(9Ô(9¸QÒ(>Ð(>ØˆLØ*6Ð*B˜,˜,ÕY\Ð]iÑYjÔYjÐmnÒYnÐYnÈÈÐtxˆØ×/Ò/°Ñ@Ô@ˆ
Ø>JÐ>V•B”G—L’L ¨\Ñ:Ô:Ð:Ð\fˆ	Ýˆu‰:Œ:˜Š?ˆ?Øˆ{Ø×#Ò#°LÐ4H L LÍbÌgÏlÊlÐ[gÐiuÑNvÔNvð  GLÐ#ñ  Mô  Mð  UØ%Ð%¨fÀ\ÐTXÑEXÐdmÐnÑnÔnÐnØà7CÐK�\×(Ò(¨Ñ-Ô-°Ñ3Ð3ÈˆFØoÐoÐoÐo°E°E±G´G×4KÒ4KÈFÑ4SÔ4SÐoÑoÔoˆEØð 	~ð 	~ˆGÝ$ SÑ)Ô)Ð)Ø�~Š~Õ/°¸gÀ|ÑTÔTÐdiˆ~ÑjÔjÐrØ× Ò ¥¨f¸wÐR[ÐgsÐg{Ðw{Ð!|Ñ!|Ô!|Ñ}Ô}Ð}øñ	~õ % Y°Ñ2Ô2ð tð t‰ˆˆxÝÐsÐs�xÐs S¸ÐRWÕdgÐhqÑdrÔdrÐsÐsÐsÐsÐsÐsðtð tr&   c                 óR  — | €dn| } |�t          |¦  «        dk    rd }|€5t          | ¦  «        dk    r t          j                             | |¦  «        n|S t          | ¦  «        dk    r!t          j                             || |¦  «        nt          j                             ||¦  «        S )Nr'   r   )r6   ri   rj   rk   )Úsource_folderr   Útarget_folders      r   rp   rp   —   s¶   € Ø'Ð/�B�B°]€MØÐ ¥S¨Ñ%7Ô%7¸1Ò%<Ð%<ØˆØÐÝ8;¸MÑ8JÔ8JÈQÒ8NÐ8N�rŒw�|Š|˜M¨8Ñ4Ô4Ð4ÐT\Ð\ÝCFÀ}ÑCUÔCUÐXYÒCYÐCY�2Œ7�<Š<˜ }°hÑ?Ô?Ð?Õ_aÔ_f×_kÒ_kÐlyð  |Dñ  `Eô  `Eð  Er&   c                 óÆ  — ddl m} | €g S t          | t          ¦  «        r+g }| D ]$}|                     t          |¦  «        ¦  «         Œ%|S |                      dg ¦  «        }|                      dg ¦  «        }|                      d¦  «        }|€d gt          |¦  «        z  }g }t          |||¦  «        D ]¬\  }}}	t          |¦  «        dk    rQt          |d|	¦  «         
                    d¦  «        }
|                     |
d¬	¦  «        €|                     |
¦  «         Œj|D ]?}t          |||	¦  «        }|                     |d¬	¦  «        €|                     |¦  «         Œ@Œ­|S )
Nr   rX   rt   ru   rv   r'   z\/FrZ   )rf   rY   Ú
isinstanceÚlistÚextendÚdownload_def_missing_filesÚgetr6   rg   rp   rm   rl   r5   ro   )Údownload_defrw   ÚmissingÚone_defÚsource_foldersÚ
file_listsÚtarget_foldersrƒ   r{   r„   Ú
rel_folderr   Úrel_paths                r   r‰   r‰       sœ  € Ø0Ð0Ð0Ð0Ð0Ð0àÐØˆ	Ý�,¥Ñ%Ô%ð ØˆØ#ð 	@ð 	@ˆGØ�NŠNÕ5°gÑ>Ô>Ñ?Ô?Ð?Ð?ØˆØ!×%Ò%Ð&8¸"Ñ=Ô=€NØ×!Ò! *¨bÑ1Ô1€JØ!×%Ò%Ð&8Ñ9Ô9€NØÐØ˜¥# nÑ"5Ô"5Ñ5ˆØ€GÝ/2°>À:È~Ñ/^Ô/^ð 	)ð 	)Ñ+ˆ�u˜mÝˆu‰:Œ:˜Š?ˆ?Ý*¨=¸"¸mÑLÔL×SÒSÐTYÑZÔZˆJØ×Ò 
¸%ÐÑ@Ô@ÐHØ—’˜zÑ*Ô*Ð*ØØð 	)ð 	)ˆHÝ(¨¸À-ÑPÔPˆHØ�~Š~˜h°eˆ~Ñ<Ô<ÐDØ—’˜xÑ(Ô(Ð(øð	)ð €Nr&   c                 ó.   — | �|r | d|¦  «         d S d S d S )NÚstatusr   )Úsend_cmdÚstatus_texts     r   Úsend_download_statusr—   ½   s3   € ØÐ ÐØˆ�˜;Ñ'Ô'Ð'Ð'Ð'ð ÐÐÐr&   c                 ó  — t          |¦  «         | � t          t          | ¦  «        ¦  «        dk    rdS t          ||¦  «         |€ddlm}  |t          ||¬¦  «        }t          | t          ¦  «        r| D ]
} |di |¤Ž Œn |di | ¤Ž dS )Nr   F)Úpartial©r   r   Tr   )	r   r6   r‰   r—   Ú	functoolsr™   r�   r†   r‡   )r‹   r•   r–   r   r   Úprocess_filesr™   r�   s           r   Úprocess_files_def_if_neededr�   Â   sÒ   € Ý˜SÑ!Ô!Ð!ØÐ�sÕ#=¸lÑ#KÔ#KÑLÔLÐPQÒQÐQØˆuÝ˜ ;Ñ/Ô/Ð/ØÐØ%Ð%Ð%Ð%Ð%Ð%Ø˜Õ 1°sÈ-ÐXÑXÔXˆÝ�,¥Ñ%Ô%ð &Ø#ð 	%ð 	%ˆGØˆMÐ$Ð$˜GÐ$Ð$Ð$Ð$ð	%ð 	ˆÐ%Ð%˜Ð%Ð%Ð%Øˆ4r&   c                  ó   — ddgg d¢gdœS )NzDeepBeepMeep/Wan2.1Úroformer)z)model_bs_roformer_ep_317_sdr_12.9755.ckptz)model_bs_roformer_ep_317_sdr_12.9755.yamlzdownload_checks.json)rs   rt   ru   r   r   r&   r   Ú/query_audio_background_replacement_download_defr    Ò   s1   € à'Ø'˜Lð Hð  Hð  Hð  Iðð ð r&   ú7Downloading audio background replacement model files...c                 óB   — t          t          ¦   «         | |||¬¦  «        S )N©r•   r–   r   rœ   )r�   r    r£   s       r   Ú%download_audio_background_replacementr¤   Ú   s>   € Ý&Õ'VÑ'XÔ'XÐckð  zEð  KNð  ^kð  lñ  lô  lð  lr&   c                 óŠ   — t          | t          ¦  «        rt          di | ¤||dœ¤Ž d S | pg D ]}|�t          di |¤||dœ¤Ž Œd S )Nrš   r   )r†   rq   r�   )Údownload_defsr   r   r‹   s       r   Úprocess_download_defsr§   Þ   s„   € Ý�-¥Ñ&Ô&ð ÝÐPÐP˜MÐP¨sÀ-ÐPÐPÐPÐPÐPØˆØ%Ð+¨ð Tð TˆØÐ#ÝÐSÐS ÐS°#À]ÐSÐSÐSÐSÐSøðTð Tr&   c           	      óf  — ddl m} t          |¦  «         |                      d¦  «        d         } |                      d¦  «        �rµd| v �r°t
          j                             |¦  «        }| t          d¦  «        d …         } |                      d¦  «        }|d         }t
          j         	                    |d         ¦  «        }t
          j                             |d         ¦  «        }	t          |	¦  «        dk    r=t          ||t          |¦  «        dk    r|                     ¦   «         n|||¬¦  «         d S t          |¦  «        dk    r|                     ¦   «         n|}
t          j        |
d¬	¦  «         t          d
|
¬¦  «        5 }t          ||||	||¬¦  «         t          |¦  «         t          j        t
          j                             ||	|¦  «        |
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S |��’ddlm} t'          ¦   «          t)          |||¦  «        5  t+          t
          j                             |¦  «        pdddd¬¦  «        5 }|j        }	 |                     | |t
          j         	                    |¦  «        ¬¦  «         n7# t0          $ r* |                     ¦   «          t          j        |¦  «         ‚ w xY w	 d d d ¦  «         n# 1 swxY w Y   	 t          |¦  «         t          j        ||¦  «         t
          j                             |¦  «        rt          j        |¦  «         n9# t
          j                             |¦  «        rt          j        |¦  «         w w xY wd d d ¦  «         d S # 1 swxY w Y   d S ddlm}  || |t?          |¦  «        ¦  «         d S )Nr   rX   Ú|zhttps://huggingface.co/z/resolve/main/éÿÿÿÿ)r\   r   r^   r   r   T)Úexist_okÚ_temp)rc   Údir)r\   r   r^   re   r   r   )Úfile_downloadú.Ú
_download_z.incompleteF)r­   rc   ÚsuffixÚdelete)Údisplayed_filename)Úurlretrieve) rf   rY   r   Úsplitr`   ri   rj   Údirnamer6   Úbasenamer   Úget_download_locationÚmakedirsr   ÚshutilÚmoverk   r   r®   r   r   r   rb   Úhttp_getÚBaseExceptionÚcloseÚremoveÚreplaceÚexistsÚurllib.requestr´   rT   )Úurlr   r   r   rw   Úbase_dirÚ	url_partsrs   r~   rz   ÚtgtÚtemp_dir_pathÚhfÚ	temp_fileÚ	temp_pathr´   s                   r   Údownload_filerË   ç   sÉ  € Ø0Ð0Ð0Ð0Ð0Ð0å˜SÑ!Ô!Ð!Ø
�)Š)�C‰.Œ.˜Ô
€CØ
‡~‚~Ð/Ñ0Ô0ñ 'CÐ5EÈÐ5LÑ5LÝ”7—?’? 8Ñ,Ô,ˆØ•#Ð/Ñ0Ô0Ð1Ð1Ô2ˆØ—I’IÐ.Ñ/Ô/ˆ	Ø˜1”ˆÝ”'×"Ò" 9¨R¤=Ñ1Ô1ˆÝ”w—’ y°¤}Ñ5Ô5ˆÝˆ|ÑÔ Ò!Ð!Ý °'ÕcfÐgoÑcpÔcpÐtuÒcuÐcuÀR×E]ÒE]ÑE_ÔE_ÐE_ð  |Dð  JMð  ]jð  kñ  kô  kð  kð  kð  kå03°H±´ÀÒ0BÐ0B�"×*Ò*Ñ,Ô,Ð,ÈˆCÝŒK˜ dÐ+Ñ+Ô+Ð+Ý#¨7¸Ð<Ñ<Ô<ð UÀÝ V°gÈÐbnÐtwð  HUð  Vñ  Vô  Vð  VÝ(¨Ñ-Ô-Ð-Ý”�BœGŸLšL¨¸ÀgÑNÔNÐPSÑTÔTÐTðUð Uð Uñ Uô Uð Uð Uð Uð Uð Uð Uð Uøøøð Uð Uð Uð Uð Uð Uð 
‰Ø7Ð7Ð7Ð7Ð7Ð7å!Ñ#Ô#Ð#Ý˜c 8¨]Ñ;Ô;ð 	)ð 	)å#­¬¯ª¸Ñ(AÔ(AÐ(HÀSÐQ]Ðfsð  }Bð  Cñ  Cô  Cð ð  GPØ%œN�	ðØ—K’K  YÅ2Ä7×CSÒCSÐT\ÑC]ÔC]�KÑ^Ô^Ð^Ð^øÝ$ð ð ð Ø—O’OÑ%Ô%Ð%Ý”I˜iÑ(Ô(Ð(Øðøøøð _ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð)Ý(¨Ñ-Ô-Ð-Ý”
˜9 hÑ/Ô/Ð/å”7—>’> )Ñ,Ô,ð )Ý”I˜iÑ(Ô(Ð(øøõ ”7—>’> )Ñ,Ô,ð )Ý”I˜iÑ(Ô(Ð(Ð(ð)øøøð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð" 	/Ð.Ð.Ð.Ð.Ð.àˆ�C˜Õ#7¸Ñ#AÔ#AÑBÔBÐBÐBÐBsy   Æ	AG/Ç/G3Ç6G3È$3NÉKÉ 5JÊKÊ4K
Ë
KËNËK	ËNË!K	Ë"NË&$L>Ì
4NÌ>6M4Í4NÎNÎNrR   )NNNNNT)NN)NNNTN)Nr¡   NN)NT)ri   rº   r9   r/   Útempfiler   r   Úshared.utils.download_progressr   r   r   r   r   r0   r1   r2   r3   r4   rO   rT   r�   rp   r‰   r—   r�   r    r¤   r§   rË   r   r&   r   ú<module>rÎ      sÈ  ðØ Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ð Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð ¨D¸QÈ1ð )ð )ð )ð )ð )ð €Ø€
ØÐ Ø€ØÐ ðTð Tð Tð Tðnð ð ðtð tð tð tð<Eð Eð Eð Eðð ð ð:(ð (ð (ð (ð
ð ð ð ð ð ð ðlð lð lð lðTð Tð Tð Tð,Cð ,Cð ,Cð ,Cð ,Cð ,Cr&   