
    V|h6.                         S SK r S SKrSSKJr  SSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJr  SSKJr   " S S	\5      r " S
 S\5      r " S S\5      rg)    N   )InfoExtractor   )	HTTPError)ExtractorErrorOnDemandPagedList
clean_htmlextract_attributesget_element_by_idint_or_noneparse_countparse_durationunified_timestampurl_or_noneurlencode_postdataurljoin)traverse_objc                      \ rS rSrSrSrSSSSSS	S
SS\SSSS.S.SSSSSSSS\SSSS.
S.SSSS S!S"S#\S$SS%S.
S&S'0S(.S)S*S+SS,S-S.S/\S0S1S2S.
S.S3S4S+S5S,S,S-S/S.\S1S2S6.
S.S7S8SS9S:S;S<S=\S>S?S6.
S@./rSS1SS>SA.rSBr	SC r
SD rSErgF)GNewgroundsIE   
newgroundsz]https?://(?:www\.)?newgrounds\.com/(?:audio/listen|portal/view)/(?P<id>\d+)(?:/format/flash)?z.https://www.newgrounds.com/audio/listen/549479 fe6033d297591288fa1c1f780386f07a549479mp3zB7 - BusModeBurn7i<0R20130911   z$md5:b8b3c2958875189f07d8e313462e8c4fr   z/re:^https://aicon\.ngfiles\.com/549/549479\.png)idexttitleuploader	timestampupload_dateduration
view_countdescription	age_limit	thumbnail)urlmd5	info_dictz(https://www.newgrounds.com/portal/view/1 fbfb40e2dc765a7e830cb251d370d9811mp4z	Scrotum 1zBrian-BeatoniW820000407zScrotum plays "catch."   z3re:^https://picon\.ngfiles\.com/0/flash_1_card\.png)
r   r   r    r!   r"   r#   r%   r&   r'   r(   z,http://www.newgrounds.com/portal/view/689400689400zZTV News Episode 8z	ZONE-SAMAiOҰX20170225z$md5:aff9b330ec2e78ed93b1ad6d017accc6z=re:^https://picon\.ngfiles\.com/689000/flash_689400_card\.pngskip_downloadT)r)   r+   paramsz-https://www.newgrounds.com/portal/view/297383 2c11f5fd8cb6b433a63c89ba3141436c297383zMetal Gear Awesome	EgoraptoriLjC20060223z$md5:9246c181614e23754571995104da92e0   z=re:^https://picon\.ngfiles\.com/297000/flash_297383_card\.pngz:https://www.newgrounds.com/portal/view/297383/format/flash 5d05585a9a0caca059f5abfbd3865524swf)
r   r   r    r&   r!   r#   r"   r%   r'   r(   z-https://www.newgrounds.com/portal/view/823109823109zRouge Futa Fleshlight FuckzbI made a fleshlight model and I wanted to use it in an animation. Based on a video by CDNaturally.DefaultUser1220211122ia   z=re:^https://picon\.ngfiles\.com/823000/flash_823109_card\.png)r)   r+   )etmaz#https://www.newgrounds.com/passportc                    U R                  U R                  S S5      n[        U R                  U R                  SUSS S95      nU R	                  US SSU R                  SS.[        0 U R                  U5      EUUS	.E5      S
9n[        USS[        145      =n(       a"  [        SR                  U5      =(       d    SSS9eg )NzDownloading login pagez<form action="([^"]+)"zlogin endpointdefaultz
Logging inapplication/jsonXMLHttpRequestAcceptRefererX-Requested-With)usernamepassword)headersdataerrors.z, zUnknown ErrorT)expected)_download_webpage
_LOGIN_URLr   _search_regex_download_jsonr   _hidden_inputsr   strr   join)selfrM   rN   login_webpage	login_urlresultrQ   s          U/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/newgrounds.py_perform_loginNewgroundsIE._perform_login   s    ..tF^_DOOT-?-?%}6FPT .@ .V W	$$Yl( 0M
 # $
!!-0$
  $
 	 %  "&8S3%*@AA6A 6!2!EoPTUU B    c                   ^^ U R                  U5      n U R                  X5      nU R                  SUSS S9nU(       a  S nU R                  XR5      SSS./nOU R                  SU 3US	US
S.S9n/ n[        US[        145      n[        US[        R                  1S45       HB  u  mn	[        TS S 5      mUR!                  UU4S j[        U	SS["        145       5       5        MD     U(       d  U R%                  SUSSS9n['        U5      S:X  aA  [        U R%                  SUSS S95      US   S'   U R%                  SUSS S9n
U
S:X  a  SUS   S'   U R)                  Xr5        UU R+                  U5      U[-        U R                  SUS S S95      [/        U R%                  S!US"S S95      UU R1                  U5      [3        [5        S#U5      5      =(       d    U R7                  U5      U R8                  R;                  U R%                  S$US%S&S95      [=        U R%                  S'US(S S95      S).
$ ! [         aO  n[        UR                  [
        5      (       a*  UR                  R                  S:X  a  U R                  5         e S nAff = f)*Ni  z*embedController\(\[{"url"\s*:\s*("[^"]+"),z	media urlrE   sourcer   )r)   	format_idqualityz(https://www.newgrounds.com/portal/video/rG   rH   rI   )rO   authorsources.c              3   0   >#    U  H  nTTUS .v   M     g7f))rd   re   r)   N ).0r)   rd   re   s     r^   	<genexpr>-NewgroundsIE._real_extract.<locals>.<genexpr>   s*      Q Pc "+&  Ps   src)z:(?s)<h4[^>]*>(.+?)</h4>.*?<em>\s*(?:Author|Artist)\s*</em>z#(?:Author|Writer)\s*<a[^>]+>([^<]+)r!   F)fatalz%"filesize"\s*:\s*["\']?([\d]+)["\']?,filesizer   z*"description"\s*:\s*["\']?([^"\']+)["\']?,z
media typez
Audio Filenonevcodecz;itemprop="(?:uploadDate|datePublished)"\s+content="([^"]+)"r"   z""duration"\s*:\s*["\']?(\d+)["\']?r$   author_commentsz$<h2\s+class=["\']rated-([etma])["\']r'   r@   z:(?s)<dt>\s*(?:Views|Listens)\s*</dt>\s*<dd>([\d\.,]+)</dd>z
view count)
r   r    r!   r"   r$   formatsr(   r&   r'   r%   )	_match_idrS   r   
isinstancecauser   statusraise_login_requiredrU   _parse_jsonrV   r   rX   dictitemsr   extendr   _html_search_regexlen_check_formats_html_extract_titler   r   _og_search_thumbnailr	   r   _og_search_description
_AGE_LIMITgetr   )rZ   r)   media_idwebpageerrormedia_url_stringr!   rt   
json_videorg   video_type_descriptionrd   re   s              @@r^   _real_extractNewgroundsIE._real_extract   s   >>#&	,,S;G  --97KY] . _H''(8C% G ,,/WX`Wa-bdl,$4w, J G#JC50ABH&2:	DJJ<Y\?]&^"	7%in5 Q *'C3NO	Q Q '_ ..9:A: / H
 w<1%01H1H8':W[ 2I 2] &^GAJz" &*%<%<=w^b &= &d"%5'-
8$G.--g6 *4+=+=Nd ,> ,4 5 't'>'>5w
TX (? (Z [227;,->HI 8..w7,,T-D-D7+WZ .E .\ ]%d&=&=Mt '> '5 6!
 	
a  	%++y11ekk6H6HC6O))+	s   H- -
J7A
JJrj   N)__name__
__module____qualname____firstlineno___NETRC_MACHINE
_VALID_URLint_TESTSr   rT   r_   r   __static_attributes__rj   ra   r^   r   r      sf   !NqJ?1##%AK
" :1 &"%3O
" >)##%AY
 T
& ?1)##%AY
  L1)/#%#Y
  ?1'%#Y
_]F~ 	J 7JV G
ra   r   c                   N    \ rS rSrSrSrSSSS.SS	.S
SSS.SS	.SSS./rS rSrg)NewgroundsPlaylistIE   zNewgrounds:playlistzUhttps?://(?:www\.)?newgrounds\.com/(?:collection|[^/]+/search/[^/]+)/(?P<id>[^/?#&]+)z*https://www.newgrounds.com/collection/catscatsCats)r   r    -   r)   r+   playlist_mincountz*https://www.newgrounds.com/collection/dogsdogsDogs   z1http://www.newgrounds.com/audio/search/title/catsT)r)   only_matchingc           	         U R                  U5      nU R                  X5      nU R                  US S9nU R                  SUSUS9n/ n[        R
                  " SU5       H]  u  pgn[        U5      R                  S5      n	U	S;  a  M(  UR                  U R                  SU 3[        R                  5       US95        M_     U R                  XRU5      $ )	NrE   z)(?s)<div[^>]+\bclass=["\']column wide(.+)zwide columnzF(<a[^>]+\bhref=["\'][^"\']+((?:portal/view|audio/listen)/(\d+))[^>]+>)class)zitem-portalsubmissionzitem-audiosubmissionhttps://www.newgrounds.com/)ievideo_id)ru   rS   r   rU   refindallr
   r   append
url_resultr   ie_keyplaylist_result)
rZ   r)   playlist_idr   r    entriesrC   pathr   a_classs
             r^   r   "NewgroundsPlaylistIE._real_extract   s    nnS)((:(($(? $$8]G % 5 !#Y"AX )+//8GOONN1$8#**,x   AB" ##G%@@ra   rj   N)	r   r   r   r   IE_NAMEr   r   r   r   rj   ra   r^   r   r      sY    #GiJ;
   <
   CF&Ara   r   c                   Z    \ rS rSrSrSrSSS0SS.S	SS0S
S.SSS0SS./rSrS rS r	Sr
g)NewgroundsUserIEi  zNewgrounds:userzEhttps?://(?P<id>[^\.]+)\.newgrounds\.com/(?:movies|audio)/?(?:[#?]|$)z"https://burn7.newgrounds.com/audior   burn7   r   z#https://burn7.newgrounds.com/moviesr   z*https://brian-beaton.newgrounds.com/movieszbrian-beaton
      c              #     #    US-  nU R                  U SU 3USU 3SSS.S9n[        USS	S	[        145       HA  nU R                  S
USSS9u  pgU R	                  SU 3[
        R                  5       U5      v   MC     g 7f)Nr   z?page=zDownloading page z0application/json, text/javascript, */*; q = 0.01rH   )rJ   rL   )noterO   r|   .zD<a[^>]+\bhref=["\'][^"\']+((?:portal/view|audio/listen)/(\d+))[^>]+>r)   )r   r   )groupr   )rV   r   rX   rU   r   r   r   )rZ   
channel_idr)   page
posts_infopostr   r   s           r^   _fetch_pageNewgroundsUserIE._fetch_page#  s     	((e6$ *$TF+L$46 ) 
 !gsC#-GHD!//We6 0 +ND //$?v"FH[H[H]_ghh	 Is   A>B c                     U R                  U5      n[        [        R                  " U R                  X!5      U R
                  5      nU R                  X25      $ )N)ru   r   	functoolspartialr   
_PAGE_SIZEr   )rZ   r)   r   r   s       r^   r   NewgroundsUserIE._real_extract1  sM    ^^C(
#I$5$5j%/04A ##G88ra   rj   N)r   r   r   r   r   r   r   r   r   r   r   rj   ra   r^   r   r     sn    GYJ3'
 ! 5'
  <.
  F& Ji9ra   r   )r   r   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   utils.traversalr   r   r   r   rj   ra   r^   <module>r      sT     	 ! -    +@
= @
F.A= .Ab,9} ,9ra   