
    i(                     >   S r SSKJrJrJrJr  SSKJrJrJ	r	  SSK
J
r
   " S S\\5      r\R                  SS	S
.SS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 nijie instances   )BaseExtractorMessageDispatchAsynchronousMixin   )textdt	exception)cachec                       \ 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S rS rS r\" SSS9S 5       rS rSrg)NijieExtractor   zBase class for nijie extractorsNijie)
{category}	{user_id}z{image_id}_p{num}.{extension}z{image_id}_{num})g       @g      @c                     [         R                  " X5        [        R                  " U R                  S   5      U l        g N)r   __init__r   	parse_intgroupsuser_id)selfmatchs     G/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/nijie.pyr   NijieExtractor.__init__   s(    t+~~dkk"o6    c                     SU R                   R                  S5      S   -   U l        U R                  S-   4U l        [
        R                  " U 5        S U l        U R                  S:X  a  U R                  U l	        g g )N./r   _tokhorne)
root
rpartitioncookies_domaincategorycookies_namesr   
initialize	user_name_extract_data_horne_extract_datar   s    r   r(   NijieExtractor.initialize   sk    !DII$8$8$=a$@@"mmf46  &==G#!%!9!9D $r   c              #     #    U R                  5         U R                  5        GHJ  nU R                   SU 3nU R                  USS9nUR                  S:  a  M7  UR
                  nU R                  U5      n[
        R                  " U5      US'   U R                  (       a  U R                  US'   U R                  US'   OUS   US'   US	   US'   U R                  X5      n[        U5      US
'   [        R                  SU4v   [        U5       HZ  u  pr[
        R                  " UUSU-   S.5      nUR!                  U5        US   (       d  SUS'   [        R"                  US   U4v   M\     GMM     g 7f)Nz/view.php?id=F)fatali  image_idr   r)   	artist_idartist_namecount zhttps:)numurl	extensionjpgr6   )login	image_idsr#   requeststatus_coder   r+   r   r)   r   _extract_imageslenr   	Directory	enumeratenameext_from_urlupdateUrl)	r   r0   r6   responsepagedataurlsr5   images	            r   itemsNijieExtractor.items&   sW    

(HYYK}XJ7C||Cu|5H##s*==D%%d+D#~~h7D~~"&,,Y$(NN[!"&{"3Y$($7[!''7DIDM##R--%dO--c#c>4  T"[)).E+&kk5<66 ,- )s   E1E3c                     g)zCollect all relevant image-idsN r,   s    r   r:   NijieExtractor.image_idsI   s    r   c           	         [         R                  " U5      n[         R                  " U" SS5      5      R                  S5      nUS   R	                  5       [         R                  " U" SS5      R                  SS5      5      [        R                  " U" S	S5      S
5      [        R                  " SS9-
  [         R                  " U" SS5      5      US   USS S.$ )"Extract image metadata from 'page'name="keywords" content="" />,    z"description": ""z&amp;&z"datePublished": "z%a %b %d %H:%M:%S %Y	   hours/members.php?id=r   r   r   )titledescriptiondater1   r2   tags)
r   extract_fromunescapesplitstripreplacer	   parse	timedeltar   r   rE   extrkeywordss       r   r+   NijieExtractor._extract_dataL   s      &=='"1 227%* 	 $A;,,.=="C*))0#)>@88D$c%+,B1%&  >>$/A3*GH#A;#Ab>

 
	
r   c                    [         R                  " U5      n[         R                  " U" SS5      5      R                  S5      nUS   R	                  5       [         R                  " U" SS5      5      [         R
                  " U" SS5      5      US   US	S
 [        R                  " U" SS5      R                  S5      S	   5      [        R                  " SS9-
  S.$ )rO   rP   rQ   rR   rS   z#property="og:description" content="rT   zmembers.php?id=r   r   r   z!itemprop='datePublished' content=<>rV   rW   )rZ   r[   r1   r2   r]   r\   )
r   r^   r_   r`   ra   r   r	   	parse_isor$   rd   re   s       r   r*   "NijieExtractor._extract_data_horne]   s      &=='"1 227%* 	 $A;,,.==5s*< =>>$/@#*FG#A;#Ab><<3S)::D*S/!)M 1%&

 
	
r   c                 `   SU;   as  U R                    SU 3nU R                  U5      R                  n[        R                  " USS5       Vs/ s H#  nSU;   d  M  [        R                  " USS5      PM%     sn$ UR                  S5      S-   n[        R                  " US	SU5      S
   4$ s  snf )Nz
&#diff_1" z/view_popup.php?id=zhref="javascript:void(0);"><rk   z src="rT   zid="view-center"r   zitemprop="image" src="rS   )r#   r;   r   extract_iterrf   findextract)r   r0   rE   r6   mediaposs         r   r=   NijieExtractor._extract_imagesn   s    4YYK28*=C<<$))D "..8#??Eu$ 0		%3/?  ))./!3CLL'?cJ1MOOs   
B+B+c                 Z    [         R                  " [         R                  " USS5      5      $ )Nz<br />rj   r   r_   rf   r   rE   s     r   _extract_user_name!NijieExtractor._extract_user_name~   s    }}TYYtXs;<<r   c                     U R                  U R                  5      (       a  g U R                  5       u  pU(       a   U R                  U R	                  X5      5      $ [
        R                  " S5      e)NzUsername and password required)cookies_checkr'   _get_auth_infocookies_update_login_implr
   AuthenticationError)r   usernamepasswords      r   r9   NijieExtractor.login   s^    d0011!002&&t'7'7'KLL++,LMMr   i v r   )maxagekeyargc                     U R                   R                  SU5        U R                  S-   nXSS.nU R                  USUS9nSUR                  ;   a  [
        R                  " 5       eU R                  $ )NzLogging in as %sz/login_int.phpon)emailr   savePOST)methodrF   z
/login.php)loginfor#   r;   r   r
   r   cookies)r   r   r   r6   rF   rD   s         r   r~   NijieExtractor._login_impl   sg    ((3ii**!F<<F<>8==(//11||r   c              #   8  #    U R                    SU S3nU R                  SS.n U R                  X#SS9R                  nU R                  c  U R                  U5      U l        [        R                  " USS5       S h  vN   S	U;  a  g US
==   S-  ss'   Ms   N7f)Nr    z.phpr   )idpartist)paramsnotfoundzillust_id="rT   <a rel="next"r   )r#   r   r;   r   r)   rx   ro   )r   pathr6   r   rE   s        r   _paginationNijieExtractor._pagination   s     1TF$'1-<<X<FKKD~~%!%!8!8!>((}cBBBd*3K1K 
 Cs   A;B=B>B)r+   r%   r'   r   r)   N)__name__
__module____qualname____firstlineno____doc__basecategorydirectory_fmtfilename_fmtarchive_fmtrequest_intervalr   r(   rI   r:   r+   r*   r=   rx   r9   r   r~   r   __static_attributes__rL   r   r   r   r      so    )L/M2L$K!7:!7F-
"
"P =N (1%	 &	r   r   zhttps://nijie.infoz(?:www\.)?nijie\.info)r#   patternzhttps://horne.redz(?:www\.)?horne\.red)nijier"   c                   ,    \ rS rSrSr\S-   rSrS rSr	g)NijieUserExtractor   z!Extractor for nijie user profilesz/members\.php\?id=(\d+)z'https://nijie.info/members.php?id=12345c           	          U R                    SU R                   3R                  nU R                  [        U" S5      4[
        U" S5      4[        U" S5      4[        U" S5      44S5      $ )Nz/{}.php?id=members_illustmembers_dojinuser_like_illust_viewhistory_nuita)illustrationdoujin)r#   r   format_dispatch_extractorsNijieIllustrationExtractorNijieDoujinExtractorNijieFavoriteExtractorNijieNuitaExtractor)r   fmts     r   rI   NijieUserExtractor.items   ss    =7>>(('-=)>?!_)=>#-D)EF _)=>	*

 &' 	'r   rL   N)
r   r   r   r   r   BASE_PATTERNr   examplerI   r   rL   r   r   r   r      s    +77G7G'r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	r      z/Extractor for all illustrations of a nijie-userr   z/members_illust\.php\?id=(\d+)z.https://nijie.info/members_illust.php?id=12345c                 $    U R                  S5      $ )Nr   r   r,   s    r   r:   $NijieIllustrationExtractor.image_ids        011r   rL   Nr   r   r   r   r   subcategoryr   r   r   r:   r   rL   r   r   r   r      s    9 K>>G>G2r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	r      z,Extractor for doujin entries of a nijie userr   z/members_dojin\.php\?id=(\d+)z-https://nijie.info/members_dojin.php?id=12345c                 $    U R                  S5      $ )Nr   r   r,   s    r   r:   NijieDoujinExtractor.image_ids       00r   rL   Nr   rL   r   r   r   r      s    6K==G=G1r   r   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)r      z5Extractor for all favorites/bookmarks of a nijie userfavorite)r   	bookmarksr   zf_{user_id}_{image_id}_{num}z%/user_like_illust_view\.php\?id=(\d+)z5https://nijie.info/user_like_illust_view.php?id=12345c                 $    U R                  S5      $ )Nr   r   r,   s    r   r:    NijieFavoriteExtractor.image_ids   s     788r   c                 l    [         R                  U5      nU R                  US'   U R                  US'   U$ Nr   r)   r   r+   r   r)   r   rE   rF   s      r   r+   $NijieFavoriteExtractor._extract_data   2    ++D1,,Y NN[r   rL   N)r   r   r   r   r   r   r   r   r   r   r   r:   r+   r   rL   r   r   r   r      s.    ?K<M0KEEGEG9r   r   c                   D    \ 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)r      u+   Extractor for a nijie user's 抜いた listnuita)r   r   r   zn_{user_id}_{image_id}_{num}z/history_nuita\.php\?id=(\d+)z-https://nijie.info/history_nuita.php?id=12345c                 $    U R                  S5      $ )Nr   r   r,   s    r   r:   NijieNuitaExtractor.image_ids   r   r   c                 l    [         R                  U5      nU R                  US'   U R                  US'   U$ r   r   r   s      r   r+   !NijieNuitaExtractor._extract_data   r   r   c                 Z    [         R                  " [         R                  " USS5      5      $ )Nz<title>u   さんの抜いたrv   rw   s     r   rx   &NijieNuitaExtractor._extract_user_name   s    }}TYYtY8LMNNr   rL   N)r   r   r   r   r   r   r   r   r   r   r   r:   r+   rx   r   rL   r   r   r   r      s4    5K8M0K==G=G1Or   r   c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
NijieFeedExtractor   z#Extractor for nijie liked user feedfeedz/like_user_view\.phpz%https://nijie.info/like_user_view.phpc                 $    U R                  S5      $ )Nlike_user_viewr   r,   s    r   r:   NijieFeedExtractor.image_ids  r   r   c                     g)Nr4   rL   rw   s     r   rx   %NijieFeedExtractor._extract_user_name  s    r   rL   N)r   r   r   r   r   r   r   r   r   r:   rx   r   rL   r   r   r   r      s$    -K44G5G2r   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	NijieFollowedExtractori
  z"Extractor for followed nijie usersfollowedz/like_my\.phpzhttps://nijie.info/like_my.phpc              #   H  #    U R                  5         U R                  S-   nSS0nS[        0n U R                  XS9R                  n[        R
                  " USS5       H(  nU R                   SU 3n[        R                  Xc4v   M*     S	U;  a  g US==   S-  ss'   Ms  7f)
Nz/like_my.phpr   r   
_extractor)r   z"><a href="/members.php?id=rT   rY   r   )r9   r#   r   r;   r   ro   r   Queue)r   r6   r   rF   rE   r   user_urls          r   rI   NijieFollowedExtractor.items  s     

ii.(q01<<<388D,,7>"ii[(8	BmmX33>
 d*3K1K s   B B"rL   N)r   r   r   r   r   r   r   r   r   rI   r   rL   r   r   r   r   
  s    ,K--G.Gr   r   c                   0    \ rS rSrSrSr\S-   rSrS r	Sr
g)	NijieImageExtractori$  z Extractor for a nijie work/imagerH   z/view(?:_popup)?\.php\?id=(\d+)z$https://nijie.info/view.php?id=12345c                 "    U R                   S   4$ r   )r   r,   s    r   r:   NijieImageExtractor.image_ids*  s    B!!r   rL   Nr   rL   r   r   r   r   $  s    *K??G4G"r   r   N)r   commonr   r   r   r   r4   r   r	   r
   r   r   rB   r   r   r   r   r   r   r   r   r   rL   r   r   <module>r      s    % G G " " T& Tn $$$+
 $*	& 	'> '2 21> 1^ $O. O*
 
^ 4". "r   