Ë
    š„jÈa  ã                   ó   — 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 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d„ de j<                  «      Z G d	„ d
e
«      Z  G d„ de «      Z! G d„ de «      Z" G d„ de «      Z# G d„ de «      Z$ G d„ de «      Z% G d„ de «      Z& e'«       jQ                  «       D � �ci c]+  \  } }| jS                  d«      r| dvr|jU                  «       |“Œ- c}} Z+d„ Z,d„ Z-yc c}} w )é    Né   )Ú
FragmentFDé   )ÚEXT_TO_OUT_FORMATSÚFFmpegPostProcessor)ÚDownloadErrorÚPopenÚRetryManagerÚ_configuration_argsÚ_get_exe_version_outputÚcheck_executableÚclasspropertyÚcli_bool_optionÚ
cli_optionÚcli_valueless_optionÚdetermine_extÚencodeArgumentÚ
remove_endÚtraverse_objÚversion_tuplec                   óP   — e Zd Z ej                  «       Z ej                  «       Zy)ÚFeaturesN)Ú__name__Ú
__module__Ú__qualname__ÚenumÚautoÚ	TO_STDOUTÚMULTIPLE_FORMATS© ó    úQ/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/downloader/external.pyr   r       s   „ Ø�—	‘	“€IØ �t—y‘y“{Ñr!   r   c                   óÆ   — e Zd ZdZdZdZd„ Zed„ «       Ze	d„ «       Z
ej                  d„ «       Zedd	„«       Zed
„ «       Zedd„«       Zd„ Zdd„Zdd„Zdd„Zd„ Zd„ Zd„ Zy)Ú
ExternalFD©ÚhttpÚhttpsÚftpÚftpsr    Tc                 ó@  — | j                  |«       | j                  |«      }d | _        	 t        j                  «       }| j	                  ||«      }| j                  r| j                  | j                  «       	 |dk(  rx|dt        j                  «       z
  dœ}|dk7  rEt        j                  j                  |«      }| j                  ||«       |j                  ||dœ«       | j                  ||«       y	| j!                  d
«       | j#                  d| j                  «       |fz  «       y# t
        $ r; |j                  d«      s‚ d}| j                  d| j                  «       › d�«       Y �Œw xY w# | j                  r| j                  | j                  «       w w xY w)NÚis_liver   ú[z] Interrupted by userÚfinished)ÚfilenameÚstatusÚelapsedú-)Údownloaded_bytesÚtotal_bytesTú
z%s exited with code %dF)Úreport_destinationÚ	temp_nameÚ_cookies_tempfileÚtimeÚ_call_downloaderÚKeyboardInterruptÚgetÚ	to_screenÚget_basenameÚ
try_removeÚosÚpathÚgetsizeÚ
try_renameÚupdateÚ_hook_progressÚ	to_stderrÚreport_error)Úselfr.   Ú	info_dictÚtmpfilenameÚstartedÚretvalr/   Úfsizes           r"   Úreal_downloadzExternalFD.real_download*   s€  € Ø×Ñ Ô)Ø—n‘n XÓ.ˆØ!%ˆÔð	8Ü—i‘i“kˆGØ×*Ñ*¨;¸	ÓBˆFð ×%Ò%Ø—‘ × 6Ñ 6Õ7à�QŠ;à$Ø$ÜŸ9™9›;¨Ñ0ñˆFð
 ˜3ŠÜŸ™Ÿ™¨Ó4�Ø—‘ ¨XÔ6Ø—‘Ø(-Ø#(ñô ð ×Ñ ¨	Ô2Øà�N‰N˜4Ô Ø×ÑÐ6Ø×!Ñ!Ó# Vð:-ñ -ô .àøô? !ò 	KØ—=‘= Ô+Øð ˆFØ�N‰N˜Q˜t×0Ñ0Ó2Ð3Ð3HÐI×Jð	Kûð ×%Ò%Ø—‘ × 6Ñ 6Õ7ð &ús$   «&D, Ä,A E0Å,E3 Å/E0Å0E3 Å3*Fc                 ó<   — | j                   d d j                  «       S )Néþÿÿÿ)r   Úlower©Úclss    r"   r=   zExternalFD.get_basenameS   s   € à�|‰|˜C˜RÐ ×&Ñ&Ó(Ð(r!   c                 ó"   — | j                  «       S ©N)r=   rQ   s    r"   ÚEXE_NAMEzExternalFD.EXE_NAMEW   s   € à×ÑÓ!Ð!r!   c                 ó   — | j                   S rT   ©rU   )rG   s    r"   ÚexezExternalFD.exe[   s   € à�}‰}Ðr!   Nc                 óˆ   — t        |d | j                  «       fv r| j                  n|| j                  g«      }|sy|| _        |S )NF)r   r=   rU   ÚAVAILABLE_OPTrX   ©rR   r@   s     r"   Ú	availablezExternalFD.available_   sJ   € äØ  T¨3×+;Ñ+;Ó+=Ð$>Ñ>ˆC�LŠLÀDØ×ÑÐó!ˆñ ØØˆŒØˆr!   c                 ó&  ‡ — t        |j                  d«       xs t        j                  ‰ j                  v d|d   vxs t        j
                  ‰ j                  v t        |ddd«       t        ˆ fd„|d   j                  d«      D «       «      f«      S )NÚ	to_stdoutú+Úprotocol)Úhls_aes.Úextra_param_to_segment_urlÚextra_param_to_key_urlc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wrT   )ÚSUPPORTED_PROTOCOLS)Ú.0ÚprotorR   s     €r"   ú	<genexpr>z&ExternalFD.supports.<locals>.<genexpr>o   s   øè ø€ Ò_°U�˜×0Ñ0Ô0Ñ_ùs   ƒ)Úallr;   r   r   ÚSUPPORTED_FEATURESr   r   Úsplit)rR   rH   s   ` r"   ÚsupportszExternalFD.supportsi   s�   ø€ äØ—‘˜kÓ*Ð*ÒZ¬h×.@Ñ.@ÀC×DZÑDZÐ.ZØ�y Ñ,Ð,Òc´×0IÑ0IÈS×McÑMcÐ0cÜ˜YÐ(8Ð:VÐXpÓqÐqÜÓ_¸iÈ
Ñ>S×>YÑ>YÐZ]Ó>^Ô_Ó_ð	
ó ð 	r!   c                 óJ   — | j                  |«      xr | j                  |«      S rT   )r\   rl   )rR   rH   r@   s      r"   Úcan_downloadzExternalFD.can_downloadr   s   € à�}‰}˜TÓ"Ò> s§|¡|°IÓ'>Ð>r!   c                 ó0   — t        | j                  ||«      S rT   )r   Úparams)rG   Úcommand_optionÚparams      r"   Ú_optionzExternalFD._optionv   s   € Ü˜$Ÿ+™+ ~°uÓ=Ð=r!   c                 ó6   — t        | j                  |||||«      S rT   )r   rp   )rG   rq   rr   Ú
true_valueÚfalse_valueÚ	separators         r"   Ú_bool_optionzExternalFD._bool_optiony   s   € Ü˜tŸ{™{¨N¸EÀ:È{Ð\eÓfÐfr!   c                 ó2   — t        | j                  |||«      S rT   )r   rp   )rG   rq   rr   Úexpected_values       r"   Ú_valueless_optionzExternalFD._valueless_option|   s   € Ü# D§K¡K°ÀÈÓWÐWr!   c                 óˆ   — t        | j                  «       | j                  j                  d«      | j                  |g|¢­i |¤ŽS )NÚexternal_downloader_args)r   r=   rp   r;   rU   )rG   ÚkeysÚargsÚkwargss       r"   r   zExternalFD._configuration_args   sD   € Ü"Ø×ÑÓ §¡§¡Ð1KÓ!LÈdÏmÉmØð#àò#à!ñ#ð 	#r!   c                 ó®  — | j                   j                  j                  sWt        j                  dd¬«      }|j                  «        |j                  | _        | j                  d| j                  › d�«       | j                   j                  j                  | j                  dd«       | j                   j                  j                  xs | j                  S )Nz.cookiesF)ÚsuffixÚdeletez.[download] Writing temporary cookies file to "ú"T)
ÚydlÚ	cookiejarr.   ÚtempfileÚNamedTemporaryFileÚcloseÚnamer7   r<   Úsave)rG   Útmp_cookiess     r"   Ú_write_cookieszExternalFD._write_cookies„   s£   € Ø�x‰x×!Ñ!×*Ò*Ü"×5Ñ5¸ZÐPUÔVˆKØ×ÑÔØ%0×%5Ñ%5ˆDÔ"Ø�N‰NÐKÈD×LbÑLbÐKcÐcdÐeÔfà�‰×Ñ×Ñ × 6Ñ 6¸¸dÔCØ�x‰x×!Ñ!×*Ñ*ÒD¨d×.DÑ.DÐDr!   c                 ó~  — | j                  ||«      D �cg c]  }t        |«      ‘Œ }}| j                  |«       d|vr-| j                  ||«      \  }}}|r|r| j	                  |«       |S | j
                  j                  dd«      }t        | j
                  j                  d«      | j                  d| ¬«      }	|	D ]>  }
| j                  ||«      \  }}}|s n$|r| j	                  |«       t        «       |
_
        Œ@ |s|	j                  ry| j                  |«      }| j                  |d«      \  }}t        |d   «      D ]†  \  }}|› d	|› �}	 | j                  |d
«      \  }}|j#                   |||j%                  «       «      «       |j'                  «        | j
                  j                  dd«      rŒv| j)                  |«       Œˆ |j'                  «        | j)                  |› d�«       yc c}w # t        $ r@}|r|dkD  r| j                  ||«       Y d}~ŒÚ| j!                  d|› d|› �«       Y d}~ yd}~ww xY w)z. Either overwrite this or implement _make_cmd Ú	fragmentsÚskip_unavailable_fragmentsTÚfragment_retriesN)Ú
frag_indexÚfataléÿÿÿÿÚwbz-FragÚrbr   zUnable to open fragment z; Úkeep_fragmentsFz
.frag.urlsr   )Ú	_make_cmdr   Ú
_debug_cmdÚ_call_processrE   rp   r;   r
   Úreport_retryÚ	ExceptionÚerrorÚ	decrypterÚsanitize_openÚ	enumerateÚOSErrorÚreport_skip_fragmentrF   ÚwriteÚreadr‰   r>   )rG   rI   rH   ÚaÚcmdÚ_ÚstderrÚ
returncoder�   Úretry_managerÚretryÚdecrypt_fragmentÚdestr’   ÚfragmentÚfragment_filenameÚsrcÚerrs                     r"   r9   zExternalFD._call_downloaderŽ   s2  € à*.¯.©.¸ÀiÓ*PÖQ QŒ~˜aÕ ÐQˆÐQà�‰˜Ôà˜iÑ'Ø$(×$6Ñ$6°s¸IÓ$FÑ!ˆAˆv�zÙ™fØ—‘˜vÔ&ØÐà%)§[¡[§_¡_Ð5QÐSWÓ%XÐ"ä$ T§[¡[§_¡_Ð5GÓ%HÈ$×J[ÑJ[Ø04Ð@ZÐ<Zô\ˆà"ò 		ˆEØ$(×$6Ñ$6°s¸IÓ$FÑ!ˆAˆv�zÙÙñ Ø—‘˜vÔ&Ü#›+ˆEŒKØð		ñ *¨m×.AÒ.AØàŸ>™>¨)Ó4ÐØ×$Ñ$ [°$Ó7‰ˆˆaÜ$-¨i¸Ñ.DÓ$Eò 	3Ñ ˆJ˜Ø#. -¨u°Z°LÐ AÐðØ×+Ñ+Ð,=¸tÓD‘��Qð �J‰JÑ'¨°#·(±(³*Ó=Ô>Ø�I‰IŒKØ—;‘;—?‘?Ð#3°UÕ;Ø—‘Ð 1Õ2ð	3ð 	�
‰
ŒØ�‰˜;˜- zÐ2Ô3Øùò[ RøôB ò Ù-°*¸q².Ø×-Ñ-¨j¸#Ô>ÜØ×!Ñ!Ð$<¸Z¸LÈÈ3È%Ð"PÔQÝûðús#   •G.ÅG3Ç3	H<Ç<H7ÈH7È7H<c                 ót   — t        j                  |d| j                  rt        j                  ¬«      S d ¬«      S )NT)Útextr¨   )r	   ÚrunÚ_CAPTURE_STDERRÚ
subprocessÚPIPE)rG   r¦   rH   s      r"   rš   zExternalFD._call_process¿   s*   € Ü�y‰y˜ 4À4×CWÒCW´
·±ÔbÐbÐ]aÔbÐbr!   rT   )ÚtrueÚfalseN)T)r   r   r   re   rj   rµ   rM   Úclassmethodr=   r   rU   Ú	functoolsÚcached_propertyrX   r\   rl   rn   rs   rx   r{   r   r�   r9   rš   r    r!   r"   r$   r$   %   s¿   „ Ø:ÐØÐØ€Oò'ðR ñ)ó ð)ð ñ"ó ð"ð ×Ññó ðð òó ðð ñó ðð ò?ó ð?ò>ógóXó#ò
Eò/óbcr!   r$   c                   ó6   — e Zd ZdZdZdZedd„«       Zd„ Zd„ Z	y)	ÚCurlFDú-VF)é   é;   Nc                 óª   — |€d}t        |dg«      }|sy|j                  dd¬«      }t        |«      dk  ry|| _        t	        |d   d	¬
«      | _        |S )NÚcurlr¿   Fú r   )Úmaxsplité   r   T)Úlenient)r   rk   ÚlenrX   r   Ú_curl_version)rR   r@   ÚoutputÚpartss       r"   r\   zCurlFD.availableÈ   s_   € àˆ<ØˆDÜ(¨°¨vÓ6ˆÙØØ—‘˜S¨1�Ó-ˆÜˆu‹:˜Š>ØàˆŒÜ)¨%°©(¸DÔAˆÔØˆr!   c                 ór  — | j                   dd|dg}| j                  | j                  k\  r|ddgz  }nTt        j                  j                  d«      r|ddgz  }n-| j                  «       }d|v rt        d«      ‚|dk7  sJ ‚|d|gz  }|j                  d	«      �'|d	   j                  «       D ]  \  }}|d
|› d|› �gz  }Œ || j                  dddd«      z  }|| j                  dd«      z  }|| j                  dd«      z  }|| j                  dd«      z  }| j                  dd«      }t        |«      dk(  r|d   dv rd|d<   ||z  }|| j                  dd«      z  }|| j                  dd«      z  }|| j                  dd «      z  }|| j                  d!d"«      z  }|| j                  «       z  }|d#|d$   gz  }|S )%Nz
--locationú-oz--compressedz--cookier1   ú	/dev/fd/0ú=zacurl version too old or temp directory contains `=`; please use another downloader or update curlÚhttp_headersú--headerú: z--continue-atÚ
continuedlÚ0z--silentÚ
noprogressz	--verboseÚverboseú--limit-rateÚ	ratelimitz--retryÚretriesr   r   ©ÚinfÚinfiniteÚ
2147483647z--max-filesizeÚmax_filesizeú--interfaceÚsource_addressz--proxyÚproxyz
--insecureÚnocheckcertificateú--Úurl)rX   rÉ   Ú_MIN_VERSION_FOR_STDIN_COOKIESr?   r@   Úislinkr�   r   r;   Úitemsrx   r{   rs   rÈ   r   )rG   rI   rH   r¦   Úcookies_fileÚkeyÚvalr«   s           r"   r˜   zCurlFD._make_cmd×   s  € Ø�x‰x˜ t¨[¸.ÐIˆà×Ñ ×!DÑ!DÒDà�J Ð$Ñ$‰CÜ�W‰W�^‰^˜KÔ(Ø�J Ð,Ñ,‰Cà×.Ñ.Ó0ˆLØ�lÑ"Ü#ð  %Hó  Ið  IØ 3Ò&Ð&Ð&Ø�J Ð-Ñ-ˆCà�=‰=˜Ó(Ð4Ø% nÑ5×;Ñ;Ó=ò 5‘��SØ˜
 s e¨2¨c¨U OÐ4Ñ4‘ð5ð 	ˆt× Ñ  °,ÀÀSÓIÑIˆØˆt×%Ñ% j°,Ó?Ñ?ˆØˆt×%Ñ% k°9Ó=Ñ=ˆØˆt�|‰|˜N¨KÓ8Ñ8ˆØ—‘˜Y¨	Ó2ˆÜˆu‹:˜Š?Ø�Q‰xÐ.Ñ.Ø'��a‘Ø�5‰LˆCØˆt�|‰|Ð,¨nÓ=Ñ=ˆØˆt�|‰|˜MÐ+;Ó<Ñ<ˆØˆt�|‰|˜I wÓ/Ñ/ˆØˆt×%Ñ% lÐ4HÓIÑIˆØˆt×'Ñ'Ó)Ñ)ˆØ��i Ñ&Ð'Ñ'ˆØˆ
r!   c                 ób  — | j                   | j                  kD  st        j                  j	                  d«      rat        j                  «       }| j                  j                  j                  |dd«       t        j                  |d|j                  «       ¬«      S t        j                  |d¬«      S )NrÎ   T)r³   Úinput)r³   )rÉ   rå   r?   r@   ræ   ÚioÚStringIOr…   r†   Ú_really_saver	   r´   Úgetvalue)rG   r¦   rH   Úbuffers       r"   rš   zCurlFD._call_processû   sz   € Ø×Ñ × CÑ CÒCÄrÇwÁwÇ~Á~ÐVaÔGbä—[‘[“]ˆFØ�H‰H×Ñ×+Ñ+¨F°D¸$Ô?Ü—9‘9˜S t°6·?±?Ó3DÔEÐEô �y‰y˜ 4Ô(Ð(r!   rT   )
r   r   r   rZ   rµ   rå   rº   r\   r˜   rš   r    r!   r"   r¾   r¾   Ã   s/   „ Ø€MØ€OØ%,Ð"àòó ðò"óH)r!   r¾   c                   ó   — e Zd ZdZd„ Zy)ÚAxelFDr¿   c                 ó8  — | j                   d|g}|j                  d«      �'|d   j                  «       D ]  \  }}|d|› d|› �gz  }Œ | j                  j                  j                  |d   «      }|r|dd|› �dgz  }|| j                  «       z  }|d|d   gz  }|S )	NrÍ   rÐ   z-HrÒ   rä   zCookie: z--max-redirect=0rã   )rX   r;   rç   r…   r†   Úget_cookie_headerr   ©rG   rI   rH   r¦   ré   rê   Úcookie_headers          r"   r˜   zAxelFD._make_cmd	  sÂ   € Ø�x‰x˜˜{Ð+ˆØ�=‰=˜Ó(Ð4Ø% nÑ5×;Ñ;Ó=ò /‘��SØ˜   R¨ u˜oÐ.Ñ.‘ð/àŸ™×*Ñ*×<Ñ<¸YÀuÑ=MÓNˆÙØ�D˜H ] OÐ4Ð6HÐIÑIˆCØˆt×'Ñ'Ó)Ñ)ˆØ��i Ñ&Ð'Ñ'ˆØˆ
r!   N©r   r   r   rZ   r˜   r    r!   r"   ró   ró     s   „ Ø€Mó
r!   ró   c                   ó   — e Zd ZdZd„ Zy)ÚWgetFDú	--versionc                 ó<  — | j                   d|ddg}|d| j                  «       gz  }|j                  d«      �'|d   j                  «       D ]  \  }}|d|› d|› �gz  }Œ || j	                  dd	«      z  }| j	                  d
d«      }t        |«      dk(  r|d   dv rd|d<   ||z  }|| j	                  dd«      z  }| j                  j                  d«      }|rdD ]  }|d|› d|› �gz  }Œ || j                  dd«      z  }|| j                  «       z  }|d|d   gz  }|S )Nz-Oz-nvz--compression=autoz--load-cookiesrÐ   rÑ   rÒ   r×   rØ   z--triesrÙ   r   r   rÚ   rÔ   z--bind-addressrà   rá   )Ú
http_proxyÚhttps_proxyz	--executerÏ   z--no-check-certificaterâ   rã   rä   )	rX   r�   r;   rç   rs   rÈ   rp   r{   r   )	rG   rI   rH   r¦   ré   rê   r«   rá   Úvars	            r"   r˜   zWgetFD._make_cmd  sb  € Ø�x‰x˜˜{¨EÐ3GÐHˆØÐ  $×"5Ñ"5Ó"7Ð8Ñ8ˆØ�=‰=˜Ó(Ð4Ø% nÑ5×;Ñ;Ó=ò 5‘��SØ˜
 s e¨2¨c¨U OÐ4Ñ4‘ð5àˆt�|‰|˜N¨KÓ8Ñ8ˆØ—‘˜Y¨	Ó2ˆÜˆu‹:˜Š?Ø�Q‰xÐ.Ñ.Ø��a‘Ø�5‰LˆCØˆt�|‰|Ð,Ð.>Ó?Ñ?ˆØ—‘—‘ Ó(ˆÙØ4ò 7�Ø˜¨ u¨A¨e¨WÐ%5Ð6Ñ6‘ð7àˆt×%Ñ%Ð&>Ð@TÓUÑUˆØˆt×'Ñ'Ó)Ñ)ˆØ��i Ñ&Ð'Ñ'ˆØˆ
r!   Nrø   r    r!   r"   rú   rú     s   „ Ø€Mór!   rú   c                   ó*   — e Zd ZdZdZed„ «       Zd„ Zy)ÚAria2cFDz-vr%   c                 ó‚   — t         j                  j                  | «      r| S dt         j                  j                  › | › �S )Nú.)r?   r@   ÚisabsÚsep)Úfns    r"   Ú_aria2c_filenamezAria2cFD._aria2c_filename4  s/   € ä—W‘W—]‘] 2Ô&ˆrÐA¨a´·±·±¨}¸R¸DÐ,AÐAr!   c                 ó~  — | j                   ddddddddd	d
ddg}|d| j                  «       › �gz  }|j                  d«      �'|d   j                  «       D ]  \  }}|d|› d|› �gz  }Œ || j	                  dd«      z  }|| j	                  dd«      z  }|| j	                  dd«      z  }|| j                  ddddd«      z  }|| j                  ddddd«      z  }|| j                  ddddd«      z  }|| j                  d d!ddd«      z  }|| j                  «       z  }|d"gz  }|d#gz  }|d$gz  }|d%gz  }t        j                  j                  |«      }|r1|d&| j                  |«      t        j                  j                  z   gz  }|d'| j                  t        j                  j                  |«      «      d(|d)   gz  }|S )*Nz	--no-confz--auto-save-interval=10z--console-log-level=warnz--summary-interval=0z--download-result=hidez--http-accept-gzip=truez--file-allocation=nonez-x16z-j16z-s16z--min-split-sizeÚ1Mz--load-cookies=rÐ   rÑ   rÒ   z--max-overall-download-limitrØ   rß   rà   z--all-proxyrá   z--check-certificaterâ   r¹   r¸   rÏ   z--remote-timeÚ
updatetimez--show-console-readoutrÕ   z--remove-control-filerÓ   z--allow-overwrite=truez--always-resume=falsez--auto-file-renaming=falsez--force-save=falsez--dirz--outrã   rä   )rX   r�   r;   rç   rs   rx   r   r?   r@   Údirnamer  r  Úbasename)rG   rI   rH   r¦   ré   rê   Údns          r"   r˜   zAria2cFD._make_cmd8  s#  € Ø�x‰x˜Ð&?Ø)Ð+AÐC[Ø(Ð*BÀFÈFÐTZØ! 4ð)ˆð
 	�/ $×"5Ñ"5Ó"7Ð!8Ð9Ð:Ñ:ˆØ�=‰=˜Ó(Ð4Ø% nÑ5×;Ñ;Ó=ò 5‘��SØ˜
 s e¨2¨c¨U OÐ4Ñ4‘ð5àˆt�|‰|Ð:¸KÓHÑHˆØˆt�|‰|˜MÐ+;Ó<Ñ<ˆØˆt�|‰|˜M¨7Ó3Ñ3ˆØˆt× Ñ Ð!6Ð8LÈgÐW]Ð_bÓcÑcˆØˆt× Ñ  °,ÀÈÐQTÓUÑUˆØˆt× Ñ Ð!9¸<ÈÐRXÐZ]Ó^Ñ^ˆØˆt× Ñ Ð!8¸,ÈÐQWÐY\Ó]Ñ]ˆØˆt×'Ñ'Ó)Ñ)ˆàÐ(Ð)Ñ)ˆØÐ'Ð(Ñ(ˆØÐ,Ð-Ñ-ˆØÐ$Ð%Ñ%ˆô �W‰W�_‰_˜[Ó)ˆÙØ�G˜T×2Ñ2°2Ó6¼¿¹¿¹ÑDÐEÑEˆCàØØ×!Ñ!¤"§'¡'×"2Ñ"2°;Ó"?Ó@ØØ�eÑð	
ñ 	
ˆð ˆ
r!   N)r   r   r   rZ   re   Ústaticmethodr  r˜   r    r!   r"   r  r  0  s&   „ Ø€MØ:ÐàñBó ðBó)r!   r  c                   ó   — e Zd ZdZdZd„ Zy)ÚHttpieFDrû   r&   c                 óî   — ddd||d   g}|j                  d«      �&|d   j                  «       D ]  \  }}||› d|› �gz  }Œ | j                  j                  j	                  |d   «      }|r	|d|› �gz  }|S )Nr&   z
--downloadz--outputrä   rÐ   ú:zCookie:)r;   rç   r…   r†   rõ   rö   s          r"   r˜   zHttpieFD._make_cmdh  s›   € Ø�| Z°¸iÈÑ>NÐOˆà�=‰=˜Ó(Ð4Ø% nÑ5×;Ñ;Ó=ò (‘��SØ˜3˜%˜q  ˜Ð'Ñ'‘ð(ð Ÿ™×*Ñ*×<Ñ<¸YÀuÑ=MÓNˆÙØ�g˜m˜_Ð-Ð.Ñ.ˆCØˆ
r!   N)r   r   r   rZ   rU   r˜   r    r!   r"   r  r  d  s   „ Ø€MØ€Hór!   r  c                   ón   — e Zd ZdZej
                  ej                  fZedd„«       Z	d„ Z
ed„ «       Zd„ Zy)ÚFFmpegFD)	r&   r'   r(   r)   Úm3u8Úm3u8_nativeÚrtmpÚrtmp_ffmpegÚhttp_dash_segmentsNc                 ó*   — t        «       j                  S rT   )r   r\   r[   s     r"   r\   zFFmpegFD.available}  s   € ô #Ó$×.Ñ.Ð.r!   c                  ó   — y)z Override this in subclasses  Nr    )rG   ÚprocÚstdins      r"   Úon_process_startedzFFmpegFD.on_process_startedƒ  s   € àr!   c                 óÄ   — |j                  d«      xrN |j                  d«      xr; |j                  d«       xr' d|j                  dg «      vxr | j                  |«      S )NÚrequested_formatsr`   Úallow_unplayable_formatszno-direct-mergeÚcompat_opts)r;   rn   )rR   rH   rp   s      r"   Úcan_merge_formatszFFmpegFD.can_merge_formats‡  sk   € ð �M‰MÐ-Ó.ò ,Ø—‘˜jÓ)ò,à—J‘JÐ9Ó:Ð:ò,ð "¨¯©°MÀ2Ó)FÐFò,ð × Ñ  Ó+ð	-r!   c           	      óþ  — t        | ¬«      }|j                  s| j                  d«       y|j                  «        |j                  dg}dD ]'  }| j
                  j                  |d«      sŒ |d|gz  } n | j
                  j                  d«      s|dgz  }d }| j
                  j                  d	«      }|rvt        j                  d
|«      sd|› �}|j                  d«      r"| j                  | j                  «       › d�«       t        j                  j                  «       }||d<   ||d<   |j                  d«      xs d|j                  d«      }	}t        |d«      }
|j                  d«      xs |g}t!        |«      D �]Æ  \  }}t        j                  d|d   «      }|r(| j"                  j$                  j'                  |d   «      ng }|r)|j)                  ddj+                  d„ |D «       «      g«       |j                  d«      xs |j                  d«      }|r9|r7|j)                  ddj+                  d„ |j-                  «       D «       «      g«       |r|dt/        |«      gz  }|	r|dt/        |	|z
  «      gz  }|j                  d«      }|d k(  rÿ|j                  d!«      }|j                  d"«      }|j                  d#«      }|j                  d$«      }|j                  d%«      }|j                  d&«      }|j                  d'd«      }|j                  d(«      }|�|d)|gz  }|�|d*|gz  }|�|d+|gz  }|�|d,|gz  }|�|d-|gz  }|�|d.|gz  }|r|d/d0gz  }t1        |t2        «      r|D ]	  }|d1|gz  }Œ n4t1        |t.        «      r$|d1|gz  }n|d2k(  r|j                  d3«      r|d4gz  }|d   }| j
                  j                  d5«      rD|j                  d6«      r3|d7d8gz  }t        j4                  d9t        j6                  d:k(  rd6nd;|«      }|t        |d«      xs |
z  }|g | j9                  d<|d=z   › �d<f«      ¢d>‘|‘z  }�ŒÉ |s|	r| j
                  j                  d?«      s|d@dAgz  }|j                  d«      sd2k(  r=t!        |«      D ]/  \  }}|j                  dBd«      }|j)                  dC|› dD|› �g«       Œ1 | j
                  j                  dEd«      r|dFt/        | j:                  «      gz  }|dG   }dHv r¢|dIk(  xs | j
                  j                  dJ«      }|€|j                  d3«      }|r|dKdLgz  }nÿ|dKdMgz  }|j<                  dNk(  ré|j>                  j                  dO«      rÎ|j                  dP«      r|dP   jA                  dQ«      d   dRv r¤|dSdTgz  }nœ|d k(  r|dKdUgz  }n�|dMk(  r|dIk(  r|dKdLgz  }n}|dVk(  r]tC        tE        |dW«      «      }|dVk(  r| j                  dX«       nL| j                  dY|› dZ�«       |dKtG        j                  ||«      gz  }n|dKtG        j                  ||«      gz  }|t        |d[«      z  }|| j9                  d\«      z  }|D �cg c]  }tI        |«      ‘Œ }}|jK                  |jM                  |«      «       | jO                  |«       tQ        d]„ |D «       «      } tS        |tT        jV                  |¬^«      5 }!| r| jY                  |!|!jZ                  «       	 |!j]                  «       }"|"cd d d «       S c c}w # t^        $ rO}#t1        |#t`        «      r'tb        jd                  d_k7  r| s|!jg                  d`«       ‚ |!ji                  d ¬a«       ‚ d }#~#ww xY w# 1 sw Y   y xY w)bN)Ú
downloaderzDm3u8 download detected but ffmpeg could not be found. Please installFz-y)ÚquietrÖ   z	-loglevelrÖ   z-hide_bannerrá   z[\da-zA-Z]+://zhttp://Úsockszt does not support SOCKS proxies. Downloading is likely to fail. Consider adding --hls-prefer-native to your command.Ú
HTTP_PROXYrý   Úsection_startr   Úsection_end)Údownloader_optionsÚffmpeg_args.r   z	https?://rä   z-cookiesÚ c           	   3   óˆ   K  — | ]:  }|j                   › d |j                  › d|j                  › d|j                  › d�–— Œ< y­w)rÏ   z; path=z	; domain=z;
N)rŠ   Úvaluer@   Údomain)rf   Úcookies     r"   rh   z,FFmpegFD._call_downloader.<locals>.<genexpr>¼  sE   è ø€ ò 1+àð —{‘{�m 1 V§\¡\ N°'¸&¿+¹+¸ÀiÐPV×P]ÑP]ÈÐ^cÔdñ1+ùs   ‚A ArÐ   z-headersc              3   ó2   K  — | ]  \  }}|› d |› d�–— Œ y­w)rÒ   z
Nr    )rf   ré   rê   s      r"   rh   z,FFmpegFD._call_downloader.<locals>.<genexpr>Ã  s!   è ø€ Ò0jÉÈÈc°C°5¸¸3¸%¸tÔ1DÑ0jùs   ‚z-ssz-tr`   r  Ú
player_urlÚpage_urlÚappÚ	play_pathÚtc_urlÚflash_versionÚ	rtmp_liveÚ	rtmp_connz-rtmp_swfverifyz-rtmp_pageurlz	-rtmp_appz-rtmp_playpathz-rtmp_tcurlz-rtmp_flashverz
-rtmp_liveÚlivez
-rtmp_connr  r+   z-reÚenable_file_urlszfile:z-protocol_whitelistz#file,crypto,data,http,https,tcp,tlsz^file://(?:localhost)?/Úntzfile:/Ú_ir   z-iÚforce_keyframes_at_cutsz-cÚcopyÚmanifest_stream_numberz-mapr  Útestz-fsÚext)r  r  r1   Úhls_use_mpegtsz-fÚmpegtsÚmp4ÚffmpegÚneeds_adtstoascÚacodecr  )ÚaacÚmp4az-bsf:aÚaac_adtstoascÚflvÚunknown_videoz.partz�The video format is unknown and cannot be downloaded by ffmpeg. Explicitly set the extension in the filename to attempt download in that formatz3The video format is unknown. Trying to download as z according to the filename)r+  Úffmpeg_args_out.)Ú_o1Ú_or-  c              3   ó*   K  — | ]  }|d    dv –— Œ y­w)rä   )r1   zpipe:Nr    )rf   Úfmts     r"   rh   z,FFmpegFD._call_downloader.<locals>.<genexpr>/  s   è ø€ ÒM°S�C˜‘J .Ô0ÑMùs   ‚)r  ÚenvÚwin32ó   q)Útimeout)5r   r\   rF   Úcheck_versionÚ
executablerp   r;   ÚreÚmatchÚ
startswithÚreport_warningr=   r?   Úenvironr@  r   r    r…   r†   Úget_cookies_for_urlÚextendÚjoinrç   ÚstrÚ
isinstanceÚlistÚsubrŠ   r   Ú_TEST_FILE_SIZEr  Ú	_featuresrk   r   r   r   r   ÚappendÚ_ffmpeg_filename_argumentr™   Úanyr	   r¶   r·   r  r  ÚwaitÚBaseExceptionr:   ÚsysÚplatformÚcommunicate_or_killÚkill)$rG   rI   rH   Úffppr   Ú	log_levelrT  rá   Ú
start_timeÚend_timeÚfallback_input_argsÚselected_formatsÚirS  Úis_httpÚcookiesrÐ   r`   r3  r4  r5  r6  r7  r8  r;  ÚconnÚentryrä   Ústream_numberrC  Ú
use_mpegtsÚoptÚpipedr  rK   Úes$                                       r"   r9   zFFmpegFD._call_downloader�  s  € Ü"¨dÔ3ˆØ�~Š~Ø×ÑÐdÔeØØ×ÑÔà—‘ Ð&ˆà-ò 	ˆIØ�{‰{�‰˜y¨%Õ0Ø˜ iÐ0Ñ0�Ùð	ð �{‰{�‰˜yÔ)Ø�^Ð$Ñ$ˆDàˆØ—‘—‘ Ó(ˆÙÜ—8‘8Ð-¨uÔ5Ø! % Ð)�à×Ñ Ô(Ø×#Ñ#Ø×(Ñ(Ó*Ð+ð ,Kð KôLô —*‘*—/‘/Ó#ˆCØ %ˆC�ÑØ %ˆC�Ñà(Ÿ}™}¨_Ó=ÒBÀÀIÇMÁMÐR_ÓD`�Hˆ
ä*¨9Ð6`ÓaÐà$Ÿ=™=Ð)<Ó=ÒLÀ)ÀÐÜÐ 0Ó1ó G	Q‰FˆAˆsÜ—h‘h˜|¨S°©ZÓ8ˆGÙLS�d—h‘h×(Ñ(×<Ñ<¸SÀ¹ZÔHÐY[ˆGÙØ—‘˜Z¨¯©ñ 1+à")ô1+ó *+ð ,ô -ð Ÿ7™7 >Ó2ÒS°i·m±mÀNÓ6SˆLÙ¡ð —‘˜Z¨¯©Ñ0jÐUa×UgÑUgÓUiÔ0jÓ)jÐkÔláØ˜¤ J£Ð0Ñ0�ÙØ˜œs 8¨jÑ#8Ó9Ð:Ñ:�à—w‘w˜zÓ*ˆHà˜6Ò!Ø ŸW™W \Ó2�
ØŸ7™7 :Ó.�Ø—g‘g˜e“n�ØŸG™G KÓ0�	ØŸ™ Ó*�Ø #§¡¨Ó 8�Ø—w‘w˜{¨EÓ2�Ø—w‘w˜{Ó+�ØÐ)ØÐ.°
Ð;Ñ;�DØÐ'Ø˜_¨hÐ7Ñ7�DØ�?Ø˜[¨#Ð.Ñ.�DØÐ(ØÐ-¨yÐ9Ñ9�DØÐ%Ø˜]¨FÐ3Ñ3�DØ Ð,ØÐ-¨}Ð=Ñ=�DÙØ˜\¨6Ð2Ñ2�DÜ˜d¤DÔ)Ø!%ò 6˜Ø ¨uÐ 5Ñ5™ñ6ä ¤cÔ*Ø˜\¨4Ð0Ñ0‘DàÐ1Ò1°i·m±mÀIÔ6Nð
 ˜˜‘�à�e‘*ˆCØ�{‰{�‰Ð1Ô2°s·~±~ÀgÔ7Nð Ð.Ð0UÐVÑV�ô —f‘fÐ7ÄBÇGÁGÈtÂO¹ÐYaÐcfÓg�à”L Ð&PÓQÒhÐUhÑhˆDØÐP�d×.Ñ.°"°Q¸±U°G°¸dÐ/CÓDÐPÀdÐPÈCÐPÑPŠDðOG	QñR ™h¨t¯{©{¯©Ð?XÔ/YØ�T˜6�NÑ"ˆDà�=‰=Ð,Ô-°Ð=QÒ1QÜ#Ð$4Ó5ò >‘��3Ø #§¡Ð(@À!Ó D�Ø—‘˜V¨ s¨!¨M¨?Ð%;Ð<Õ=ð>ð �;‰;�?‰?˜6 5Ô)Ø�UœC × 4Ñ 4Ó5Ð6Ñ6ˆDà˜ÑˆØÐ.Ñ.Ø%¨Ñ,ÒR°·±·±ÐAQÓ1RˆJØÐ!Ø&Ÿ]™]¨9Ó5�
ÙØ˜˜xÐ(Ñ(‘à˜˜u˜Ñ%�Ø—M‘M XÒ-°$·.±.×2DÑ2DÐEVÔ2WÐbk×boÑboÐpxÔbyð  ~Gð  HPñ  ~Q÷  ~Wñ  ~Wð  X[ó  ~\ð  ]^ñ  ~_ð  crñ  ~rØ˜X Ð7Ñ7‘DØ˜ÒØ�T˜5�MÑ!‰DØ�EŠ\˜k¨SÒ0Ø�T˜8Ð$Ñ$‰DØ�OÒ#Ü¤
¨;¸Ó @ÓAˆCØ�oÒ%Ø×#Ñ#ðfõgð ×#Ñ#Ð&YÐZ]ÐY^Ð^xÐ$yÔzØ˜Ô1×5Ñ5°c¸3Ó?Ð@Ñ@‘à�TÔ-×1Ñ1°#°sÓ;Ð<Ñ<ˆDà”˜YÐ(VÓWÑWˆà�×(Ñ(Ð):Ó;Ñ;ˆà/3Ö4¨”˜sÕ#Ð4ˆÐ4Ø�‰�D×2Ñ2°;Ó?Ô@Ø�‰˜ÔäÑMÐ<LÔMÓMˆÜ�4œzŸ™°CÔ8ð 	¸DÙØ×'Ñ'¨¨d¯j©jÔ9ðØŸ™›�ð ÷!	ñ 	ùò 5øô !ò 
ô ˜aÔ!2Ô3¼¿¹ÈÒ8OÑX]Ø×,Ñ,¨TÔ2ð ð —I‘I d�IÔ+Øûð
ú÷	ð 	ús7   Ù%\Û]3Û8\Ü]3Ü	]0Ü!A
]+Ý+]0Ý0]3Ý3]<rT   )r   r   r   re   r   r   r   rj   rº   r\   r  r#  r9   r    r!   r"   r  r  y  sP   „ Ø~ÐØ"×,Ñ,¨h×.GÑ.GÐHÐàò/ó ð/ò
ð ñ-ó ð-ópr!   r  ÚFD)r$   r   c                  ó<   — t        t        j                  «       «      S rT   )ÚsortedÚ_BY_NAMEr~   r    r!   r"   Úlist_external_downloadersr…  J  s   € Ü”(—-‘-“/Ó"Ð"r!   c                 óþ   ‡— t         j                  j                  t         j                  j                  | «      «      d   Št        j                  ‰«      xs' t        ˆfd„t        j                  «       D «       d«      S )zO Given the name of the executable, see whether we support the given downloader r   c              3   ó@   •K  — | ]  }|j                   ‰v sŒ|–— Œ y ­wrT   rW   )rf   ÚklassÚbns     €r"   rh   z*get_external_downloader.<locals>.<genexpr>Q  s!   øè ø€ ò %Ø°·±À"Ò0DŒñ%ùs   ƒ—N)r?   r@   Úsplitextr  r„  r;   ÚnextÚvalues)Úexternal_downloaderr‰  s    @r"   Úget_external_downloaderrŽ  N  s`   ø€ ä	�‰×	Ñ	œ"Ÿ'™'×*Ñ*Ð+>Ó?Ó	@ÀÑ	C€BÜ�<‰<˜Óò œtó %Ü#Ÿ?™?Ó,ô%àó ð r!   ).r   r»   rí   r?   rZ  r¶   rm  r‡   r8   r®   r   Úpostprocessor.ffmpegr   r   Úutilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   ÚEnumr   r$   r¾   ró   rú   r  r  r  Úglobalsrç   Úendswithr=   r„  r…  rŽ  )rŠ   rˆ  s   00r"   ú<module>r”     s  ðÛ Û Û 	Û 	Û 	Û Û 
Û Û å  ß J÷÷ ÷ ÷ ñ ô&#ˆt�y‰yô #ô
[c�ô [cô|@)ˆZô @)ôFˆZô ô ˆZô ô41ˆzô 1ôhˆzô ô*Gˆzô GñX “y—‘Ó(÷áˆˆeØ‡}�}�TÔ˜tÐ+GÑGð 
×ÑÓ˜%Ñó€ò#óùós   Ã0D
