
    iF                         S r SSKJrJr  SSKJrJr  SSKrSr " S S	\5      r	S
 r
 " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      rg)z#Extractors for https://hotleak.vip/   )	ExtractorMessage   )text	exception    Nz$(?:https?://)?(?:www\.)?hotleak\.vipc                   >    \ 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)HotleakExtractor   z!Base class for hotleak extractorshotleak)z
{category}z	{creator}z{creator}_{id}.{extension}z{type}_{creator}_{id}zhttps://hotleak.vipc              #      #    U R                  5        Hv  nUS   R                  S5      (       d(  US   R                  SS5      R                  SS5      US'   SUS'   [        R                  S	U4v   [        R
                  US   U4v   Mx     g 7f)
Nurlytdl:z/storage/storage/	/storage/z_thumb..)i  _http_expected_status )posts
startswithreplacer   	DirectoryUrl)selfposts     I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/hotleak.pyitemsHotleakExtractor.items   s     JJLD;))'22KW0+>WY, U
 -3D()##R--++tE{D00 !s   BBc                     g)z,Return an iterable containing relevant posts r   )r   s    r   r   HotleakExtractor.posts$   s        c              #   Z  #    [         R                  " U5      n[         R                  " UR                  S5      S5      US'    U R	                  XS9R                   nSU;  a  g [         R
                  " USS5       H  n[         R                  " USS5      v   M     US==   S-  ss'   Mh  7f)Npager   params
</article>z<article class="movie-itemz	<a href="")r   parse_query	parse_intgetrequestextract_iterextr)r   r   r%   r#   items        r   _paginationHotleakExtractor._pagination(   s     !!&)

6(:A>v<<<388D4'))6Fiik377F 6NaN s   B)B+r   N)__name__
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtrootr   r   r/   __static_attributes__r   r!   r   r
   r
      s-    +H0M/L)K D
1 r!   r
   c                 V    [         R                  " U SSS2   5      R                  5       $ )Ni   )binascii
a2b_base64decode)r   s    r   decode_video_urlrB   8   s&    s3r"9~.5577r!   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
HotleakPostExtractor=   z)Extractor for individual posts on hotleakr   zE/(?!(?:hot|creators|videos|photos)(?:$|/))([^/]+)/(photo|video)/(\d+)z%https://hotleak.vip/MODEL/photo/12345c                 t    [         R                  X5        UR                  5       u  U l        U l        U l        g N)r
   __init__groupscreatortypeidr   matchs     r   rH   HotleakPostExtractor.__init__D   s(    !!$.+0<<>(dir!   c                    U R                    SU R                   SU R                   SU R                   3nU R	                  U5      R
                  n[
        R                  " USS5      n[
        R                  " U R                  5      U R                  U R                  S.nU R                  S:X  a8  [
        R                  " USS5      US'   [
        R                  " US   U5        U4$ U R                  S	:X  aZ  S
[        [
        R                  " [
        R                  " U5      SS5      5      -   US'   [
        R                  " US   U5        SUS'   U4$ )N/z<div class="movie-image thumb">r&   )rL   rJ   rK   photoz
data-src="r'   r   videor   z"src":"mp4	extension)r:   rJ   rK   rL   r+   r   r-   r)   nameext_from_urlrB   unescape)r   r   r#   datas       r   r   HotleakPostExtractor.postsH   s%   1T\\N!DII;ayA||C %%yy3\C ~~dgg.||yy
 99))D,<DK!!$u+t4 w YY'!!$4TYYd#Y65 %6 6DK!!$u+t4 %Dwr!   )rJ   rL   rK   N)r1   r2   r3   r4   r5   subcategoryBASE_PATTERNpatternexamplerH   r   r;   r   r!   r   rD   rD   =   s(    3K . .G5G:r!   rD   c                   <    \ rS rSrSrSr\S-   rSrS r	S r
S rS	rg
)HotleakCreatorExtractor`   z.Extractor for all posts from a hotleak creatorrJ   z6/(?!(?:hot|creators|videos|photos)(?:$|/))([^/?#]+)/?$zhttps://hotleak.vip/MODELc                 B    [         R                  X5        US   U l        g Nr   )r
   rH   rJ   rM   s     r   rH    HotleakCreatorExtractor.__init__g   s    !!$.Qxr!   c                 Z    U R                    SU R                   3nU R                  U5      $ )NrQ   )r:   rJ   r/   )r   r   s     r   r   HotleakCreatorExtractor.postsk   s+    1T\\N+$$r!   c              #     #    SS0nSS0n  U R                  XUSS9nUR                  5       nU(       d  g S
U R                  0nU H  n[        R                  " US   5      US'   US   S:X  a8  SUS'   U R                  S-   US   -   US'   [        R                  " US   U5        OAUS   S:X  a8  SUS'   S[        US   5      -   US'   [        R                  " US   U5        SUS'   Uv   M     US==   S-  ss'   M  ! [        R                   aY  nUR                  R                  S:X  a9  U R                  UR                  R                  R                  S5      S	9   S nAGMZ  e S nAff = f7f)NzX-Requested-WithXMLHttpRequestr#   r   T)headersr%   notfoundi  zX-RateLimit-Reset)untilrJ   rL   rK   r   rR   r   imager   rS   r   stream_url_playrT   rU   )r+   r   	HttpErrorresponsestatus_codewaitrh   r*   jsonrJ   r   r)   r:   rV   rB   )	r   r   rh   r%   rn   excr   rX   r   s	            r   r/   #HotleakCreatorExtractor._paginationo   s    %'78!<<$ ( H MMOEt||,D!^^DJ7T
<1$#*DL"&))k"9DM"IDK))$u+t<&\Q&#*DL"),<./-1 #1DK))$u+t<(-D%
   6NaNA  && <<++s2II!ll22667JK  Ms5   
E.C> C E.>E+AE&E.%E&&E++E.)rJ   N)r1   r2   r3   r4   r5   rZ   r[   r\   r]   rH   r   r/   r;   r   r!   r   r_   r_   `   s-    8K  G)G %$ r!   r_   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
HotleakCategoryExtractor   z Extractor for hotleak categoriesr6   z-/(hot|creators|videos|photos)(?:/?\?([^#]+))?zhttps://hotleak.vip/photosc                 h    [         R                  X5        UR                  5       u  U l        U l        g rG   )r
   rH   rI   	_categoryr%   rM   s     r   rH   !HotleakCategoryExtractor.__init__   s$    !!$.&+lln#r!   c              #     #    U R                    SU R                   3nU R                  S;   a	  S[        0nOU R                  S;   a  S[        0nU R	                  XR
                  5       H  n[        R                  UW4v   M     g 7f)NrQ   )hotcreators
_extractor)videosphotos)r:   rx   r_   rD   r/   r%   r   Queue)r   r   rX   r.   s       r   r   HotleakCategoryExtractor.items   sx     1T^^,->>00 "9:D^^33 "67D$$S++6D--t++ 7s   BB)rx   r%   Nr1   r2   r3   r4   r5   rZ   r[   r\   r]   rH   r   r;   r   r!   r   ru   ru      s$    *KMMG*G5	,r!   ru   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
HotleakSearchExtractor   z$Extractor for hotleak search resultssearchz/search(?:/?\?([^#]+))z'https://hotleak.vip/search?search=QUERYc                 B    [         R                  X5        US   U l        g rb   )r
   rH   r%   rM   s     r   rH   HotleakSearchExtractor.__init__   s    !!$.Ahr!   c              #      #    S[         0nU R                  U R                  S-   U R                  5       H  n[        R
                  X!4v   M     g 7f)Nr}   z/search)r_   r/   r:   r%   r   r   )r   rX   rJ   s      r   r   HotleakSearchExtractor.items   sD     56''		I(=t{{KG--.. Ls   AAr$   Nr   r   r!   r   r   r      s$    .K66G7G/r!   r   )r5   commonr   r   r   r   r   r?   r[   r
   rB   rD   r_   ru   r   r   r!   r   <module>r      s`    * &  6% y % P8
 +  F3 . 3 l,/ ,,/- /r!   