
    i                     |    S r SSKJr  SSKJr  Sr " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r	g)z)Extractors for https://tumblrgallery.xyz/   )GalleryExtractor   )textz (?:https?://)?tumblrgallery\.xyzc                   8    \ rS rSrSrSrSrSrSrSr	S r
S	 rS
rg)TumblrgalleryExtractor   z'Base class for tumblrgallery extractorstumblrgalleryz2{category}_{gallery_id}_{num:>03}_{id}.{extension})
{category}z{gallery_id} {title}zhttps://tumblrgallery.xyzFc                 2    [         R                  " USS5      $ )Nz/<div class="report"> <a class="xx-co-me" href="")r   extract_iterselfpages     O/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/tumblrgallery.py_urls_from_page&TumblrgalleryExtractor._urls_from_page   s      CSJ 	J    c                     [         R                  " U5      S   nUR                  S5      n SUS   S:w  a  US   0$ US   0$ ! [         a    SU0s $ f = f)Nfilename_idr   inliner   )r   nameext_from_urlsplit
IndexError)r   urlr   partss       r   _data_from_url%TumblrgalleryExtractor._data_from_url   sj    ((-j9s#	$eAh(&:%(IIaII 	$(##	$s   A A AA N)__name__
__module____qualname____firstlineno____doc__categoryfilename_fmtdirectory_fmtrootrefererr   r   __static_attributes__r!   r   r   r   r      s)    1HGL:M&DGJ$r   r   c                   <    \ rS rSrSrSr\S-   rSrS r	S r
S rS	rg
) TumblrgalleryTumblrblogExtractor$   z-Extractor for Tumblrblog on tumblrgallery.xyz
tumblrblogz!(/tumblrblog/gallery/(\d+)\.html)z7https://tumblrgallery.xyz/tumblrblog/gallery/12345.htmlc                 j    [         R                  X5        [        R                  " US   5      U l        g Nr   r   __init__r   	parse_int
gallery_idr   matchs     r   r4   )TumblrgalleryTumblrblogExtractor.__init__*   $    ''4..q2r   c                 t    [         R                  " [         R                  " USS5      5      U R                  S.$ )Nz<h1>z</h1>titler6   )r   unescapeextrr6   r   s     r   metadata)TumblrgalleryTumblrblogExtractor.metadata.   s,    mmDIIdFG$DE//
 	
r   c              #     #    U R                    SU R                   S3nSn U U S3nU R                  USSS9nUR                  S:  a  g U R	                  UR
                  5       H  nX@R                  U5      4v   M     US-  nMf  7f)Nz/tumblrblog/gallery//r   .htmlF)allow_redirectsfatali,  )r*   r6   requeststatus_coder   r   r   )r   r   basepnumr   responses         r   images'TumblrgalleryTumblrblogExtractor.images4   s     ))00ACF4&&C||Ce|LH##s*++HMM:..s333 ;AID s   BBr6   Nr"   r#   r$   r%   r&   subcategoryBASE_PATTERNpatternexampler4   r@   rL   r,   r!   r   r   r.   r.   $   s)    7KAAGGG3
r   r.   c                   <    \ rS rSrSrSr\S-   rSrS r	S r
S rS	rg
)TumblrgalleryPostExtractorD   z(Extractor for Posts on tumblrgallery.xyzpostz(/post/(\d+)\.html)z)https://tumblrgallery.xyz/post/12345.htmlc                 j    [         R                  X5        [        R                  " US   5      U l        g r2   r3   r7   s     r   r4   #TumblrgalleryPostExtractor.__init__J   r:   r   c           	          [         R                  " [         R                  " [         R                  " USS5      5      5      R	                  SS5      U R
                  S.$ )N<title></title>r   -r<   )r   remove_htmlr>   r?   replacer6   r   s     r   r@   #TumblrgalleryPostExtractor.metadataN   sF    &&diiiDEgc3//	
 	
r   c              #   d   #    U R                  U5       H  nX R                  U5      4v   M     g 7f)N)r   r   )r   r   r   s      r   rL   !TumblrgalleryPostExtractor.imagesV   s.     ''-C**3/// .s   .0rN   NrO   r!   r   r   rU   rU   D   s)    2K33G9G3
0r   rU   c                   D    \ 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)TumblrgallerySearchExtractor[   z0Extractor for Search result on tumblrgallery.xyzsearchz:{category}_{num:>03}_{gallery_id}_{id}_{title}.{extension})r
   z{search_term}z(/s\.php\?q=([^&#]+))z'https://tumblrgallery.xyz/s.php?q=QUERYc                 B    [         R                  X5        US   U l        g r2   )r   r4   search_termr7   s     r   r4   %TumblrgallerySearchExtractor.__init__c   s    ''4 8r   c                     SU R                   0$ )Nrh   rh   r   s     r   r@   %TumblrgallerySearchExtractor.metadatag   s    4++
 	
r   c              #   v  #    SU R                   -   n U R                  U R                  S-   U-   5      R                  n[        R                  " USS5       H  nU R                   SU S3nU R                  U5      R                  nU R                  U5       Hp  nU R                  U5      nXGS'   [        R                  " [        R                  " [        R                  " USS5      5      5      R                  S	S
5      US'   XW4v   Mr     M     [        R                  " USS5      nU(       a  X(:X  a  g UnGM&  7f)Nzs.php?q=rC   z!<div class="title"><a href="post/rD   z/post/r6   r[   r\   r   r]   r=   z)</span> <a class="btn btn-primary" href="r   )rh   rG   r*   r   r   r   r   r^   r>   r?   r_   )	r   r   page_urlr   r6   r   	post_pagedatanext_urls	            r   rL   #TumblrgallerySearchExtractor.imagesl   s&     0 00<<		C( :;@@D"//=wH
 6*U; LL-22	//	:C..s3D)3&$($4$4T]]		)Y
C6 %wsC( M )O ;H yyA3HHx3H+ s   D7D9rk   N)r"   r#   r$   r%   r&   rP   r(   r)   rQ   rR   rS   r4   r@   rL   r,   r!   r   r   rd   rd   [   s3    :KOL3M55G7G$

 r   rd   N)
r&   commonr    r   rQ   r   r.   rU   rd   r!   r   r   <module>ru      sJ    0 $ 2$- $*'= @0!7 0.( #9 ( r   