
    iQ                     D   S r SSKJrJrJr  SSKJrJrJrJ	r	  SSK
J
r
  SSKrSrS	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 " S S\5      r " S S\5      r " S S\5      rg) z*Extractors for https://www.newgrounds.com/   )	ExtractorMessageDispatch   )textutildt	exception)cache    Nz'(?:https?://)?(?:www\.)?newgrounds\.comz'(?:https?://)?([\w-]+)\.newgrounds\.comc                       \ 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S rS rS rS rS rS rS S jrSrg)!NewgroundsExtractor   z$Base class for newgrounds extractors
newgrounds)
{category}z{artist[:10]:J, }z'{category}_{_index}_{title}.{extension}z{_type}{_index}zhttps://www.newgrounds.com.newgrounds.com)NG_GG_username
vmk1du5I8m)g      ?g      ?c                 n    [         R                  " X5        US   U l        SU R                   S3U l        g )Nr   zhttps://r   )r   __init__user	user_rootselfmatchs     L/app/mltbenv/lib/python3.13/site-packages/gallery_dl/extractor/newgrounds.pyr   NewgroundsExtractor.__init__   s/    4'!H	#DII;o>    c                    [         R                  " S5      R                  U l        U R	                  SS5      U l        U R	                  S5      nU(       a  US:X  a  SU l        g [        U[        [        45      (       a  Xl        g U R                  U l        [        U[        5      (       a  UO$[         R                  " UR                  S5      5      U l        g )Nz%(?:<img |data-smartload-)src="([^"]+)flashTformatoriginal)mp4webmm4vmovmkvi8  i  ih  p)r   refindall_extract_comment_urlsconfigr    r!   
isinstancelisttuple_video_formats_limit_video_formatsint	parse_intrstrip)r   fmts     r   _initNewgroundsExtractor._init$   s    %)WW4&66=g 	"[[$/
kk(#cZ'+DKdE]++K"&";";D",S#"6"63>>#**S/: Kr   c              #   D  #    U R                  5         U R                  5       nU R                  5        GH  n U R                  U5      nUR	                  S5      nU(       GaR  U(       a  WR                  U5        [        R                  SW4v   SUS'   [        R                  U[        R                  " XC5      4v   SU;   au  US    Hl  nUS==   S-  ss'   US    SUS   S	 3US
'   UR                  U5        US   n[        R                  " XC5        [        R                  XC4v   SU;   d  Mi  US	 Mn     U R                  US   5       Ha  nUS==   S-  ss'   US    SUS   S	 3US
'   [        R                  " U5      n[        R                  " XC5        [        R                  XC4v   Mc     GM  U =R                   S-  sl        U R                  R#                  SU5        GM     g ! [
         a(  nU R                  R                  U5        S n S nAGNS nAff = f7f)Nurl r   num_multir   index_z>02_indeximage	_fallback_commentz#Unable to get download URL for '%s')loginmetadatapostsextract_postget	Exceptionlog	tracebackupdater   	DirectoryUrlr   nameext_from_urlr+   ensure_http_schemestatuswarning)r   rD   post_urlpostr9   excdatas          r   itemsNewgroundsExtractor.items4   s    

==?

H((2hhuo
 KK)''T11Ukk3(=(=c(HHHt# $XUq(,0M?!DK;L)MXD)"7m--c8%kk344&$. $[ 1 !/  55d:6FGCK1$K(,WaUC7H%IDN11#6C))#4!++s00 H q   98EI %  ""3's6   5H "G+CH 1B:H +
H5HH HH c                 h    U R                  U R                  R                  U R                  S   5      $ )z&Return URLs of all relevant post pagesr   )_pagination	__class__subcategorygroupsr   s    r   rE   NewgroundsExtractor.posts_   s'     : :DKKNKKr   c                     g)zReturn general metadataN r]   s    r   rD   NewgroundsExtractor.metadatac   s    r   c                     U R                  U R                  5      (       a  g U R                  5       u  pU(       a!  U R                  U R	                  X5      5        g g N)cookies_checkcookies_names_get_auth_infocookies_update_login_impl)r   usernamepasswords      r   rC   NewgroundsExtractor.loginf   sN    d0011!002 0 0 DE r   i3r   )maxagekeyargc                 L   U R                   R                  SU5        U R                  S-   nU R                  U5      nUR                  (       a,  UR
                  R                  S5      (       a  U R                  $ UR                  nSSSU R                  US.n[        R                  " U R                  [        R                  " USS	5      5      n[        R                  " US
S	5      SU[        U5      SSSS.n U R                  USXgS9nUR                  5       nUR                  S5      (       a  OSU;   a.  [        R                  " S	SR!                  US   5      -   S	-   5      eUR                  S5      (       a  U R#                  S5      US'   SUS'   OFUR                  S5      (       a0  UR                  S5      n	SU	 S3n
U R#                  U
5      US'   SUS'   UR%                  SS 5        M  UR                   Vs0 s H  nUR&                  UR(                  _M     sn$ s  snf )NzLogging in as %sz	/passportz/social.application/json, text/javascript, */*; q=0.01z0application/x-www-form-urlencoded; charset=UTF-8XMLHttpRequest)AcceptzContent-TypeX-Requested-WithOriginRefererzaction=""zname="auth" value="1r:   z------)authrememberri   rj   codecodehintmfaCheckPOST)methodheadersrU   successerrorsz", "requiresMfazVerification Code: ry   z      rz   requiresEmailMfaobfuscatedEmailzEmail Verification Code (z): r{   )rI   inforootrequesthistoryr9   endswithcookiesr   urljoinextrstrjsonrG   r
   AuthenticationErrorjoininputpopnamevalue)r   ri   rj   r9   responsepager~   rU   resultemailpromptcookies               r   rh   NewgroundsExtractor._login_impln   s   ((3ii+%<<$ 5 5i @ @<<}}FN 0ii
 ll499diij#&FG		$(=sC H 
 ||FG $ @H]]_Fzz)$$6!33&++fX&677#=? ? zz-((#zz*?@V#+Z .//

#454UG3?#zz&1V#+Z HHZ&) 0 #**
* KK%*
 	
 
s   =!H!c                     UnSU;   a  U R                   nO5SU;   a  U R                  nO"U R                  nU R                  (       a  US-  nU R	                  USS9nUR
                  nUR                  S5      nUS:  a:  [
        R                  " USS	U5      S   nU R                  R                  S
U5        0 $ UR                  S:  a  0 $ [
        R                  " U5      nU" X5      n	U" SS5      R                  S5      S   R                  5       =U	S'   U	S'   [
        R                  " [
        R                  " U	S   R!                  SS5      R!                  SS5      SS5      5      U	S'   [
        R"                  " U" SS	5      R!                  SS5      5      U	S'   [
        R$                  " U" SS	5      5      U	S'   [
        R&                  " U" SS5      5       V
s/ s H  n
SU
;  d  M  U
PM     sn
U	S '   [
        R(                  " US!S5       Vs/ s H  n[
        R*                  " US"S#5      PM     snU	S$'   U	S    R-                  5         U R.                  =(       d    U	S$   S   U	S%'   XR1                  S&5      S'-   S  U	S('   XS)'   U	$ s  sn
f s  snf )*N
/art/view/z/audio/listen/z/format/flashF)fatalzid="adults_only"r   zclass="highlight"><z"%s"i  zid="author_comments"z</div>>r   comment_htmlrB   z<p><br></p>z

z<br>
r:   commentzid="faves_load">,	favoriteszid="score_number">scorez<dd class="tags">z</dd>z
(function(tagsz<div class="item-user">z//.artistr   /r   slugrR   )_extract_image_data_extract_audio_data_extract_media_datar    r   r   findextractrI   rQ   status_codeextract_from	partitionstripunescaperemove_htmlreplacer3   parse_float
split_htmlextract_iterr   sortr   rfind)r   rR   r9   extract_datar   r   posmsgr   rU   tr   s               r   rF    NewgroundsExtractor.extract_post   s{   8#33L)33L33Lzz&<<5<1}}ii*+!8,,t%93DQGCHHVS)I3&I  &D+26"H3..7inQ3@@E	H^tJ/--(8(8W]F+GGFD,A2r)K LY !NN4,%%,WS"%57[((.BC)HIWt,?'IJ
J!1$ J
V ))$0I3O
O IIdD#&O
X
 	Vyy5DN1$5Vs 3A 5 67V#Z

s   
J(J"Jc                    [         R                  " [        R                  " U" SS5      5      5      n[         R                  " U" SS5      5      [         R                  " U" SS5      5      SS[
        R                  " U" SS5      5      U" S	S5      U" S
S5      [         R                  " U" SS5      5      [         R                  " U" SS5      5      S.	nUS   (       d  U" SS5      US'   US   R                  S5      S   R                  S5      S   n[         R                  " U5      US'   XTS'   U" SS5      =n(       a  U R                  U5      US'   U$ U" SS5      =n(       a  U R                  Xt5      US'   U$ )Nz"full_image_text":z});"og:title" content="ru   :description" content="arti"itemprop="datePublished" content="class="rated-zsrc="zwidth="zheight=")	titledescriptiontype_typedateratingr9   widthheightr9   z	<a href="r   r   r>   r   r=   r?   zlet imageData =z
];r<   z<div class="art-imagesz	
		</div>)r   r   r   
json_loadsr   r	   	parse_isor3   
rpartitionr   _extract_images_multi_extract_images_art)r   r   r9   fullrU   r=   
image_data
art_imagess           r   r   'NewgroundsExtractor._extract_image_data   si      %2) "* +  ==.Dc)JK==.G)MN <<4c); <5->>$y#*>?>>$z3*?@
 E{{C0DKU&&s+A.88=a@u-WX/88:8!77
CDN
  "":NKKzK!%!9!9*!KXr   c              #   \   #    [         R                  " US-   5      nUSS   S h  vN   g  N7f)N]r   )r   r   )r   htmlrU   s      r   r   )NewgroundsExtractor._extract_images_multi   s&     tcz*8s   ",*,c           	   #     #    [         R                  " US   5      n[         R                  " USS5       H  n[         R                  " U5      nUR	                  SSS5      n[         R                  " U5      S:X  aY  S Vs/ s H  oUU:w  d  M
  UR	                  S	S
U-   5      PM!     nnUR                  U5        UR	                  S	S
U-   5      US.v   M  SU0v   M     g s  snf 7f)Nr9   zdata-smartload-src="ru   z/medium_views/z/images/r   webp)jpgpnggifz.webpr   )r@   rA   r@   )r   ext_from_urlr   rO   r   append)r   r   rU   extr9   efallbacks          r   r   'NewgroundsExtractor._extract_images_art   s     U,$$T+A3GC))#.C++.
A>C  %/%:H%:3h :CKKq9%:  H$!$WcCi!@!) 
 n$ HHs   A<C#>	CC$?C#c           
      :   UR                  S5      S   n[        R                  " U" SS5      5      [        R                  " U" SS5      5      SS[        R                  " U" SS5      5      U" S	S5      R                  S
S5      [        R                  " U5      USS.	$ )Nr      r   ru   r   audioar   {"url":"\/r:   )	r   r   r   r   r   r9   r=   r?   r   )splitr   r   r	   r   r   r3   )r   r   r9   r=   s       r   r   'NewgroundsExtractor._extract_audio_data	  s    		#q!==.Dc)JK==.G)MN"<<4c); <
C088D>>%0 
 	
r   c                    UR                  S5      S   nU" SS5      nU" SS5      nU" SS5      nU" SS5      nU(       a  UR                  SS5      nS	nU" S
S5      n[        R                  " U" SS5      5      n	U(       a#  UR	                  S5      S   R                  5       nO[        R                  " U5      S:X  a  SOSnOkU R                  S-   U-   nSSS.n
U R                  X*S9S   nU R                  U5      n[        US5      nU R                  UR	                  S5      S   5      n	Sn[        R                  " U5      UU	US[        R                  " U=(       d	    U" SS5      5      U" SS5      [        R                  " U5      UUS.
$ )Nr   r   r   ru   zog:type" content="z"og:description" content="r   r   r`   z,"description":"r    r   swfr    gamez/portal/video/ro   rp   rq   rr   )r~   sourcesr:   ?moviez itemprop="description" content="r   )
r   r9   r   r   r   r   r   r=   r?   rA   )r   r   r	   r   r   lowerr   r   r   request_jsonr1   nextparse_timestampr   r3   )r   r   r9   r=   r   r   descrsrcformatsr   r~   r   s               r   r   'NewgroundsExtractor._extract_media_data  s   		#q!+S1(#.137:s#++eS)CG*C0D<<4c!; <Ds+A.446"&"3"3C"8E"Awv))..6CJ$4G '''=iHG))'2Gw#C''s(;A(>?DD  ==/== *9$2C39 :5>>%0 "
 	
r   c              #     #    US   S   S   n[         R                  " S5      R                  nU R                   HV  n [	        U[
        5      (       a  U[        U5      S-      S   S   v   M4  XA;   a  X   S   S   v   MG  U" SU-   US5      v   MX     g ! [         a<  nU R                  R                  SXER                  R                  U5         S nAM  S nAff = f7f)	N360pr   r   z\.360p\.\w+r(   r   r   z(Video format '%s' not available (%s: %s))r   r)   subr!   r-   r2   r   rH   rI   debugrZ   __name__)r   r   r   r  r5   rT   s         r   r1   "NewgroundsExtractor._video_formatsC  s     foa 'ggn%));;C	Ac3''!#c(S.1!4U;;^!,q/%00cCia00   AI"MM$:$:CA AAsF   ;C.B,C.B?CBC
C1CCCCc              #     #    / nUR                  5        HM  u  p4[        R                  " UR                  S5      5      nXPR                  ::  d  M;  UR                  XT45        MO     UR                  SS9  U H  nUS   S   S   v   M     g 7f)Nr(   T)reverser   r   r   )rV   r   r3   r4   r!   r   r   )r   r   r   r5   r   r   s         r   r0   (NewgroundsExtractor._video_formats_limitS  sw     HCNN3::c?3E#|, (
 	T"Ca&)E"" s   A
B<Bc              #     #    U R                    SU 3n[        R                  " US5      SS.nUSS.n U R                  X4USS9 n UR	                  5       nU(       d
   S S S 5        g S	U;   a1  S
R                  S US	    5       5      n[        R                  " U5      e S S S 5        WR                  S5      n	U	(       d  g U	R                  5        HB  u  pU	 H7  n[        R                  " USS5      nUS   S:X  a  U R                  U-   nUv   M9     MD     UR                  S5      nU(       a  [        U5      S:  a  g US==   S-  ss'   GM  ! [
         a     S S S 5        g f = f! , (       d  f       N= f7f)Nr   r   rv   r   isAjaxRequestrp   rt   rr   F)paramsr~   r   r   z, c              3   N   #    U  H  n[         R                  " U5      v   M     g 7frc   )r   r   ).0r   s     r   	<genexpr>2NewgroundsExtractor._pagination.<locals>.<genexpr>t  s     #MnDMM!$4$4ns   #%rV   href="ru   r   	load_more   r   )r   r   r3   r   r   
ValueErrorr   r
   AbortExtractionrG   rV   r   r   len)r   kindpnumr9   r  r~   r   rU   r   rV   yearitempage_urlmores                 r   rY   NewgroundsExtractor._pagination^  s     $(NN4+ 

  0

   !$,#==?D ! ! t#))#Md8n#MMC#33C88 $! HHW%E${{}!D#yyx=H{c)#'99x#7"N	 "  - 88K(D3t9q=6NaN9  " ! !
! !sU   AE8E'EE'	E8(7E' B/E8
E$E'	E8#E$$E''
E51E8)r+   r1   r    r!   r   r   Nr   )r  
__module____qualname____firstlineno____doc__categorydirectory_fmtfilename_fmtarchive_fmtr   cookies_domainre   request_intervalr   r6   rV   rE   rD   rC   r   rh   rF   r   r   r   r   r   r1   r0   rY   __static_attributes__r`   r   r   r   r      s    .H7M<L#K'D&N4M!?
< )EVL&F )A&4
 '4
l/b>% 
)
VA 	#' r   r   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g	)
NewgroundsImageExtractori  z0Extractor for a single image from newgrounds.comr@   zw(?:https?://)?(?:(?:www\.)?newgrounds\.com/art/view/([^/?#]+)/[^/?#]+|art\.ngfiles\.com/images/\d+/\d+_([^_]+)_([^.]+))z.https://www.newgrounds.com/art/view/USER/TITLEc                     [         R                  X5        US   (       a1  US   U l        U R                   SU R                   SUS    3U l        g [
        R                  " US   5      U l        g )Nr   r   r      r   )r   r   r   r   rR   r   rO   r   s     r   r   !NewgroundsImageExtractor.__init__  s\    $$T18aDI#yykDII;aazJDM 33E!H=DMr   c                     U R                   4$ rc   rR   r]   s    r   rE   NewgroundsImageExtractor.posts      r   rR   r   N)r  r   r!  r"  r#  r[   patternexampler   rE   r*  r`   r   r   r,  r,    s#    :KEG ?G> r   r,  c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
NewgroundsMediaExtractori  z.Extractor for a media file from newgrounds.commediaz#(/(?:portal/view|audio/listen)/\d+)z,https://www.newgrounds.com/portal/view/12345c                 j    [         R                  X5        SU l        U R                  US   -   U l        g )Nr:   r   )r   r   r   r   rR   r   s     r   r   !NewgroundsMediaExtractor.__init__  s+    $$T1			E!H,r   c                     U R                   4$ rc   r1  r]   s    r   rE   NewgroundsMediaExtractor.posts  r3  r   r4  N)r  r   r!  r"  r#  r[   BASE_PATTERNr5  r6  r   rE   r*  r`   r   r   r8  r8    s$    8KCCG<G-
 r   r8  c                   *    \ rS rSrSrSr\S-   rSrSr	g)NewgroundsArtExtractori  z-Extractor for all images of a newgrounds userr   z%/art(?:(?:/page/|/?\?page=)(\d+))?/?$zhttps://USER.newgrounds.com/artr`   N
r  r   r!  r"  r#  r[   USER_PATTERNr5  r6  r*  r`   r   r   r@  r@    s    7KEEG/Gr   r@  c                   *    \ rS rSrSrSr\S-   rSrSr	g)NewgroundsAudioExtractori  z8Extractor for all audio submissions of a newgrounds userr   z'/audio(?:(?:/page/|/?\?page=)(\d+))?/?$z!https://USER.newgrounds.com/audior`   NrA  r`   r   r   rD  rD    s    BKGGG1Gr   rD  c                   *    \ rS rSrSrSr\S-   rSrSr	g)NewgroundsMoviesExtractori  z-Extractor for all movies of a newgrounds usermoviesz(/movies(?:(?:/page/|/?\?page=)(\d+))?/?$z"https://USER.newgrounds.com/moviesr`   NrA  r`   r   r   rF  rF    s    7KHHG2Gr   rF  c                   *    \ rS rSrSrSr\S-   rSrSr	g)NewgroundsGamesExtractori  z'Extractor for a newgrounds user's gamesgamesz'/games(?:(?:/page/|/?\?page=)(\d+))?/?$z!https://USER.newgrounds.com/gamesr`   NrA  r`   r   r   rI  rI    s    1KGGG1Gr   rI  c                   ,    \ rS rSrSr\S-   rSrS rSr	g)NewgroundsUserExtractori  z'Extractor for a newgrounds user profilez/?$zhttps://USER.newgrounds.comc                     U R                   S-   nU R                  [        US-   4[        US-   4[        US-   4[
        US-   44S5      $ )Nr   r   r   rJ  rG  )r   )r   _dispatch_extractorsr@  rD  rI  rF  )r   bases     r   rV   NewgroundsUserExtractor.items  s]    ~~#((#u5%w7%w7&x8	*

  	r   r`   N)
r  r   r!  r"  r#  rB  r5  r6  rV   r*  r`   r   r   rL  rL    s    1V#G+Gr   rL  c                   D    \ rS rSrSrSrSr\S-   rSr	S r
SS jrS	 rS
rg)NewgroundsFavoriteExtractori  z2Extractor for posts favorited by a newgrounds userfavorite)r   z{user}	FavoriteszN/favorites(?!/following)(?:/(art|audio|movies)(?:(?:/page/|/?\?page=)(\d+))?)?z%https://USER.newgrounds.com/favoritesc                    ^  T R                   u  pnU(       a  T R                  X#5      $ [        R                  R	                  U 4S jS 5       5      $ )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7frc   )_pagination_favorites)r  kr   s     r   r  4NewgroundsFavoriteExtractor.posts.<locals>.<genexpr>  s#      -
3MaD&&q))3Ms   !)r   r   rG  )r\   rW  	itertoolschainfrom_iterable)r   r>   r  r  s   `   r   rE   !NewgroundsFavoriteExtractor.posts  sH    --d99,, -
3M-
 
 	
r   c              #   x  #    U R                    SU 3n[        R                  " US5      SS.nUSS.n U R                  X4US9nUR                  (       a  g UR                  5       nU R                  UR                  S5      =(       d    S	5      nU S h  vN   [        U5      S
:  a  g US==   S-  ss'   M   N#7f)Nz/favorites/r   rv   r
  rp   r  r  r~   	componentr:      r   )	r   r   r3   r   r   r   _extract_favoritesrG   r  )	r   r  r  r9   r  r~   r   rU   favss	            r   rW  1NewgroundsFavoriteExtractor._pagination_favorites  s      D62NN4+ 

  0

 ||C|HH==?D**488K+@+FBGDOO4y2~6NaN  s   BB:B8$B:c                     [         R                  " USU R                  -   S5       Vs/ s H  nU R                  U-   PM     sn$ s  snf )Nr  ru   )r   r   r   )r   r   paths      r   rb  .NewgroundsFavoriteExtractor._extract_favorites  sJ     ))$4990DcJ
J IIJ
 	
 
s   Ar`   Nr  )r  r   r!  r"  r#  r[   r%  rB  r5  r6  rE   rW  rb  r*  r`   r   r   rR  rR    s2    <K9M 3 3G5G
 0
r   rR  c                   6    \ rS rSrSrSr\S-   rSrS r	S r
Srg	)
NewgroundsFollowingExtractori  z1Extractor for a newgrounds user's favorited users	followingz4/favorites/(following)(?:(?:/page/|/?\?page=)(\d+))?z/https://USER.newgrounds.com/favorites/followingc              #      #    U R                   u  pnS[        0nU R                  X#5       H  n[        R                  XT4v   M     g 7f)N
_extractor)r\   rL  rW  r   Queue)r   r>   r  r  rU   r9   s         r   rV   "NewgroundsFollowingExtractor.items  sA     56--d9C--** :s   AAc                     [         R                  " USS5       Vs/ s H+  n[         R                  " UR                  S5      S   5      PM-     sn$ s  snf )Nzclass="item-userz"><imgru   r   )r   r   rO   r   )r   r   r   s      r   rb  /NewgroundsFollowingExtractor._extract_favorites  sR     ))$0BHM
M ##DOOC$8$;<M
 	
 
s   2Ar`   N)r  r   r!  r"  r#  r[   rB  r5  r6  rV   rb  r*  r`   r   r   ri  ri    s(    ;K 1 1G?G+
r   ri  c                   F    \ 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)NewgroundsSearchExtractori  z,Extractor for newgrounds.com search reesultssearch)r   rs  z{search_tags}z$/search/conduct/([^/?#]+)/?\?([^#]+)z9https://www.newgrounds.com/search/conduct/art?terms=QUERYc                     [         R                  X5        U R                  u  U l        n[        R
                  " U5      U l        g rc   )r   r   r\   _pathr   parse_queryquery)r   r   rw  s      r   r   "NewgroundsSearchExtractor.__init__   s2    $$T1 KK
E%%e,
r   c                 (   U R                   R                  S5      =n(       aC  UR                  S5       Vs0 s H	  nSU-   S_M     nnU R                  U R                  S-   SUS9  U R                  SU R                  -   U R                   5      $ s  snf )	Nsuitabilitiesr   view_suitability_onz/suitabilitiesr|   )r}   rU   z/search/conduct/)rw  rG   r   r   r   _pagination_searchru  )r   rz  srU   s       r   rE   NewgroundsSearchExtractor.posts%  s     JJNN?;;=;*00575 (!+T15  7LL%55 &T  3&&+TZZ9 	9	7s   Bc                 >    SU R                   R                  SS5      0$ )Nsearch_tagstermsr:   )rw  rG   r]   s    r   rD   "NewgroundsSearchExtractor.metadata.  s    tzz~~gr:;;r   c              #   V  #    U R                   U-   nSUS'   [        R                  " UR                  S5      S5      US'   SSS.n U R	                  X2US9nS n[        R
                  " US	   S
S5       H  nUR                  S5      (       a  M  Uv   M!     Uc  g US==   S-  ss'   Mc  7f)Nrv   innerr   r   ro   rp   r   r_  contentr  ru   z/search/)r   r   r3   rG   r   r   
startswith)r   rf  r  r9   r~   rU   rR   s          r   r}  ,NewgroundsSearchExtractor._pagination_search1  s     ii$w

6(:A>vF 0

 $$S$IDH --d9oxM**:66"N N 6NaN s   BB)B))ru  rw  N)r  r   r!  r"  r#  r[   r%  r>  r5  r6  r   rE   rD   r}  r*  r`   r   r   rr  rr    s3    6K=MDDGIG-
9< r   rr  )r#  commonr   r   r   r:   r   r   r	   r
   r   rZ  r>  rB  r   r,  r8  r@  rD  rF  rI  rL  rR  ri  rr  r`   r   r   <module>r     s    1 0 0 ( (  99q ) q h 2  ( 2  00 022 23 3 322 2h(; ,
"5 ,
^
#> 
(+  3 + r   