
    iY                         S r SSKJrJr  SSKJrJr  SSKJr  SSKrSSK	r	 " S S	\5      r
 " S
 S\
5      r " S S\
5      rg)z'Extractors for https://www.mangoxo.com/   )	ExtractorMessage   )text	exception)cache    Nc                   X    \ rS rSrSrSrSrSrSrSr	S r
\" S	S
S9S 5       rS rS rSrg)MangoxoExtractor   z!Base class for mangoxo extractorsmangoxozhttps://www.mangoxo.comzwww.mangoxo.com)SESSIONTc                     U R                  5       u  pU(       a!  U R                  U R                  X5      5        g [        R                  (       a'  S[        l        U R
                  R                  S5        g g )NFz=Unauthenticated users cannot see more than 5 images per album)_get_auth_infocookies_update_login_implr   _warninglogwarning)selfusernamepasswords      I/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/mangoxo.pyloginMangoxoExtractor.login   s]    !002 0 0 DE&&(-%HH < = '    i0*  r   )maxagekeyargc                 &   U R                   R                  SU5        U R                  S-   nU R                  U5      R                  n[        R
                  " USS5      nU R                  S-   nSU R                  S-   S.nU R                  XU5      nU R                  USXgS	9nUR                  5       n[        UR                  S
5      5      S:w  a%  [        R                  " UR                  S5      5      eSU R                  R                  S5      0$ )NzLogging in as %sz/loginzid="loginToken" value=""z
/api/loginXMLHttpRequest)zX-Requested-WithRefererPOST)methodheadersdataresult1msgr   )r   inforootrequestr   extr_sign_by_md5jsonstrgetr   AuthenticationErrorcookies)	r   r   r   urlpagetokenr%   r&   responses	            r   r   MangoxoExtractor._login_impl#   s    ((3ii("||C %%		$ 93?ii,& 0yy8+
   U;<<FG<O}}txx!"c)//@@4<<++I677r   c           
      ^   SU4SU4SU4S[        [        [        R                  " 5       5      5      4/nSR                  S [	        U5       5       5      nUS-  n[
        R                  " UR                  5       5      R                  5       nUR                  SUR                  5       45        U$ )	Nr   r   r6   	timestamp&c              3   D   #    U  H  nS R                  U5      v   M     g7f)=N)join).0items     r   	<genexpr>0MangoxoExtractor._sign_by_md5.<locals>.<genexpr>@   s     CND$Ns    z&secretKey=340836904sign)r0   inttimer>   sortedhashlibmd5encode	hexdigestappendupper)r   r   r   r6   paramsqueryrC   s          r   r.   MangoxoExtractor._sign_by_md58   s     (#(#% #c$))+./0	
 CF6NCC''{{5<<>*446vtzz|,-r   c                 `    [         R                  " [         R                  " USS5      S   5      $ )Nztotal :,r	   )r   	parse_intextract)r   r5   s     r   _total_pagesMangoxoExtractor._total_pagesF   s#    ~~dll4C@CDDr    N)__name__
__module____qualname____firstlineno____doc__categoryr+   cookies_domaincookies_namesr   r   r   r   r.   rT   __static_attributes__rV   r   r   r   r      sI    +H$D&N MH= &#8 $8(Er   r   c                   H    \ 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S rSrg)MangoxoAlbumExtractorJ   z#Extractor for albums on mangoxo.comalbumz!{album[id]}_{num:>03}.{extension})z
{category}z{channel[name]}z{album[name]}z{album[id]}_{num}z0(?:https?://)?(?:www\.)?mangoxo\.com/album/(\w+)z https://www.mangoxo.com/album/IDc                 B    [         R                  X5        US   U l        g Nr   )r   __init__album_idr   matchs     r   rf   MangoxoAlbumExtractor.__init__S   s    !!$.ar   c              #   <  #    U R                  5         U R                   SU R                   S3nU R                  U5      R                  nU R                  U5      nU R                  X5      n[        R                  SU4v   S US'   [        US5       H  u  US'   n[        R                  " [        R                  " USS5      5      US	'   U R                  S
-   UR                  S5      S   -   n[        R                  U[        R                  " X5      4v   M     g 7f)N/album// 	extensionr   numr=   r;   idz
/external/zurl=r   )r   r+   rg   r,   r   metadataimagesr   	Directory	enumeraterR   r-   
rpartitionUrlnameext_from_url)r   r4   r5   r&   imgspaths         r   itemsMangoxoAlbumExtractor.itemsW   s     

74==/3||C %%}}T"{{3%T)) [!*4!3DK		$S(ABDJ))l*T__V-DQ-GGC++sD$9$9#$DDD "4s   DDc                    [         R                  " U5      nU" SS5      nU" SS5      nU" SS5      nU" SS5      nU" SS5      nU" SS5      nU" S	S
5      n	U[         R                  " U5      US.U R                  [         R                  " U5      U R	                  UR                  5       S5      [         R                  " U	5      S.[         R                  " U5      S.$ )zReturn general metadataz<img id="cover-img" alt="r    z#href="https://www.mangoxo.com/user/z
<img alt="z src="zid="pic-count"><zclass="fa fa-calendar"></i>z<pre>z</pre>)rq   namecoverz%Y.%m.%d %H:%M)rq   r   datedescription)channelrc   count)r   extract_fromunescaperg   parse_datetimestriprR   )
r   r5   r-   titlecidcnamer   r   r   descrs
             r   rr   MangoxoAlbumExtractor.metadataf   s      &0#68#>\3'Xs#&,137Wh' e, mme,++DJJL:JK#}}U3	 ^^E*
 	
r   c              #      #    U R                  U5      nSn [        R                  " USS5       Sh  vN   XC:  a  gUS-  nU R                  U[	        U5      -   5      R                  nMT   N87f)z Generator; Yields all image URLsr   z class="lightgallery-item" href="r    N)rT   r   extract_iterr,   r0   )r   r4   r5   totalrp   s        r   rs   MangoxoAlbumExtractor.images   st     !!$'((8#? ? ?|1HC<<c#h/44D ?s   0A-A+9A-)rg   N)rW   rX   rY   rZ   r[   subcategoryfilename_fmtdirectory_fmtarchive_fmtpatternexamplerf   r{   rr   rs   r_   rV   r   r   ra   ra   J   s8    -K6LFM%KAG0G!E
45r   ra   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g	)
MangoxoChannelExtractor   z-Extractor for all albums on a mangoxo channelr   z0(?:https?://)?(?:www\.)?mangoxo\.com/(\w+)/albumz"https://www.mangoxo.com/USER/albumc                 B    [         R                  X5        US   U l        g re   )r   rf   userrh   s     r   rf    MangoxoChannelExtractor.__init__   s    !!$.!H	r   c              #   v  #    U R                  5         S=pU R                   SU R                   S3nS[        0n U R	                  U[        U5      -   5      R                  n[        R                  " USS5       H  n[        R                  Xd4v   M     US:X  a  U R                  U5      nX:  a  g US-  nM~  7f)Nr   rm   rl   
_extractorz<a class="link black" href="r    )r   r+   r   ra   r,   r0   r   r   r   QueuerT   )r   rp   r   r4   r&   r5   rc   s          r   r{   MangoxoChannelExtractor.items   s     

1TYYKw/34<<c#h/44D**8#?mmU00? ax))$/|1HC s   B7B9)r   N)rW   rX   rY   rZ   r[   r   r   r   rf   r{   r_   rV   r   r   r   r      s    7KAG2Gr   r   )r[   commonr   r   rn   r   r   r   rG   rE   r   ra   r   rV   r   r   <module>r      sE    . &    5Ey 5EpA5, A5H. r   