
    il*                     N   S r SSKJrJrJr  SSKJr  SSKJrJ	r	  Sr
\
S-   r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\\5      r " S S\5      r " S S\5      r " S S\5      r " S S5      rg )!z Extractors for https://itaku.ee/   )	ExtractorMessageDispatch   )memcache)textutilz(?:https?://)?itaku\.eez/profile/([^/?#]+)c                   \    \ rS rSrSrSrSrSrSrSr	Sr
S	 rS
 r\R                  =r=rrSrg)ItakuExtractor   zBase class for itaku extractorsitakuzhttps://itaku.ee)
{category}{owner_username}z{id}{title:? //}.{extension}z{id})g      ?g      ?c                 R    [        U 5      U l        U R                  SS5      U l        g )NvideosT)ItakuAPIapiconfigr   selfs    G/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/itaku.py_initItakuExtractor._init   s    D>kk(D1    c              #   r  #    U R                  5       =n(       GaF  U GH>  nU R                  US   5      US'   UR                  S5      R                  5        H.  u  p4U Vs/ s H  oUS   PM	     snUSUR	                  5       -   '   M0     US    Vs/ s H  oUS   PM	     snUS'   / nUS    HA  nUS   =n(       a  UR                  US	    S
US	    35        M-  UR                  US	   5        MC     XbS'   U R                  (       a  US   (       a	  US   S   n	OUS   n	[        R                  SU4v   [        R                  U	[        R                  " X5      4v   GMA     g U R                  5       =n
(       a  U
 H  nUR                  S5      =(       d    Sn[        U5      US'   U R                  US   5      US'   US    Vs/ s H  oUS   PM	     snUS'   [        R                  SU4v   [        US5       HR  u  US'   nX+S'   U R                  US   5      US'   US   n	[        R                  U	[        R                  " X5      4v   MT     M     g U R                  5       =n(       a=  U R                   S-   nU H'  nXS   -   n	["        US'   [        R$                  X4v   M)     g g s  snf s  snf s  snf 7f)N
date_addeddatecategorized_tagsnametags_tagssectionsgrouptitle/videoimage gallery_images countr   numfile	/profile/owner_username
_extractor)imagesparse_datetime_isopopitemslowerappendr   r   	DirectoryUrlr   nameext_from_urlpostslen	enumerateusersrootItakuUserExtractorQueue)r   r1   r'   categoryr!   tr"   sr#   urlr:   postr=   baseusers                  r   r4   ItakuExtractor.items    s    [[]"6" $ 7 7l8K Lf&+ii0B&C&I&I&KNH+/91+/a&	491E'HNN$445 'L 5:&M BMq6M Bfz*A !'
*u* 5>*:!AgJ<(HI '
3	 +
 %-j!;;5>.1C.C''U22kk3(=(=c(III+  , JJL 5 "239r #FW#66tL7IJV37<@<a&	<@V''T11*3FA*>&DK#(L$($;$;l+%-E&M  .C!++sD,A,A#,LLL +?  JJL 5 99{*D"233%7\"mmS..   !M91 B0  As,   AJ7 J(."J7J-D%J7J2C&J7)r   r   N)__name__
__module____qualname____firstlineno____doc__rA   r>   directory_fmtfilename_fmtarchive_fmtrequest_intervalr   r4   r	   noopr1   r:   r=   __static_attributes__r*   r   r   r   r      sD    )HD6M2LK!21f "YY&F&UUr   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	ItakuGalleryExtractorV   z%Extractor for an itaku user's gallerygalleryz/gallery(?:/(\d+))?z%https://itaku.ee/profile/USER/galleryc                     U R                   u  pU R                  R                  U R                  R                  U5      US.5      $ )N)ownerr"   groupsr   galleries_imagesuser_idr   rG   sections      r   r1   ItakuGalleryExtractor.images\   s>    xx((((.*
  	r   r*   NrI   rJ   rK   rL   rM   subcategoryUSER_PATTERNpatternexampler1   rS   r*   r   r   rU   rU   V   s    /K33G5Gr   rU   c                   <    \ rS rSrSrSrSrSrSr\	S-   r
SrS	 rS
rg)ItakuPostsExtractord   z#Extractor for an itaku user's postsr:   r   r   Postsz{id}{title:? //}({file[id]}{file[title]:? //}.{extension}{id}_{file[id]}z/posts(?:/(\d+))?z#https://itaku.ee/profile/USER/postsc                     U R                   u  pU R                  R                  U R                  R                  U5      US.5      $ )N)rY   folders)r[   r   r:   r]   )r   rG   folders      r   r:   ItakuPostsExtractor.postsn   s<    {{xx~~xx''-
  	r   r*   N)rI   rJ   rK   rL   rM   rb   rN   rO   rP   rc   rd   re   r:   rS   r*   r   r   rg   rg   d   s0    -K)M=L#K11G3Gr   rg   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	ItakuStarsExtractorv   z,Extractor for an itaku user's starred imagesstarsz/stars(?:/(\d+))?z#https://itaku.ee/profile/USER/starsc                     U R                   u  pU R                  R                  U R                  R                  U5      USS.S5      $ )Nz
-like_date)stars_ofr"   orderingz/user_starred_imgsrZ   r^   s      r   r1   ItakuStarsExtractor.images|   sF    xx((((.$*
  	! 	!r   r*   Nra   r*   r   r   rr   rr   v   s    6K11G3G!r   rr   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)ItakuFollowingExtractor   	followingz
/followingz'https://itaku.ee/profile/USER/followingc                     U R                   R                  SU R                   R                  U R                  S   5      05      $ )Nfollowed_by    r   user_profilesr]   r[   r   s    r   r=   ItakuFollowingExtractor.users   s:    xx%%488++DKKN;'
  	r   r*   N
rI   rJ   rK   rL   rb   rc   rd   re   r=   rS   r*   r   r   rz   rz          K]*G7Gr   rz   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)ItakuFollowersExtractor   	followersz
/followersz'https://itaku.ee/profile/USER/followersc                     U R                   R                  SU R                   R                  U R                  S   5      05      $ )Nfollowers_ofr   r   r   s    r   r=   ItakuFollowersExtractor.users   s:    xx%%DHH,,T[[^<'
  	r   r*   Nr   r*   r   r   r   r      r   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
)ItakuBookmarksExtractor   z'Extractor for an itaku bookmarks folder	bookmarksz/bookmarks/(image|user)/(\d+)z3https://itaku.ee/profile/USER/bookmarks/image/12345c                 ~    U R                   S   S:X  a  [        R                  U l        [        R                  U 5        g )Nr   rG   )r[   r	   rR   r1   r   r   r   s    r   r   ItakuBookmarksExtractor._init   s+    ;;q>V#))DKT"r   c                 V    U R                   R                  SU R                  S   05      $ Nbookmark_folderr   )r   r\   r[   r   s    r   r1   ItakuBookmarksExtractor.images   s+    xx((t{{1~*
  	r   c                 V    U R                   R                  SU R                  S   05      $ r   )r   r   r[   r   s    r   r=   ItakuBookmarksExtractor.users   s+    xx%%t{{1~'
  	r   )r1   N)rI   rJ   rK   rL   rM   rb   rc   rd   re   r   r1   r=   rS   r*   r   r   r   r      s)    1K==GCG#

r   r   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)r?      z!Extractor for itaku user profilesz/?(?:$|\?|#)zhttps://itaku.ee/profile/USERc           	          U R                    SU R                  S    S3nU R                  [        US-   4[        US-   4[
        US-   4[        US-   4[        US-   44S	5      $ )
Nr.   r   r%   rW   r:   r   r|   rt   )rW   )r>   r[   _dispatch_extractorsrU   rg   r   rz   rr   )r   rF   s     r   r4   ItakuUserExtractor.items   s}    ))Idkk!n%5Q7(("dY&67 dWn5$d[&89$d[&89 dWn5*
  	r   r*   N)
rI   rJ   rK   rL   rM   rc   rd   re   r4   rS   r*   r   r   r?   r?      s    +_,G-Gr   r?   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)ItakuImageExtractor   r'   z/images/(\d+)zhttps://itaku.ee/images/12345c                 T    U R                   R                  U R                  S   5      4$ Nr   )r   r'   r[   r   s    r   r1   ItakuImageExtractor.images   s     t{{1~.00r   r*   N
rI   rJ   rK   rL   rb   BASE_PATTERNrd   re   r1   rS   r*   r   r   r   r      s    K--G-G1r   r   c                   8    \ rS rSrSrSrSrSr\S-   r	Sr
S rS	rg
)ItakuPostExtractor   rE   ri   rk   rl   z/posts/(\d+)zhttps://itaku.ee/posts/12345c                 T    U R                   R                  U R                  S   5      4$ r   )r   rE   r[   r   s    r   r:   ItakuPostExtractor.posts   s     dkk!n-//r   r*   N)rI   rJ   rK   rL   rb   rN   rO   rP   r   rd   re   r:   rS   r*   r   r   r   r      s,    K)M=L#K_,G,G0r   r   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)ItakuSearchExtractor   searchz/home/images/?\?([^#]+)z(https://itaku.ee/home/images?tags=SEARCHc                    / n/ n/ n[         R                  " U R                  S   SS15      nUR                  SS 5      =n(       aa  U H[  nU(       d  M  US   S:X  a  UR	                  USS  5        M+  US   S:X  a  UR	                  USS  5        MJ  UR	                  U5        M]     U R
                  R                  UUUS.5      $ )Nr   r!   maturity_rating-r   ~)required_tagsnegative_tagsoptional_tags)r   parse_query_listr[   r3   r6   r   r\   )r   r   r   r   paramsr!   tags          r   r1   ItakuSearchExtractor.images   s    &&KKNV%679::fd++4+Vs]!((QR1Vs]!((QR1!((-  xx((****
  	r   r*   Nr   r*   r   r   r   r      s    K77G8Gr   r   c                   t    \ rS rSrS rSS jrS rS rS rS r	\
" SS	9S
 5       rS rSS jrSS jrS rSrg)r      c                 J    Xl         UR                  S-   U l        SS0U l        g )Nz/apiAcceptz!application/json, text/plain, */*)	extractorr>   headers)r   r   s     r   __init__ItakuAPI.__init__   s&    "NNV+	9
r   c                 z    SU S3nS SSU R                  5       SSSS.UEnU R                  X1U R                  5      $ )	Nz/galleries/imagesr%   r(   SFWQuestionableNSFW130)PUBLICPROFILE_ONLY)cursor
date_ranger   rw   page	page_size
visibility)_order_paginationr'   )r   r   pathendpoints       r   r\   ItakuAPI.galleries_images   sU    &tfA.>++-4	
 	
 $**==r   c                 Z    SnS SSU R                  5       SSS.UEnU R                  X!5      $ )N/posts/r(   r   r   r   )r   r   r   rw   r   r   r   r   r   r   r   s      r   r:   ItakuAPI.posts  sC    >++-
 
 11r   c                 X    SnS U R                  5       SSSS.UEnU R                  X!5      $ )N/user_profiles/r   50false)r   rw   r   r   sfw_onlyr   r   s      r   r   ItakuAPI.user_profiles  s@    $ 
 
 11r   c                 0    SU S3nU R                  U5      $ )Nz/galleries/images/r%   _call)r   image_idr   s      r   r'   ItakuAPI.image%  s    'z3zz(##r   c                 0    SU S3nU R                  U5      $ )Nr   r%   r   )r   post_idr   s      r   rE   ItakuAPI.post)  s    WIQ'zz(##r   r   )keyargc                 ,    U R                  SU S35      $ )Nr   r%   r   r   usernames     r   rG   ItakuAPI.user-  s    zzOH:Q788r   c                 r    UR                  S5      (       a  [        USS  5      $ U R                  U5      S   $ )Nzid:   rY   )
startswithintrG   r   s     r   r]   ItakuAPI.user_id1  s8    u%%x|$$yy"7++r   Nc                     UR                  S5      (       d  U R                  U-   nU R                  R                  XU R                  S9$ )Nhttp)r   r   )r   r>   r   request_jsonr   )r   r   r   s      r   r   ItakuAPI._call6  sF    ""6**yy8+H~~**T\\ + ; 	;r   c              #      #    U R                  X5      n Uc  US    S h  vN   OUS    H  nU" US   5      v   M     US   R                  S5      nU(       d  g U R                  U5      nMY   NM7f)Nresultsidlinksnext)r   get)r   r   r   extenddataresulturl_nexts          r   r   ItakuAPI._pagination<  sw     zz(+~	?**"9oF .. . G}((0H::h'D *s   A0A.AA0c                 f    U R                   R                  S5      =n(       a  US;   a  gUS;  a  U$ g)Norder>   arascreverser   >   ddescz-date_added)r   r   )r   r  s     r   r   ItakuAPI._orderL  s8    NN))'225244#M)r   )r   r   r>   )r(   )N)rI   rJ   rK   rL   r   r\   r:   r   r'   rE   r   rG   r]   r   r   r   rS   r*   r   r   r   r      sM    
>2
2$$ Q9 9,
;( r   r   N)rM   commonr   r   r   cacher   r(   r   r	   r   rc   r   rU   rg   rr   rz   r   r   r?   r   r   r   r   r*   r   r   <module>r     s    ' 0 0  )33@'Y @'FN . $!. !n n n ,>  1. 1
0 
0> <] ]r   