
    i                     L    S r SSKrSSKJrJr  \R
                  r " S S5      rg)z8Common classes and constants used by downloader modules.    N   )configutilc                   R    \ rS rSrSrSrS rSS jrS\4S jr	S r
S	 rS
 rS rSrg)DownloaderBase   zBase class for downloaders c                    UR                   nUR                  SU R                  -   5      U l        U R	                  U5      =n(       a  X0l        U R                  U l        UR                  U l        UR                  U l	        U R                  SS5      U l
        U R                  S5      U l        U R                  (       a  [        U R                  [        5      (       av  U R                  R                  5        VVs/ s HH  u  pEU(       a  [        R                   " U5      O[        R"                  [        R$                  " U5      4PMJ     snnU l        OD[        R$                  " U R                  5      U l        [&        R(                  " U R                  SS9  U R                  S[        R*                  5      nU[        R*                  L a  UR,                  U l        g [        R0                  " X`R                  5      U l        g s  snnf )Nzdownloader.partTzpart-directory)exist_okproxy)	extractor
get_loggerschemelog_extractor_configoptsconfig_optsr   outsessionr   partdir
isinstancedictitemsr   compile_filtertrueexpand_pathosmakedirsSENTINEL_proxiesproxiesbuild_proxy_map)selfjobr   r   exprpdirr"   s          I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/downloader/common.py__init__DownloaderBase.__init__   si   MM	>>-$++"=>)))4444I**DK77 ((KK-	{{#34<<$,,-- '+ll&8&8&:  ';
 37T((.DII%%d+-&:   $//=DLL48++gt}}5dmm#$--DL//BDL s   ;AHNc                 H    [         R                  " SU R                  4X5      $ )z-Interpolate downloader config value for 'key'
downloader)r   interpolater   )r$   keydefaults      r(   r   DownloaderBase.config2   s    !!<"=sLL    c                     X;   a  X1   $ U R                   R                  U[        R                  5      nU[        R                  La  U$ [        R
                  " SU R                  4X5      $ )Nr,   )r   getr   r    r   r-   r   )r$   r.   r/   confvalues        r(   r   DownloaderBase.config_opts6   sT    ;9		c4==1%L!!<"=sLLr1   c                     UR                   n[        U[        5      (       d  U R                  US   US   5      $ 0 n[	        U5       H0  u  pEU R                  XE5      =n(       d  M  UR                  U5        M2     U$ )N   r   )_cfgpathr   list_extractor_optsreversedupdate)r$   r   pathr   catsubpoptss          r(   r    DownloaderBase._extractor_config>   ss    !!$%%''Qa99 HC,,S66u6E" ' r1   c                    [         R                  " SU5      nU(       d  g UR                  U R                  5      =n(       aR  X#;   aK   X2   R                  U R                  5      =n(       a#  UR                  5       nUR	                  U5        U$  U$ U$ X#;   a   X2   R                  U R                  5      $ g ! [
         a    U R                  X#U   5         U$ f = f! [
         a    U R                  X#U   5         g f = f)N)r   )r   r3   r   copyr=   	Exception_report_config_error)r$   categorysubcategorycfgcoptssoptsr   s          r(   r;   DownloaderBase._extractor_optsI   s   jj2GGDKK((5(!M # 0 4 4T[[ AAuA$zz|E*# B L5LI'++DKK88  ! M--k{;KLLM  I))+;7GHIs%   AB8 C 8CCC>=C>c                     [         R                  R                  SU[        R                  " U5      R                  S5      5        g )Nz.Subcategory '%s' set to '%s' instead of object")r   r   warningr   
json_dumpsstrip)r$   rH   r5   s      r(   rF   #DownloaderBase._report_config_errora   s1    

K&(>(D(DS(I	Kr1   c                     g)z:Write data from 'url' into the file specified by 'pathfmt'N )r$   urlpathfmts      r(   downloadDownloaderBase.downloade   s    r1   )r   r   r   r   r   r   r"   r   )N)__name__
__module____qualname____firstlineno____doc__r   r)   r   _configr   r   r;   rF   rW   __static_attributes__rT   r1   r(   r   r      s9    $FC<M (,' M	0KIr1   r   )r]   r   r	   r   r   r^   r   rT   r1   r(   <module>r`      s'    ? 	 
..VI VIr1   