
    i=
                     r    S r SSKJrJr  SSKJr   " S S\5      r\R                  0 5      r " S S\5      r	g	)
z+Extractors for lolisafe/chibisafe instances   )BaseExtractorMessage   )textc                   $    \ rS rSrSrSrSrSrSrg)LolisafeExtractor   z"Base class for lolisafe extractorslolisafe)z
{category}z{album_name} ({album_id})z{album_id}_{id} N)	__name__
__module____qualname____firstlineno____doc__basecategorydirectory_fmtarchive_fmt__static_attributes__r       J/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/lolisafe.pyr   r      s    ,L?M#Kr   r   c                   >    \ rS rSrSr\S-   rSrS rS r	S r
S rS	rg
)LolisafeAlbumExtractor   albumz/a/([^/?#]+)zhttps://xbunkr.com/a/IDc                 V    [         R                  X5        U R                  S   U l        g )N)r   __init__groupsalbum_id)selfmatchs     r   r   LolisafeAlbumExtractor.__init__   s    ""4/Br   c                     U R                  S5      nUS:X  a&  [        R                  " U R                  5      U l        g U(       a  [        R
                  " U5      U l        g g )Ndomainauto)configr   root_from_urlurlrootensure_http_scheme)r    r$   s     r   _initLolisafeAlbumExtractor._init#   sH    X&V**4884DI//7DI r   c              #     #    U R                  U R                  5      u  p[        R                  SU4v   [	        US5       GH  u  US'   nUS   nUR                  U5        SU;  a  [        R                  " XC5        SU;   ax  US   nUR                  S5      S   =(       d    UUS'   US	   R                  S
5      u  pgnU(       a  [        U5      S:X  a  SU;  a  SUS'   US   US	'   OZXS'   US    S
U 3US	'   OHSU;   a%  US	   US'   US	   US   :w  a  US    S
US    3US	'   OUS	   R                  S
5      u  US'   osS'   [        R                  XC4v   GM     g 7f)N r   numfile	extensionname.    filename-   id)fetch_albumr   r   	Directory	enumerateupdater   nameext_from_url
rpartitionlenUrl)	r    filesdatar0   r(   r2   _sepfids	            r   itemsLolisafeAlbumExtractor.items*   s    &&t}}5T))!*5!!4DKv,CKK$&%%c0~F|#s3A6>$V":.99#>c#h"n4'%'T
'+F|D$!$J*.v,q'>D$#J/V
#tDz1*.v,qd'ED$ $//4 .Vc: ++s((5 "5s   EEc                     U R                    SU 3nU R                  U5      nUS   U R                  [        R                  " US   5      US   S.4$ )Nz/api/album/get/rA   titlecount)r   
album_namerJ   )r)   request_jsonr   r   unescape)r    r   r(   rB   s       r   r9   "LolisafeAlbumExtractor.fetch_albumJ   sZ    ?8*5  %G}----W6w-
 
 	
r   )r   r)   N)r   r   r   r   subcategoryBASE_PATTERNpatternexampler   r+   rF   r9   r   r   r   r   r   r      s+    K^+G'G(8)@
r   r   N)
r   commonr   r   r.   r   r   r<   rP   r   r   r   r   <module>rT      s@    2 * $ $ !'' ) 8
. 8
r   