
    i                         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://furry34.com/   )BooruExtractor   )text    Nz$(?:https?://)?(?:www\.)?furry34\.comc                   ^    \ rS rSrSrSrSrSrSrSSSS	S
S.r	Sr
S rS rS rS rSS jrSrg)Furry34Extractor   furry34zhttps://furry34.comzhttps://furry34com.b-cdn.netz{category}_{id}.{extension}   general	copyright	characterartist)Nr   r         ))100zmov.mp4)101z
mov720.mp4)102z
mov480.mp4)10zpic.jpgc           	      (   US   nU R                    H  u  p4X2;   d  M    O   [        [        U5      5      nUS   nX#   S   (       a  U R                  OU R                  nU SUS-   SU SU SW 3	=US'   nX1S	'   UR                  S5      S   US
'   U$ )Nfilesidr   z/posts/i  /.file_url	format_idformat)FORMATSnextiterroot_cdnroot	partition)selfpostr   fmt	extensionpost_idr"   urls           I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/furry34.py	_file_urlFurry34Extractor._file_url'   s    W"llNC| + tE{#Ct* %
1t}}499fGGtO,AgYay)M	NZ3[",,S1!4X
    c                     UR                  SS 5        U R                  US   5      US'   US   R                  S5      u  US'   o!S'   SU;   a  US    Vs/ s H  o3S   PM	     snUS'   g g s  snf )	Nr   createddatefilenamer   r   tagsvalue)popparse_datetime_iso
rpartition)r$   r%   _ts       r*   _prepareFurry34Extractor._prepare8   sx    $..tI?V.2:.>.I.I#.N+Z!(^T>04V=1gJ=DL =s   A*c                 B   SU;  a#  UR                  U R                  US   5      5        [        R                  " [        5      nUS    H%  nX4S   =(       d    S   R                  US   5        M'     U R                  nUR                  5        H  u  pgXqSXV   -   '   M     g )Nr2   r   typer   r3   tags_)update_fetch_postcollectionsdefaultdictlistappend	TAG_TYPESitems)r$   r%   r7   r2   tagtypesr<   valuess           r*   _tagsFurry34Extractor._tags?   s    KK((d45&&t,<CV!"))#g,7   JJLLD*05;&' )r-   c                 F    U R                    SU 3nU R                  U5      $ )Nz/api/v2/post/)r"   request_json)r$   r(   r)   s      r*   r?   Furry34Extractor._fetch_postJ   s'    =	2  %%r-   Nc              #   
  #    U R                    SU 3nUc  0 nS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'   MG   N-7f)	Nz/apir   sortBytakePOST)methodjsonrE   cursor)r"   per_pagerL   lenget)r$   endpointparamsr)   	thresholddatas         r*   _paginationFurry34Extractor._paginationN   s     4z*>FxvMM	$$Sf$EDG}$$4=!I-#xx1F8  %s   ABB.B )N)__name__
__module____qualname____firstlineno__categoryr"   r!   filename_fmtrU   rD   r   r+   r9   rI   r?   r\   __static_attributes__r^   r-   r*   r   r      sS    H D-H0LH IG">	1&2r-   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	Furry34PostExtractora   r%   z{id}z/post/(\d+)zhttps://furry34.com/post/12345c                 @    U R                  U R                  S   5      4$ )Nr   )r?   groupsr$   s    r*   postsFurry34PostExtractor.postsg   s      Q022r-   r^   N)r_   r`   ra   rb   subcategoryarchive_fmtBASE_PATTERNpatternexamplerl   re   r^   r-   r*   rg   rg   a   s     KK^+G.G3r-   rg   c                   :    \ rS rSrSrSrSr\S-   rSr	S r
S rS	rg
)Furry34PlaylistExtractork   playlist)
{category}z{playlist_id}zp_{playlist_id}_{id}z/playlists/view/(\d+)z(https://furry34.com/playlists/view/12345c                 $    SU R                   S   0$ )Nplaylist_idr   )rj   rk   s    r*   metadata!Furry34PlaylistExtractor.metadatar   s    t{{1~..r-   c                 H    SU R                   S   -   nU R                  U5      $ )Nz/v2/post/search/playlist/r   )rj   r\   )r$   rX   s     r*   rl   Furry34PlaylistExtractor.postsu   s%    .Q?))r-   r^   N)r_   r`   ra   rb   rn   directory_fmtro   rp   rq   rr   rz   rl   re   r^   r-   r*   rt   rt   k   s+    K3M(K55G8G/*r-   rt   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)Furry34TagExtractorz   rF   )rw   z{search_tags}zt_{search_tags}_{id}z&/(?:([^/?#]+))?(?:/?\?([^#]+))?(?:$|#)zhttps://furry34.com/TAGc                    U R                   u  p[        R                  " U5      n/ =U l        nU(       aH  UR	                  [        R
                  " [        R
                  " U5      5      R                  S5      5        SU;   a#  UR	                  US   R                  S5      5        UR                  S5      nUS:X  a  SU l        g US:X  a  SU l        g S U l        g )N|r2   r<   videor   imager   )	rj   r   parse_queryr2   extendunquotesplitrW   r<   )r$   rF   queryrY   r2   r<   s         r*   _initFurry34TagExtractor._init   s    [[
!!%(	DKKT\\#%67==cBCVKKv,,S12zz&!7?DIW_DIDIr-   c                 <    SSR                  U R                  5      0$ )Nsearch_tags )joinr2   rk   s    r*   rz   Furry34TagExtractor.metadata   s    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                  b  U R                  US'   U R                  X5      $ s  snf )Nz/v2/post/search/rootincludeTagsr7   r   r<   )r2   replacer<   r\   )r$   rX   r8   rY   s       r*   rl   Furry34TagExtractor.posts   s[    )tyy!Iy!))C"5y!IJ99 !YYF6N11 "Js   A)r2   r<   N)r_   r`   ra   rb   rn   r~   ro   rp   rq   rr   r   rz   rl   re   r^   r-   r*   r   r   z   s0    K3M(KFFG'G$42r-   r   )__doc__boorur    r   r@   rp   r   rg   rt   r   r^   r-   r*   <module>r      sN    * !  6L2~ L2^3+ 3*/ *!2* !2r-   