
    iv                         S r SSKJr  SSKJr  SSKrSr " S S	\5      r " S
 S\5      r " S S\5      r	 " S S\5      r
g)z'Extractors for https://rule34vault.com/   )BooruExtractor   )text    Nz(?:https?://)?rule34vault\.comc                   X    \ rS rSrSrSrSrSrSrSSS	S
S.r	S r
S rS rS rSS jrSrg)Rule34vaultExtractor   rule34vaultzhttps://rule34vault.comzhttps://r34xyz.b-cdn.netz{category}_{id}.{extension}d   general	copyright	characterartist)r   r         c           	      n    US   nUS   S:X  a  SOSnU R                    SUS-   SU SU S	U 3	=US
'   nU$ )Nidtyper   jpgmp4z/posts/i  /.file_url)root_cdn)selfpostpost_id	extensionurls        M/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/rule34vault.py	_file_urlRule34vaultExtractor._file_url   s^    t*!&\Q.EE	%)]]O77d?:K1%,IQwiq#E 	FZ3
    c                     UR                  SS 5        U R                  US   5      US'   SU;   a  US    Vs/ s H  o"S   PM	     snUS'   g g s  snf )Nfilescreateddatetagsvalue)popparse_datetime_iso)r   r   ts      r    _prepareRule34vaultExtractor._prepare%   sU    $..tI?VT>04V=1gJ=DL =s   Ac                 0   SU;  a#  UR                  U R                  US   5      5        [        R                  " [        5      nUS    H  nX4S      R                  US   5        M     U R                  nUR                  5        H  u  pgXqSXV   -   '   M     g )Nr(   r   r   r)   tags_)update_fetch_postcollectionsdefaultdictlistappend	TAG_TYPESitems)r   r   _r(   tagtypesr   valuess           r    _tagsRule34vaultExtractor._tags+   s    KK((d45&&t,<CV$$S\2   JJLLD*05;&' )r#   c                 F    U R                    SU 3nU R                  U5      $ )Nz/api/v2/post/)rootrequest_json)r   r   r   s      r    r2    Rule34vaultExtractor._fetch_post6   s'    =	2  %%r#   Nc              #   b  #    U R                    SU 3nUc  0 nSUS'   U R                  U R                  -  US'   U R                  US'   U R                  n U R                  USUS9nUS    S h  vN   [	        US   5      U:  a  g UR                  S	5      US	'   US==   US   -  ss'   MW   N=7f)
Nz/apiF
CountTotalSkiptakePOST)methodjsonr8   cursor)r@   
page_startper_pagerA   lenget)r   endpointparamsr   	thresholddatas         r    _pagination Rule34vaultExtractor._pagination:   s     4z*>F$|4==8vvMM	$$Sf$EDG}$$4=!I-#xx1F86NfVn,N  %s   A-B//B-0>B/ )N)__name__
__module____qualname____firstlineno__categoryr@   r   filename_fmtrL   r7   r!   r-   r=   r2   rS   __static_attributes__rU   r#   r    r   r      sI    H$D)H0LH 	I>	1&-r#   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	Rule34vaultPostExtractorO   r   z{id}z/post/(\d+)z"https://rule34vault.com/post/12345c                 @    U R                  U R                  S   5      4$ )Nr   )r2   groupsr   s    r    postsRule34vaultPostExtractor.postsU   s      Q022r#   rU   N)rV   rW   rX   rY   subcategoryarchive_fmtBASE_PATTERNpatternexamplerc   r\   rU   r#   r    r^   r^   O   s     KK^+G2G3r#   r^   c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)Rule34vaultPlaylistExtractorY   playlist)
{category}z{playlist_id}zp_{playlist_id}_{id}z/playlists/view/(\d+)z,https://rule34vault.com/playlists/view/12345c                 $    SU R                   S   0$ )Nplaylist_idr   )ra   rb   s    r    metadata%Rule34vaultPlaylistExtractor.metadata`   s    t{{1~..r#   c                 H    SU R                   S   -   nU R                  U5      $ )Nz/v2/post/search/playlist/r   )ra   rS   )r   rO   s     r    rc   "Rule34vaultPlaylistExtractor.postsc   s%    .Q?))r#   rU   NrV   rW   rX   rY   re   directory_fmtrf   rg   rh   ri   rq   rc   r\   rU   r#   r    rk   rk   Y   s+    K3M(K55G<G/*r#   rk   c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)Rule34vaultTagExtractorh   r:   )rn   z{search_tags}zt_{search_tags}_{id}z /(?!p(?:ost|laylists)/)([^/?#]+)zhttps://rule34vault.com/TAGc                     [         R                  " U R                  S   5      R                  S5      U l        SSR                  U R                  5      0$ )Nr   z%7Csearch_tags )r   unquotera   splitr(   joinrb   s    r    rq    Rule34vaultTagExtractor.metadatao   s=    LLQ066u=	sxx		233r#   c                     SnSU R                    Vs/ s H  o"R                  SS5      PM     sn0nU R                  X5      $ s  snf )Nz/v2/post/search/rootincludeTagsr9   r|   )r(   replacerS   )r   rO   r,   rP   s       r    rc   Rule34vaultTagExtractor.postss   sD    )tyy!Iy!))C"5y!IJ11 "Js   A)r(   Nru   rU   r#   r    rx   rx   h   s+    K3M(K@@G+G42r#   rx   )__doc__boorur    r   r3   rg   r   r^   rk   rx   rU   r#   r    <module>r      sL    . !  0<-> <-~33 3*#7 *22 2r#   