
    i+                         S r SSKJrJr  SSKJrJrJr   " S S\5      r\R                  " SS5      (       a  S	\l
        g
g
)z,Extractors for sites supported by youtube-dl   )	ExtractorMessage   )ytdlconfig	exceptionc                   B    \ rS rSrSrSrSrSrSrSr	Sr
S	 rS
 rS rSrg)YoutubeDLExtractor   z/Generic extractor for youtube-dl supported URLsr   )z
{category}z{subcategory}z{title}-{id}.{extension}z{extractor_key} {id}z	ytdl:(.*)z0ytdl:https://www.youtube.com/watch?v=abcdefghijkc                    [         R                  " [        R                  " SS5      5      nUR                  U l        US   =U l        n[        R                  " SSS5      nUS:X  a  SU l        SU l	        OUR                  R                  5        H0  nUR                  U5      (       d  M  UR                  5       U l          O   U(       d%  U R                  S:X  a  [        R                  " 5       eSU l	        U R                  S:X  aR  [        R                  " SS	S5      (       a5  S
U l        X3R#                  SS S5      S-   UR%                  SS5       U l        OU R                  U l        [(        R*                  " X5        g )N	extractorr   moduler   genericTforceGenericFzgeneric-categoryzytdl-generic/   )r   import_moduler   get__name__ytdl_module_nameytdl_urlinterpolateytdl_ie_keyforce_generic_extractorr   gen_extractor_classessuitableie_keyr   NoExtractorErrorcategoryrfindfindsubcategoryr   __init__)selfmatchytdl_moduleurlr   ies         F/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/ytdl.pyr%   YoutubeDLExtractor.__init__   sM   ((!8*- . + 4 4 $Ah&$$%:ItLg(D+/D(!++AAC;;s##')yy{D$ D t//9<0022+0D(y(V-?-?%'94.A .A +DM"99S$#:1#<SXXc1=MND  $//D4'    c              #     #    [         R                  " [        R                  " SSU R                  4S5      =(       d    U R
                  5      nU R                  R                  SU5        SU R                  S.nU R                  U R                  U R                  (       + S.nU R                  (       a  U R                  R                  S5      US	'   U R                  5       u  pEU(       a
  XEsUS
'   US'   AA[         R                  " XX25      nU R                  =n(       a'  UR                   R"                  nU H  n	U" U	5        M      UR%                  U R&                  UR)                  U R*                  5      S0 S5      n
U
(       d  g SU
;   a  U R7                  XU
S   5      nOU
4nU Hx  n
S U
S'   XS'   XjS'   SU
R                  S5      =(       d$    U
R                  S5      =(       d    U R&                  -   n[8        R:                  SU
4v   [8        R<                  X4v   Mz     g ! [,         a6  n[.        R0                  " SUR2                  R4                   SU S35      eS nAff = f7f)Nr   r   r   zUsing %sin_playlist)extract_flatr   )retriessocket_timeoutnocheckcertificatehttpproxyusernamepasswordFTzFailed to extract video data (z: )entries	extension_ytdl_info_dict_ytdl_instancezytdl:r)   webpage_url )r   r   r   r   r$   r   logdebugr   _retries_timeout_verify_proxies_get_auth_infoconstruct_YoutubeDLcookies	cookiejar
set_cookie_YoutubeDL__extract_infor   get_info_extractorr   	Exceptionr   AbortExtraction	__class__r   _process_entriesr   	DirectoryUrl)r&   r(   	extr_opts	user_optsr6   r7   ytdl_instancerG   rI   cookie	info_dictexcresultsr)   s                 r+   itemsYoutubeDLExtractor.items7   sO    ((JJVT-=-=>I "!!# 	z;/ (5'+'C'C
	
 (,}}'+}}+/<<'7
	 ==!%!2!26!:Ig!002;C8Ij!9Z#8h00y5 ll"7"&00;;J!6" "
	6%>>001A1ABr4!I )#++Ii,@BG !lG !I%)Ik"+4'(*7&'Y]]51 +&]]=9+!]],C ##R22++s-- !  	6++MM**+2cU!56 6	6s+   EI)8H&  B&I)&
I&01I!!I&&I)c              #   L  #    U Hw  nU(       d  M  UR                  S5      S;   a-   UR                  US   SUR                  S5      S9nU(       d  MN  SU;   a  U R	                  XUS   5       S h  vN   Ms  Uv   My     g ! UR                  R                   a     M  f = f N07f)N_type)r)   url_transparentr)   Fr   )r   r9   )r   extract_infoutilsYoutubeDLErrorrO   )r&   r(   rT   r9   entrys        r+   rO   #YoutubeDLExtractor._process_entries|   s     Eyy!%??)66ee$yy2 7 4E
 E!00i0@B B B %  #((77 Bs4   $B$#B
'B$1B"2B$BB$BB$)r!   r   r$   r   r   r   N)r   
__module____qualname____firstlineno____doc__r!   directory_fmtfilename_fmtarchive_fmtpatternexampler%   rY   rO   __static_attributes__ r-   r+   r
   r
      s4    9H3M-L(KG@G(>C.Jr-   r
   r   enabledz(?:ytdl:)?(.*)N)rf   commonr   r   r>   r   r   r   r
   r   rj   rm   r-   r+   <module>rp      sD    3 & & &@ @F 
::#Y//!2 0r-   