Ë
    š„jgL  ã                   ó¢   — 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 ddl	m
Z
 ddlmZ ddl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é   )Úget_suitable_downloader)ÚFFmpegFD)Ú
FragmentFDé   )Úwebvtt)Ú
Cryptodome)Úbug_reports_messageÚparse_m3u8_attributesÚremove_startÚtraverse_objÚupdate_url_queryÚurljoin)Ú_request_dump_filenamec                   ó<   — e Zd ZdZdZed„ «       Zedd„«       Zd„ Z	y)ÚHlsFDzÊ
    Download segments in a m3u8 manifest. External downloaders can take over
    the fragment downloads by supporting the 'm3u8_frag_urls' protocol and
    re-defining 'supports_manifest' function
    Ú	hlsnativec                 ó^   — t        t        j                  dj                  d«      | «      «      S )Nú|)z&#EXT-X-(?:SESSION-)?KEY:.*?URI="skd://zG#EXT-X-(?:SESSION-)?KEY:.*?KEYFORMAT="com\.apple\.streamingkeydelivery"z@#EXT-X-(?:SESSION-)?KEY:.*?KEYFORMAT="com\.microsoft\.playready"z#EXT-X-FAXS-CM:)ÚboolÚreÚsearchÚjoin)Úmanifests    úL/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/downloader/hls.pyÚ_has_drmzHlsFD._has_drm   s/   € ä”B—I‘I˜cŸh™hð (
ó ð
 óó ð 	ó    c                 óR   ‡ ‡‡‡‡— g Š‰s‰dgz  Šˆˆˆ ˆˆfd„}t         |«       «      S )Nz"#EXT-X-KEY:METHOD=(?!NONE|AES-128)c               3   ó¤   •K  — ‰j                  d«       –— ‰D ]  } t        j                  | ‰«       –— Œ ‰s‰j                  ‰«       –— y y ­w)NÚis_live)Úgetr   r   r   )ÚfeatureÚUNSUPPORTED_FEATURESÚallow_unplayable_formatsÚclsÚ	info_dictr   s    €€€€€r   Úcheck_resultsz)HlsFD.can_download.<locals>.check_resultsB   sV   øè ø€ Ø—m‘m IÓ.Ð.Ò.Ø/ò 7�ÜŸ)™) G¨XÓ6Ð6Ó6ð7á+ØŸ,™, xÓ0Ð0Ó0ð ,ùs   ƒAA)Úall)r%   r   r&   r$   r'   r#   s   ```` @r   Úcan_downloadzHlsFD.can_download(   s<   ü€ ð 
Ðñ& (Ø Ø5ð%ñ Ð ÷	1ð 	1ô ‘=“?Ó#Ð#r   c           	      ó”  ‡ ‡/— |d   }|j                  d«      }|r!‰ j                  d‰ j                  › d�«       �n‰ j                  d‰ j                  › d�«       ‰ j                  j	                  ‰ j                  ||«      «      }|j                  }|j                  «       }‰ j                  j                  d«      rrt        ||d   d ‰ j                  j                  d«      ¬	«      }‰ j                  d‰ j                  › d
|› �«       t        |d«      5 }|j                  |«       d d d «       |j                  dd«      }‰ j                  ||‰ j                  j                  d«      «      d }
}	|	r•t        j                  «       }t         j"                  s;d|v r7t%        |dt&        f«       }dj)                  |r|sdnd«      }
|r|rd}	n<|
dz  }
n6|j                  d«      dk(  r"t+        j,                  d|«      r|rdnd}d|› d�}
|	sê‰ j/                  |«      r}‰ j                  j                  d«      sb|j                  d«      r=‰ j                  j                  d«      r"‰ j                  d‰ j                  › d�d ¬!«       y‰ j1                  d"d¬#«       y|
xs d$}
t        ‰ j                  ‰ j                  «      }‰ j3                  |
› d%|j5                  «       › �«       |j7                  ||«      S |
r‰ j3                  |
«       |d&   d'k(  }|rd }nt9        |‰ j                  d d(|d)k(  ¬*«      }|r|j;                  |«      sd }|r/‰ j                  d‰ j                  › d+|j5                  «       › �«       d,„ }d-„ }g }d.}d.}d}|j=                  «       D ]I  }|j?                  «       }|sŒ|jA                  d/«      r ||«      rd }n
 ||«      rd}Œ=|r|d0z  }ŒE|d0z  }ŒK |||d1œ}|r‰ jC                  |«       n‰ jE                  ||«       |jG                  d2i «      Š/|j                  d3«      }d }|j                  d4«      x}rtH        jJ                  jM                  |«      }d }|j                  d5«      x}rtH        jJ                  jM                  |«      }d.}d.}d6d7i} t%        |d8«      }!|!r3tO        jP                  tS        |!d9«      «      }!tU        |!«      d:v sJ d;«       ‚t%        |d<«      }"|"r.tO        jP                  tS        |"d9«      jW                  d=«      «      }"i }#d.}$d.}%d.}&d}|j=                  «       D �]Ï  }|j?                  «       }|sŒ|jA                  d/«      s[|�|%|k7  rŒ0|rŒ3|&d0z  }&|&|d>   k  rŒAtY        ||«      }'|rt[        |'|«      }'|j]                  |&|'| |#|d?œ«       |d0z  }|#�rQ|#d@   }$i }#�nH|jA                  dA«      rß|�|%|k7  rŒœ|&d.kD  r‰ j1                  dB«        y|&d0z  }&t_        |dCd  «      }(tY        ||(j                  dD«      «      }'|rt[        |'|«      }'i })|(j                  dE«      rR|(j                  dE«      ja                  dF«      }*tU        |*«      dGk(  rtc        |*d0   «      nd.}+|+|+tc        |*d.   «      z   dHœ})|j]                  |&|'| |)|d?œ«       |d0z  }�nX|jA                  dI«      r£| j                  dD«      },t_        |dCd  «      } | d6   dJk(  �r|"r|"| dK<   n1dK| v r-tO        jP                  | dK   dGd  jW                  d=«      «      | dK<   |!r|!| dL<   nÞtY        || dD   «      | dD<   |s|rt[        | dD   |xs |«      | dD<   |,| dD   k7  rªd | dL<   n¤|jA                  dM«      rtc        |dNd  «      }n„|jA                  dO«      rG|dPd  ja                  dF«      }*tU        |*«      dGk(  rtc        |*d0   «      n|$}+|+|+tc        |*d.   «      z   dHœ}#n, ||«      rd }n! ||«      rd}n|jA                  dQ«      r|%d0z  }%|d0z  }�ŒÒ ‰ j                  j                  dd«      r
|r|d.   nd g}|r4||dR<    |‰ j                  ‰ j                  «      }|j7                  ||«      S |rDˆ/ˆ fdS„}-ˆ/fdT„}.tU        |«      d0k(  r‰ je                  |||«       y ‰ je                  ||||-|.¬U«       y ‰ je                  |||«      S # 1 sw Y   �Œ˜xY w)VNÚurlÚhls_media_playlist_dataú[z)] Using m3u8 manifest from extracted infoz] Downloading m3u8 manifestÚwrite_pagesÚidÚtrim_file_name)Útrim_lengthz] Saving request to Úwbzutf-8Úignorer$   z#EXT-X-KEY:METHOD=AES-128)Úextra_param_to_segment_urlÚextra_param_to_key_urlr,   )Úhls_aes)ÚuriÚkeyÚivz2The stream has AES-128 encryption and {} availablez$neither ffmpeg nor pycryptodomex arezpycryptodomex is notFzC; decryption will be performed natively, but will be extremely slowÚextractor_keyÚGenericz (?m)#EXT-X-MEDIA-SEQUENCE:(?!0$)Ú zinstall ffmpeg and z]Live HLS streams are not supported by the native downloader. If this is a livestream, please z:add "--downloader ffmpeg --hls-use-mpegts" to your commandÚhas_drmÚtestz] This format is DRM protectedT)Úskip_eolz‘This format is DRM protected; Try selecting another format with --format or add --check-formats to automatically fallback to the next best format)Útbz'Unsupported features have been detectedz"; extraction will be delegated to ÚextÚvttÚm3u8_frag_urlsú-)ÚprotocolÚ	to_stdoutz*] Fragment downloads will be delegated to c                 ó|   — | j                  d«      xr d| v xs$ | j                  d«      xr | j                  d«      S )Nú#ANVATO-SEGMENT-INFOztype=adú#UPLYNK-SEGMENTz,ad©Ú
startswithÚendswith©Úss    r   Úis_ad_fragment_startz1HlsFD.real_download.<locals>.is_ad_fragment_start�   s?   € Ø—\‘\Ð"8Ó9ÒL¸iÈ1¸nò OØŸ™Ð%6Ó7ÒM¸A¿J¹JÀuÓ<MðPr   c                 ó|   — | j                  d«      xr d| v xs$ | j                  d«      xr | j                  d«      S )NrH   ztype=masterrI   z,segmentrJ   rM   s    r   Úis_ad_fragment_endz/HlsFD.real_download.<locals>.is_ad_fragment_end‘   s@   € Ø—\‘\Ð"8Ó9ÒP¸mÈqÐ>Pò TØŸ™Ð%6Ó7ÒR¸A¿J¹JÀzÓ<RðUr   r   ú#r   )ÚfilenameÚtotal_fragsÚad_fragsÚextra_stateÚformat_indexr4   r5   ÚMETHODÚNONE)r6   r8   Ú0x)é   é   é    z"Invalid length for HLS AES-128 key)r6   r9   r]   Úfragment_index)Ú
frag_indexr+   Údecrypt_infoÚ
byte_rangeÚmedia_sequenceÚendz
#EXT-X-MAPzGInitialization fragment found after media fragments, unable to downloadé   ÚURIÚ	BYTERANGEú@r   )Ústartrc   z
#EXT-X-KEYzAES-128ÚIVÚKEYz#EXT-X-MEDIA-SEQUENCEé   z#EXT-X-BYTERANGEé   z#EXT-X-DISCONTINUITYÚ	fragmentsc           	      óR  •— t        j                  «       }d}d}d }t        j                  | «      D �]Ö  }t	        |t        j
                  «      �r3|‰d<   |r‰dxx   dz  cc<   d}|xj                  |z  c_        |xj                  |z  c_        ‰j                  dg «      }g }d}	d}
|	t        |«      k  r–||	   }t        j
                  j                  |«      }|	dz  }	|j                  |«      r|j                  |d<   d}
ŒZ||k(  rd}
Œb|j                  |j                  kD  rŒ||j                  |«       |	dz  }	||	= |	t        |«      k  rŒ–|
r|j                  |j                  «       |D ]  }|j                  |«       Œ �ŒRt	        |t        j                  «      �r|j                   €d|_        ‰j                  dd«       |xj                   ‰d   d	z  z  c_        |j                   ‰j#                  dd«      k  rd}|xj                   d
z  c_        |j                   }|dk(  r'|j                   xs d‰d<   |j$                  xs d‰d<   n«|j                   �K|j$                  �?|j                   ‰j#                  dd«      z
  |j$                  ‰j#                  dd«      z
  z
  }�Œtt	        |t        j&                  «      r8|dk7  r3‰j)                  t+        dt-        |«      j.                  › d�«      «       �ŒÆ|j                  |«       �ŒÙ |j1                  «       j3                  «       S )Nr   FÚwebvtt_mpegts_lastÚwebvtt_mpegts_adjustr   Úwebvtt_dedup_windowTrc   é!   l        Úwebvtt_mpegtsÚwebvtt_localzDiscarding a zO block found in the middle of the stream; if the subtitles display incorrectly,)ÚioÚStringIOr   Úparse_fragmentÚ
isinstanceÚCueBlockrh   rc   Ú
setdefaultÚlenÚ	from_jsonÚhingesÚappendÚas_jsonÚ
write_intoÚMagicÚmpegtsr!   ÚlocalÚHeaderBlockÚreport_warningr
   ÚtypeÚ__name__ÚgetvalueÚencode)Úfrag_contentr_   ÚoutputÚadjustÚoverflowÚmpegts_lastÚblockÚdedup_windowÚreadyÚiÚis_newÚwcueÚwblockrV   Úselfs                €€r   Úpack_fragmentz*HlsFD.real_download.<locals>.pack_fragment:  s  ø€ ÜŸ™›�Ø�Ø �Ø"�Ü#×2Ñ2°<Ó@ó E-�EÜ! %¬¯©Õ9Ø<G˜Ð$8Ñ9Ù#Ø'Ð(>Ó?À1ÑDÓ?Ø',˜HØŸš vÑ-�ØŸ	š	 VÑ+�	à'2×'=Ñ'=Ð>SÐUWÓ'X˜à "˜à˜Ø!%˜Ø¤# lÓ"3Ò3Ø#/°¡?˜DÜ%+§_¡_×%>Ñ%>¸tÓ%D˜FØ ™F˜AØ%Ÿ}™}¨UÔ3Ø.3¯i©i  U¡Ø). Ø (Ø%¨šØ). Ø (Ø%Ÿz™z¨E¯K©KÒ7Ø (Ø!ŸL™L¨Ô0Ø ™F˜AØ ,¨Q ð  ¤# lÓ"3Ó3ñ" "Ø(×/Ñ/°·±Ô>Ø%*ò 5˜EØ!×,Ñ,¨VÕ4ð5ñ !Ü# E¬6¯<©<Õ8à Ÿ<™<Ð/Ø+,˜EœLØ#×.Ñ.Ð/EÀqÔIØŸš¨Ð4JÑ(KÈrÑ(QÑQ�Ø Ÿ<™<¨+¯/©/Ð:NÐPQÓ*RÒRØ'+˜HØ!ŸLšL¨GÑ3�LØ&+§l¡l˜à%¨š?Ø;@¿<¹<Ò;LÈ1˜K¨Ñ8Ø:?¿+¹+Ò:JÈ˜K¨Ò7ð  %Ÿ|™|Ð7¸E¿K¹KÐ<Sà%*§\¡\°K·O±OÀOÐUVÓ4WÑ%WØ',§{¡{°[·_±_À^ÐUVÓ5WÑ'Wñ%Yð !'ñ %Ü# E¬6×+=Ñ+=Ô>Ø%¨š?ð !×/Ñ/Ô0CØ"/´°U³×0DÑ0DÐ/Eð FHð !Hó1Iô Jñ %Ø×$Ñ$ VÖ,ðKE-ðN —‘Ó(×/Ñ/Ó1Ð1r   c                  óú   •— ‰j                  d«      } | syt        j                  «       }| D ]0  }t        j                  j                  |«      j                  |«       Œ2 |j                  «       j                  «       S )Nrq   r   )	r!   ru   rv   r   ry   r|   r€   rˆ   r‰   )r�   r‹   ÚcuerV   s      €r   Úfin_fragmentsz*HlsFD.real_download.<locals>.fin_fragmentsˆ  si   ø€ Ø*Ÿ™Ð/DÓE�Ù#ØäŸ™›�Ø'ò F�CÜ—O‘O×-Ñ-¨cÓ2×=Ñ=¸fÕEðFð —‘Ó(×/Ñ/Ó1Ð1r   )Ú	pack_funcÚfinish_func)3r!   Ú	to_screenÚFD_NAMEÚydlÚurlopenÚ_prepare_urlr+   ÚreadÚparamsr   ÚopenÚwriteÚdecoder)   r   Ú	availabler	   ÚAESr   ÚanyÚformatr   r   r   Úreport_errorr…   Úget_basenameÚreal_downloadr   Úsupports_manifestÚ
splitlinesÚstriprK   Ú_prepare_external_frag_downloadÚ _prepare_and_start_frag_downloadrz   ÚurllibÚparseÚparse_qsÚbinasciiÚ	unhexlifyr   r{   Úzfillr   r   r~   r   ÚsplitÚintÚdownload_and_append_fragments)0r–   rS   r&   Úman_urlrN   ÚurlhÚs_bytesÚdump_filenameÚoutfr)   ÚmessageÚ
has_ffmpegÚffmpeg_can_dlÚinstall_ffmpegÚfdÚ	is_webvttÚreal_downloaderrO   rQ   rm   Úmedia_fragsrU   Úad_frag_nextÚlineÚctxrW   Úextra_segment_queryr4   Úextra_key_queryr5   r’   rb   r`   Úexternal_aes_keyÚexternal_aes_ivra   Úbyte_range_offsetÚdiscontinuity_countr_   Úfrag_urlÚmap_infoÚmap_byte_rangeÚsplitted_byte_rangeÚsub_range_startÚdecrypt_urlr—   rš   rV   s0   `                                              @r   r­   zHlsFD.real_downloadJ   sl	  ù€ Ø˜EÑ"ˆà�M‰MÐ3Ó4ˆÙØ�N‰N˜Q˜tŸ|™|˜nÐ,UÐVÖWà�N‰N˜Q˜tŸ|™|˜nÐ,GÐHÔIØ—8‘8×#Ñ# D×$5Ñ$5°iÀÓ$IÓJˆDØ—h‘hˆGØ—i‘i“kˆGØ�{‰{�‰˜}Ô-Ü 6Ø˜Y t™_¨dØ $§¡§¡Ð0@Ó Aô!C�ð —‘  4§<¡< .Ð0DÀ]ÀOÐTÔUÜ˜-¨Ó.ð (°$Ø—J‘J˜wÔ'÷(à—‘˜w¨Ó1ˆAà $× 1Ñ 1°!°YÀÇÁÇÁÐPjÓ@kÓ lÐnr�gˆÙÜ!×+Ñ+Ó-ˆJÜ—>’>Ð&AÀQÑ&Fä$0°ð >ô ð=ó %ð !�ð O×UÑUÙ>KÑT^Ñ:Ø*ó,�ñ ¡-Ø#(‘LàÐdÑd‘GØ—‘˜Ó/°9Ò<ÄÇÁÐKnÐpqÔArÙ'1¡Ð7L�ð%Ø%3Ð$4Ð4nðp�áØ�}‰}˜QÔ¨¯©¯©Ð8RÔ(SØ—=‘= Ô+°·±·±ÀÔ0GØ—N‘N Q t§|¡| nÐ4RÐ#SÐ^b�NÔcð
 ð ×%Ñ%ð`Ødið &ô kð ØÒJÐ!JˆGÜ˜$Ÿ(™( D§K¡KÓ0ˆBØ×Ñ 7 )Ð+MÈbÏoÉoÓN_ÐM`Ð aÔbØ×#Ñ# H¨iÓ8Ð8ÙØ×Ñ Ô(à˜eÑ$¨Ñ-ˆ	ÙØ"‰Oä5Ø˜4Ÿ;™;¨Ð7GÐT\Ð`cÑTcôfˆOá ?×#DÑ#DÀQÔ#GØ"ˆOÙØ�N‰N˜Q˜tŸ|™|˜nÐ,VÐWf×WsÑWsÓWuÐVvÐwÔxò	Pò	Uð ˆ	àˆØˆØˆØ—L‘L“Nò 	ˆDØ—:‘:“<ˆDÙØØ�‰˜sÔ#Ù'¨Ô-Ø#'‘LÙ'¨Ô-Ø#(�LØÙØ˜A‘�ØØ˜1Ñ‰Kð	ð  !Ø&Ø ñ
ˆñ Ø×0Ñ0°Õ5à×1Ñ1°#°yÔAà—n‘n ]°BÓ7ˆà —}‘} ^Ó4ˆØ"ÐØ)2¯©Ð7SÓ)TÐTÐ%ÐTÜ"(§,¡,×"7Ñ"7Ð8RÓ"SÐØˆØ%.§]¡]Ð3KÓ%LÐLÐ!ÐLÜ$Ÿl™l×3Ñ3Ð4JÓKˆOØˆØˆØ  &Ð)ˆÜ'¨	Ð3EÓFÐÙÜ'×1Ñ1´,Ð?OÐQUÓ2VÓWÐÜÐ'Ó(¨LÑ8Ð^Ð:^Ó^Ð8Ü& yÐ2CÓDˆÙÜ&×0Ñ0´¸oÈtÓ1T×1ZÑ1ZÐ[]Ó1^Ó_ˆOØˆ
ØÐØÐØˆ
ØˆØ—L‘L“Nó _	ˆDØ—:‘:“<ˆDÚØ—‘ sÔ+Ø#Ð/Ð4GÈ<Ò4WØ Ù#Ø Ø !‘O�JØ! SÐ)9Ñ%:Ò:Ø Ü& w°Ó5�HÙ*Ü#3°HÐ>QÓ#R˜à×$Ñ$Ø&0Ø'Ø(4Ø&0Ø*8ñ&ô ð # aÑ'�Nò "Ø,6°uÑ,=Ð)Ø%'š
à—_‘_ \Ô2Ø#Ð/Ð4GÈ<Ò4WØ Ø! A’~Ø×)Ñ)Øeôgá$Ø !‘O�JÜ4°T¸"¸#°YÓ?�HÜ& w°·±¸UÓ0CÓD�HÙ*Ü#3°HÐ>QÓ#R˜à%'�Nà—|‘| KÔ0Ø.6¯l©l¸;Ó.G×.MÑ.MÈcÓ.RÐ+ÜILÐM`ÓIaÐefÒIf¬#Ð.AÀ!Ñ.DÔ*EÐlm˜à%4Ø#2´SÐ9LÈQÑ9OÓ5PÑ#Pñ*˜ð
 ×$Ñ$Ø&0Ø'Ø(4Ø&4Ø*8ñ&ô ð # aÑ'’Nà—_‘_ \Ô2Ø".×"2Ñ"2°5Ó"9�KÜ#8¸¸b¸c¸Ó#C�LØ# HÑ-°Ó:Ù*Ø1@˜L¨Ò.Ø! \Ñ1Ü19×1CÑ1CÀLÐQUÑDVÐWXÐWYÐDZ×D`ÑD`ÐacÓDdÓ1e˜L¨Ñ.Ù+Ø2B˜L¨Ò/ä29¸'À<ÐPUÑCVÓ2W˜L¨Ñ/Ù.Ñ2Eä6FØ$0°Ñ$7¸Ò9_ÐL_ó7a ¨UÑ 3à*¨l¸5Ñ.AÒAØ6: ¨UÒ 3à—_‘_Ð%<Ô=Ü%(¨¨b¨c¨£^‘NØ—_‘_Ð%7Ô8Ø*.¨r¨s¨)¯/©/¸#Ó*>Ð'ÜEHÐI\ÓE]ÐabÒEb¤cÐ*=¸aÑ*@Ô&AÐhy�Oà!0Ø.´Ð5HÈÑ5KÓ1LÑLñ"‘Jñ *¨$Ô/Ø#'‘LÙ'¨Ô-Ø#(‘LØ—_‘_Ð%;Ô<Ø'¨1Ñ,Ð'Ø�Q‘’ð_	ðD �;‰;�?‰?˜6 5Ô)Ù)2˜ 1š¸Ð=ˆIáØ%.ˆI�kÑ"Ù  §¡¨4¯;©;Ó7ˆBð ×#Ñ# H¨iÓ8Ð8áõL2ô\	2ô �9‹~ Ò"Ø×2Ñ2°3¸	À9ÕMà×2Ñ2Ø˜ I¸ÐTað 3õ cð ×5Ñ5°c¸9ÀiÓPÐP÷	(ñ (ús   Äb=â=cN)F)
r‡   Ú
__module__Ú__qualname__Ú__doc__rž   Ústaticmethodr   Úclassmethodr)   r­   © r   r   r   r      s<   „ ñð €Gàñó ðð ò$ó ð$óBOQr   r   )r¶   ru   r   Úurllib.parser³   r<   r   Úexternalr   Úfragmentr   r   Údependenciesr	   Úutilsr
   r   r   r   r   r   Úutils._utilsr   r   rÝ   r   r   ú<module>rä      s?   ðÛ Û 	Û 	Û å %Ý Ý  Ý Ý %÷÷ õ 2ôCQˆJõ CQr   