Ë
    š„jƒ@  ã                   óŠ   — d dl Z d dlZd dlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZmZmZ ddlmZ  G d	„ d
e«      Zy)é    Né   )ÚFileDownloaderé   )ÚRequest)ÚCertificateVerifyErrorÚ	HTTPErrorÚTransportError)ÚContentTooShortErrorÚRetryManagerÚThrottledDownloadÚint_or_noneÚparse_http_rangeÚtry_call)ÚHTTPHeaderDictc                   ó   — e Zd Zd„ Zy)ÚHttpFDc                 ó°  ‡ ‡‡
‡‡‡‡‡‡‡‡‡‡‡‡— ‰d   Š‰j                  dd «      Ši Š‰ j                  ‰«      }|�|‰d<    G d„ dt        «      } |«       Š|‰_        ‰ j	                  |«      ‰_        d ‰_        t        ddi‰j                  d«      «      Š‰ j                  j                  d	d
«      Š‰r‰ j                  nA‰ j                  j                  d«      xs% ‰j                  di «      j                  d«      xs dŠd‰_
        d‰_        ‰ j                  j                  dd«      ‰_        t        j                  «       ‰_        t        ‰j                  d«      «      \  ŠŠ}‰ j                  j                  dd«      rWt         j"                  j%                  ‰j
                  «      r.t         j"                  j'                  ‰j
                  «      ‰_        ‰j                  dkD  ‰_         G d„ dt*        «      Š G d„ dt*        «      Š G d„ dt*        «      Š
ˆˆˆˆˆˆˆˆˆˆˆˆ ˆfd„}ˆfd„Šˆ
ˆˆˆˆˆˆ fd„}t-        ‰ j                  j                  d«      ‰ j.                  «      D ]  }	  |«         |«       c S  y
# ‰$ r}	|	j0                  |_        Y d }	~	Œ1d }	~	w‰
$ r d |_        |xj4                  dz  c_        Y ŒW‰$ r Y  y  ‰«        ‚ xY w)NÚurlÚrequest_dataÚimpersonatec                   óT   — e Zd Zej                  Zej                  Zej                  Z	y)ú-HttpFD.real_download.<locals>.DownloadContextN)
Ú__name__Ú
__module__Ú__qualname__ÚdictÚgetÚ__getattr__Ú__setitem__Ú__setattr__Ú__delitem__Ú__delattr__© ó    úM/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/downloader/http.pyÚDownloadContextr       s!   „ ØŸ(™(ˆKØ×*Ñ*ˆKØ×*Ñ*‰Kr$   r&   zAccept-EncodingÚidentityÚhttp_headersÚtestFÚhttp_chunk_sizeÚdownloader_optionsr   ÚwbÚ
buffersizei   ÚRangeÚ
continuedlTc                   ó   — e Zd Zy)ú-HttpFD.real_download.<locals>.SucceedDownloadN©r   r   r   r#   r$   r%   ÚSucceedDownloadr1   B   ó   „ Ør$   r3   c                   ó   — e Zd Zd„ Zy)ú+HttpFD.real_download.<locals>.RetryDownloadc                 ó   — || _         y ©N)Úsource_error)Úselfr9   s     r%   Ú__init__z4HttpFD.real_download.<locals>.RetryDownload.__init__F   s
   € Ø$0�Õ!r$   N)r   r   r   r;   r#   r$   r%   ÚRetryDownloadr6   E   s   „ ó1r$   r<   c                   ó   — e Zd Zy)ú*HttpFD.real_download.<locals>.NextFragmentNr2   r#   r$   r%   ÚNextFragmentr>   I   r4   r$   r?   c            	      ó,  •‡	‡
— ‰s$‰r"t        j                  t        ‰dz  «      ‰«      n‰‰_        ‰j                  dkD  rB‰j                  Š
‰�‰
‰z  Š
‰j
                  r‰j                  ‰j                  «       d‰_        n‰�‰Š
n‰j                  dkD  rdŠ
nd Š
d‰_        ‰j                  r#‰
‰j                  z   dz
  } ‰€| nt        | ‰«      Š	n‰�‰Š	nd Š	t        ˆ	ˆ
fd„«      r&d‰_        d‰_         ‰t        d‰
› d	‰	› d
�«      «      ‚t        ˆˆ	fd„«      r‰j                  dz
  Š	t        ‰‰‰‰¬«      }‰
d u}|r+dt        ‰
«      › dt        ‰	«      xs d› �|j                  d<   	 ‰j                  j!                  |«      ‰_        |rž‰j"                  j                  j%                  d«      }t'        |«      \  }}}‰
|k(  rB‰j                  r
|‰	k(  s|‰	k  r,|‰_        |s‰r t        |xs ‰‰xs |«      ‰xs dz
  ‰_        y ‰
dkD  r‰j+                  «        d‰_        d‰_        t        ‰j"                  j                  j%                  dd «      «      x‰_        ‰_        y # t,        $ �r„}|j.                  dk(  �rH	 ‰j                  j!                  t        ‰‰‰«      «      ‰_        ‰j"                  j                  d   }|�©‰j                  dz
  t        |«      cxk  r‰j                  dz   k  r{n nx‰j1                  ‰j2                  «       ‰j5                  ‰j6                  ‰j2                  «       ‰j9                  ‰j2                  d‰j                  ‰j                  dœ‰«       ‰‚‰j+                  «        d‰_        d‰_        Y d }~y # t,        $ r)}|j.                  dk  s|j.                  dk\  r‚ Y d }~n'd }~ww xY w|j.                  dk  s|j.                  dk\  r‚  ‰«      ‚d }~wt:        $ r ‚ t<        $ r} ‰|«      ‚d }~ww xY w)Ngffffffî?r   ÚabFr   c                  ó   •— ‰‰ kD  S r8   r#   )Ú	range_endÚrange_starts   €€r%   ú<lambda>zDHttpFD.real_download.<locals>.establish_connection.<locals>.<lambda>i   s   ø€  ¨iÑ 7€ r$   r,   zConflicting range. (start=z > end=ú)c                  ó"   •— ‰‰ j                   k\  S r8   )Úcontent_len)ÚctxrC   s   €€r%   rE   zDHttpFD.real_download.<locals>.establish_connection.<locals>.<lambda>n   s   ø€  	¨S¯_©_Ñ <€ r$   )Ú
extensionszbytes=ú-Ú r.   zContent-RangeúContent-lengthi   zContent-Lengthéd   Úfinished)ÚfilenameÚstatusÚdownloaded_bytesÚtotal_bytesiô  iX  )ÚrandomÚrandintÚintÚ
chunk_sizeÚ
resume_lenÚ	is_resumeÚreport_resuming_byteÚ	open_modeÚminr   Ú	ExceptionrH   r   r   ÚheadersÚydlÚurlopenÚdatar   r   Údata_lenÚreport_unable_to_resumer   rQ   Úreport_file_already_downloadedrP   Ú
try_renameÚtmpfilenameÚ_hook_progressr   r	   )Úchunk_aware_endÚrequestÚ	has_rangeÚcontent_rangeÚcontent_range_startÚcontent_range_endrH   ÚerrÚcontent_lengthrC   rD   r<   r3   rW   rI   r^   Ú	info_dictÚis_testÚreq_endÚ	req_startr   Úrequest_extensionsr:   r   s            @@€€€€€€€€€€€€€r%   Úestablish_connectionz2HttpFD.real_download.<locals>.establish_connectionL   sê  ú€ á%,±ô %Ÿn™n¬S°¸dÑ1BÓ-CÀZÔPØAKð ŒNà�~‰~ Ò!Ø!Ÿn™n�ØÐ(à 9Ñ,�KØ—=’=Ø×-Ñ-¨c¯n©nÔ=Ø $�•ØÐ&Ø'‘Ø—‘ !Ò#Ø‘à"�Ø!ˆCŒMà�~Š~Ø"-°·±Ñ">ÀÑ"B�à/6¨™OÄCÈÐY`ÓDa‘	ØÐ$à#‘	à �	äÔ7Ô8Ø!"�”Ø $�”Ù#¤IÐ0JÈ;È-ÐW^Ð_hÐ^iÐijÐ.kÓ$lÓmÐmäÔ<Ô=ØŸO™O¨aÑ/�	ä˜c <°ÐEWÔXˆGØ#¨4Ð/ˆIÙØ-3´C¸Ó4DÐ3EÀQÄ{ÐS\ÓG]ÒGcÐacÐFdÐ+e�—‘ Ñ(ðJ)ØŸ8™8×+Ñ+¨GÓ4�”ñ Ø$'§H¡H×$4Ñ$4×$8Ñ$8¸Ó$I�MÜJZÐ[hÓJiÑGÐ'Ð):¸Kà"Ð&9Ò9à #§¢ð  1°IÒ=Ø*¨YÒ6Ø*5˜œÙ&©'Ü+.¨{Ò/E¸gÀwÒG]ÐR]Ó+^ÐbkÒbpÐopÑ+q˜CœLØð % qšØ×4Ñ4Ô6Ø%&�C”NØ$(�C”MÜ1<¸S¿X¹X×=MÑ=M×=QÑ=QÐRbÐdhÓ=iÓ1jÐj�”˜s�øÜó ()Ø—:‘: Ó$ð!#à#'§8¡8×#3Ñ#3Ü# C¨°wÓ?ó$A˜œà),¯©×)9Ñ)9Ð:JÑ)K˜ð +Ð6Ø%(§^¡^°cÑ%9¼CÀÓ<OÔ%fÐRU×R`ÑR`ÐcfÑRfÕ%fð !×?Ñ?ÀÇÁÔMØ ŸO™O¨C¯O©O¸S¿\¹\ÔJØ ×/Ñ/Ø,/¯L©LØ*4Ø47·N±NØ/2¯~©~ñ	1ð
  )ô*ð #2Ð1ð !×8Ñ8Ô:Ø-.˜CœNØ,0˜CœMÜ"øô9 %ò "ØŸ:™:¨Ò+¨s¯z©z¸SÒ/@Ø!ô 0Aûð"úð: —Z‘Z #Ò%¨¯©°sÒ):àÙ# CÓ(Ð(ûÜ)ò ØÜ!ò )Ù# CÓ(Ð(ûð)úsX   Å,BI( È	AI( É(
PÉ2O1ÊANËC	O1Î	OÎOÎ=O1ÏOÏ*O1Ï1PÐPÐPc                  ó€   •— ‰ j                   �1‰ j                  dk7  r‰ j                   j                  «        d ‰ _         y y )NrK   )Ústreamrf   Úclose)rI   s   €r%   Úclose_streamz*HttpFD.real_download.<locals>.close_streamÂ   s5   ø€ Ø�z‰zÐ%Ø—?‘? cÒ)Ø—J‘J×$Ñ$Ô&Ø!�•
ð &r$   c                  ó(  •‡— ‰j                   j                  j                  d«      } ‰j                   j                  j                  d«      rd } ‰r&| �t        | «      ‰j                  kD  r‰j                  } | �Žt        | «      ‰j
                  z   } ‰j                  j                  d«      }‰j                  j                  d«      }|�| |k  r‰j                  d| › d|› d�«       y|�| |kD  r‰j                  d	| › d
|› d�«       yd‰j
                  z   Š‰j                  }t        j                  «       }d }|}ˆˆˆˆfd„}	 	 ‰j                   j                  ‰s|nt        || ‰z
  «      «      }‰t        «      z  Št        |«      dk(  r�n~‰j                  €}	 ‰j                  ‰j                   ‰j"                  «      \  ‰_        ‰_        ‰j                  €J ‚‰j%                  ‰j                   «      ‰_        ‰j)                  ‰j&                  «       	 ‰j                  j/                  |«       ‰j3                  ||‰‰j
                  z
  «       t        j                  «       }|}
‰j                  j                  dd«      s‰j5                  |
|z
  t        |«      «      }|
}‰j7                  ||‰‰j
                  z
  «      }‰j8                  €d }nJ‰j;                  |t        j                  «       ‰j8                  ‰j
                  z
  ‰‰j
                  z
  «      }‰j=                  d‰‰j8                  ‰j                   ‰j&                  |||‰j>                  z
  ‰j                  d«      dœ	‰«       | �‰| k(  rn�|rƒ|‰j                  j                  d«      xs dk  ra‰j@                  €|‰_         nV|‰j@                  z
  dkD  rD‰j                  �)‰j                   dk7  r‰j                  jC                  «        tD        ‚|rd ‰_         �ŒÉ‰j                  €#‰j1                  d«       ‰j-                  d«       y‰s0‰jF                  r$‰jH                  �‰‰jH                  k  r	‰‰_        ‰‚‰j                   dk7  r‰j                  jC                  «        | �"‰| k7  rtK        ‰t        | «      «      }	 ||	«       ‰jM                  ‰j                   ‰j&                  «       ‰j                  j                  d«      rC‰jO                  ‰j&                  ‰j                   j                  j                  dd «      «      ‰d<   ‰j=                  ‰‰‰j&                  dt        j                  «       ‰j>                  z
  ‰j                  d«      dœ‰«       y# t        $ r}	 ||	«       Y d }	~	�Œ7d }	~	ww xY w# t*        $ r}	‰j-                  d|	› �«       Y d }	~	yd }	~	ww xY w# t*        $ r/}	‰j1                  d«       ‰j-                  d|	› �«       Y d }	~	yd }	~	ww xY w)NrM   zContent-encodingÚmin_filesizeÚmax_filesizez/[download] File is smaller than min-filesize (z	 bytes < z bytes). Aborting.Fz.[download] File is larger than max-filesize (z	 bytes > r   c                 óÚ   •—  ‰«        ‰j                   dk(  r‰‰_        n/	 t        j                  j	                  ‰j                   «      ‰_         ‰| «      ‚# t
        $ r
 d‰_        Y Œw xY w)NrK   r   )rf   rX   ÚosÚpathÚgetsizeÚFileNotFoundError)Úer<   Úbyte_counterry   rI   s    €€€€r%   Úretryz5HttpFD.real_download.<locals>.download.<locals>.retryí   s]   ø€ Ù”Ø—?‘? cÒ)Ø%1�C•Nð+Ü)+¯©¯©¸¿¹Ó)I˜œñ $ AÓ&Ð&øô -ò +Ø)*˜žð+ús   ¡.A ÁA*Á)A*Tzunable to open for writing: ú
zunable to write data: ÚnoresizebufferÚdownloadingÚctx_id)	rQ   rR   rS   rf   rP   ÚetaÚspeedÚelapsedrˆ   Úthrottledratelimité   rK   zDid not get any data blocksÚ
updatetimezlast-modifiedÚfiletimerO   )rR   rS   rP   rQ   r‹   rˆ   )(ra   r^   r   rV   Ú_TEST_FILE_SIZErX   ÚparamsÚ	to_screenÚ
block_sizeÚtimeÚreadr\   r	   Úlenrw   Úsanitize_openrf   r[   Úundo_temp_namerP   Úreport_destinationÚOSErrorÚreport_errorÚwriteÚ	to_stderrÚ	slow_downÚbest_block_sizeÚ
calc_speedrb   Úcalc_etarg   Ú
start_timeÚthrottle_startrx   r   rW   rH   r
   re   Ú	try_utime)rb   Úmin_data_lenÚmax_data_lenr“   ÚstartÚnowÚbeforer„   Ú
data_blockrn   ÚafterrŠ   r‰   rƒ   r?   r<   ry   rI   rp   rq   r:   s                @€€€€€€€r%   Údownloadz&HttpFD.real_download.<locals>.downloadÈ   so  ù€ Ø—x‘x×'Ñ'×+Ñ+Ð,<Ó=ˆHà�x‰x×Ñ×#Ñ#Ð$6Ô7ð  �ñ ˜HÐ,´°H³À×@TÑ@TÒ0TØ×/Ñ/�àÐ#Ü˜x›=¨3¯>©>Ñ9�Ø#Ÿ{™{Ÿ™¨~Ó>�Ø#Ÿ{™{Ÿ™¨~Ó>�ØÐ+°¸<Ò0GØ—N‘NØJÈ8È*ÐT]Ð^jÐ]kÐk}Ð~ô@à ØÐ+°¸<Ò0GØ—N‘NØIÈ(ÈÐS\Ð]iÐ\jÐj|Ð}ôà à˜sŸ~™~Ñ-ˆLØŸ™ˆJÜ—I‘I“KˆEð ˆCØˆF÷	'ð ðà!$§¡§¡Á©zÌcÐR\Ð^fÐiuÑ^uÓNvÓ!w�Jð ¤ J£Ñ/�ô �z“? aÒ'Ùð —:‘:Ð%ð%Ø6:×6HÑ6HØŸO™O¨S¯]©]ó7<Ñ3˜œ
 C¤Oà"Ÿz™zÐ5Ð5Ð5Ø'+×':Ñ':¸3¿?¹?Ó'K˜œØ×/Ñ/°·±Ô=ð
!Ø—J‘J×$Ñ$ ZÔ0ð —‘˜u c¨<¸#¿.¹.Ñ+HÔIô —i‘i“k�Ø�ð —{‘{—‘Ð'7¸Ô?Ø!%×!5Ñ!5°e¸f±nÄcÈ*ÃoÓ!V�Jà�ð Ÿ™¨¨s°LÀ3Ç>Á>Ñ4QÓR�Ø—<‘<Ð'Ø‘CàŸ-™-¨¬t¯y©y«{¸C¿L¹LÈ3Ï>É>Ñ<YÐ[gÐjm×jxÑjxÑ[xÓy�Cà×#Ñ#Ø+Ø(4Ø#&§<¡<Ø#&§?¡?Ø #§¡ØØ"Ø" S§^¡^Ñ3Ø'Ÿm™m¨HÓ5ñ
%ð ô
ð Ð'¨L¸HÒ,DØá˜U d§k¡k§o¡oÐ6JÓ&KÒ&PÈqÒQð ×)Ñ)Ð1Ø-0˜Õ*Ø˜s×1Ñ1Ñ1°AÒ5ØŸ:™:Ð1°c·o±oÈÒ6LØŸJ™J×,Ñ,Ô.Ü/Ð/ÙØ)-�CÔ&ñ[ ð^ �z‰zÐ!Ø—‘˜tÔ$Ø×!Ñ!Ð"?Ô@Øá˜sŸ~š~°#·/±/Ð2MÐR^Ðad×apÑapÒRpØ!-�”Ø"Ð"à�‰ #Ò%Ø—
‘
× Ñ Ô"àÐ#¨¸Ò(@Ü*¨<¼¸X»ÓG�Ù�c”
à�O‰O˜CŸO™O¨S¯\©\Ô:ð �{‰{�‰˜|Ô,Ø(,¯©°s·|±|ÀSÇXÁX×EUÑEU×EYÑEYÐZiÐkoÓEpÓ(q�	˜*Ñ%à×ÑØ$0Ø+ØŸL™LØ$ÜŸ9™9›;¨¯©Ñ7Ø#Ÿ-™-¨Ó1ñ!ð ôð øôU &ò Ù˜#—J’Jûðûô" #ò %Ø×)Ñ)Ð,HÈÈÐ*NÔOÜ$ûð%ûô ò !Ø—N‘N 4Ô(Ø×%Ñ%Ð(>¸s¸eÐ&DÔEÜ ûð!úsI   Å,V ÆA<V/ ÈW Ö	V,ÖV'Ö'V,Ö/	WÖ8W×W×	X×"%XØXÚretriesr   )r   Ú_get_impersonate_targetr   rP   Ú	temp_namerf   rw   r   r‘   r�   r[   rX   r“   r”   r¢   r   r~   r   Úisfiler€   rY   r]   r   Úreport_retryr9   ÚerrorÚattempt)r:   rP   rp   Úimpersonate_targetr&   Ú_ru   r¬   r„   rn   r?   r<   r3   rW   ry   rI   r^   rq   rr   rs   r   rt   r   s   ` `       @@@@@@@@@@@@@r%   Úreal_downloadzHttpFD.real_download   ss  ÿþ€ Ø˜ÑˆØ —}‘} ^°TÓ:ˆØÐØ!×9Ñ9¸)ÓDÐØÐ)Ø0BÐ˜}Ñ-ô	+œdô 	+ñ
 ÓˆØˆŒØŸ.™.¨Ó2ˆŒØˆŒ
ô !Ð"3°ZÐ!@À)Ç-Á-ÐP^ÓB_Ó`ˆà—+‘+—/‘/ &¨%Ó0ˆÙ-4�T×)Ò)Ø�K‰K�O‰OÐ-Ó.ò Ø�}‰}Ð1°2Ó6×:Ñ:Ð;LÓMòàð 	ð
 ˆŒØˆŒØŸ™Ÿ™¨°tÓ<ˆŒÜŸ™›ˆŒô !1°·±¸WÓ1EÓ FÑˆ	�7˜Aà�;‰;�?‰?˜<¨Ô.ä�w‰w�~‰~˜cŸo™oÔ.Ü!#§¡§¡°·±Ó!A�”àŸ™¨Ñ*ˆŒô	œiô 	ô	1œIô 	1ô	œ9ô 	÷t	)÷ t	)ð t	)ôl	"÷^	ò ^	ô@ " $§+¡+§/¡/°)Ó"<¸d×>OÑ>OÓPò 	ˆEðÙ$Ô&Ù“zÒ!ð	ð  øð !ò Ø!×.Ñ.�”ÜûØò Ø"�”Ø—’ Ñ"•ÙØ"ò ÚðÙ”Øús$   É2JÊKÊ	JÊ$KËKË	KN)r   r   r   r¶   r#   r$   r%   r   r      s   „ ó`r$   r   )r~   rT   r”   Úcommonr   Ú
networkingr   Únetworking.exceptionsr   r   r	   Úutilsr
   r   r   r   r   r   Úutils.networkingr   r   r#   r$   r%   ú<module>r¼      s;   ðÛ 	Û Û å "Ý  ÷ñ ÷
÷ õ .ôaˆ^õ ar$   