
    V|hy                     p    S SK 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   " S S\5      r " S S	\5      rg)
    N   )InfoExtractor   )	ExtractorErrordetermine_extmerge_dictsparse_durationparse_resolution
str_to_inturl_or_noneurlencode_postdataurljoinc                       \ 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./	rS rSrg)SpankBangIE   a0  (?x)
                    https?://
                        (?:[^/]+\.)?spankbang\.com/
                        (?:
                            (?P<id>[\da-z]+)/(?:video|play|embed)\b|
                            [\da-z]+-(?P<id_2>[\da-z]+)/playlist/[^/?#&]+
                        )
                    z4https://spankbang.com/56b3d/video/the+slut+maker+hmv 2D13903DE4ECC7895B5D55930741650A56b3dmp4zThe Slut Maker HMVz)Girls getting converted into cock slaves.zre:^https?://.*\.jpg$MindselfmindselfiD"c`20210330   )
idexttitledescription	thumbnailuploaderuploader_id	timestampupload_date	age_limit)urlmd5	info_dictz0http://spankbang.com/1vt0/video/solvane+gangbangT)r#   only_matchingzAhttp://spankbang.com/lklg/video/sex+with+anyone+wedding+edition+2z:http://m.spankbang.com/1o2de/video/can+t+remember+her+namez3https://spankbang.com/1vwqx/video/jade+kush+solo+4kz4https://m.spankbang.com/3vvn/play/fantasy+solo/480p/z!https://m.spankbang.com/3vvn/playz"https://spankbang.com/2y3td/embed/z8https://spankbang.com/2v7ik-7ecbgu/playlist/latina+bootyc                   ^ ^^ T R                  U5      nUR                  S5      =(       d    UR                  S5      mT R                  S5      =(       d    SnT R                  SSUR	                  5       5        T R                  UR                  ST S3ST S	35      TS
S9n[        R                  " SU5      (       a  [        ST S3S
S9e/ mUU U4S jnSn[        R                  " U S3U5       H  nU" UR                  SS5      5        M     T(       dv  T R                  SUSSS9nT R                  STS[        USS.5      USS.S9nUR                  5        H.  u  pU
(       a  [        U
[         5      (       a  U
S   n
U" X5        M0     T R#                  UT0 S9nT R%                  S US!S S9nT R                  S"US#S S9nT R'                  US S9nT R%                  S$US%S S9nT R%                  S&US'S S9n[)        T R                  S(US)S S95      n[+        T R                  S*US+S S95      nT R-                  U5      n[/        TU=(       d    TUUUUUUTUS,.
U5      $ )-Nr   id_2geo_bypass_countryUSz.spankbang.comcountry/z/embedz/videoT)impersonatez'<[^>]+\b(?:id|class)=["\']video_removedzVideo z is not available)expectedc                   > [        U5      nU(       d  g [        U 5      n[        U5      nU R                  S5      (       d  US:X  a$  TR	                  TR                  UTSSSSS95        g U R                  S5      (       d  US:X  a"  TR	                  TR                  UTSSS	95        g US:X  d,  UR                  S
5      (       d  UR                  S5      (       a&  UR                  UU S.5        TR                  U5        g g )Nm3u8r   m3u8_nativehlsF)entry_protocolm3u8_idfatalmpddash)mpd_idr5   widthheight)r#   	format_id)
r   r
   r   
startswithextend_extract_m3u8_formats_extract_mpd_formatsgetupdateappend)r;   
format_urlf_urlfr   formatsselfvideo_ids        T/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/spankbang.pyextract_format1SpankBangIE._real_extract.<locals>.extract_formatV   s    
+E +A&C##F++sf}t998U=!  :  0 1 %%e,,ut888F%  9  A Bw155?? !*  q! 4C    stream_url_z4(?P<id>[^\s=]+)\s*=\s*(["\'])(?P<url>(?:(?!\2).)+)\2r#   z5data-streamkey\s*=\s*(["\'])(?P<value>(?:(?!\1).)+)\1z
stream keyvalue)groupz'https://spankbang.com/api/videos/streamzDownloading stream JSONr   )r   dataXMLHttpRequest)RefererzX-Requested-With)rP   headers)defaultz&(?s)<h1[^>]+\btitle=["\']([^"]+)["\']>r   z><div[^>]+\bclass=["\']bottom[^>]+>\s*<p>[^<]*</p>\s*<p>([^<]+)r   z8<svg[^>]+\bclass="(?:[^"]*?user[^"]*?)">.*?</svg>([^<]+)r   z<a[^>]+href="/profile/([^"]+)"r   z6<div[^>]+\bclass=["\']right_side[^>]+>\s*<span>([^<]+)durationz([\d,.]+)\s+playsz
view count)
r   r   r   r   r   r   rU   
view_countrF   r"   )_match_valid_urlrO   	get_param_set_cookieupper_download_webpagereplaceresearchr   finditer_search_regex_download_jsonr   items
isinstancelist_search_json_ld_html_search_regex_og_search_thumbnailr	   r   _rta_searchr   )rG   r#   mobjr+   webpagerJ   STREAM_URL_PREFIX
stream_keystreamr;   rC   infor   r   r   r   r   rU   rV   r"   rF   rH   s   `                   @@rI   _real_extractSpankBangIE._real_extractG   s   $$S)::d#9tzz&'9..!56>$)9gmmoF((KK!H:V,(6.BC$ ) ( 99?II 
"34tE E 	"( *KK%&&Z[]dfD4::dE23f ++HW , 6J ((98)0B$D 1  #(8 ) F *0%	*Z">">!+AJy5 *8
 ##GXr#B''5wQU ( W((M]D ) 2 --gt-D	**GR\fj + l---wt . U!$"4"4EZ #5 #/ 0   2 2 '< !3 !G H
 $$W-	&h&" & $"
 
 	
rL    N)__name__
__module____qualname____firstlineno__
_VALID_URL_TESTSro   __static_attributes__rq   rL   rI   r   r      s    J F1)F1"%#%
" B S L E
 F 3 4 JQ+FZ]
rL   r   c                   0    \ rS rSrSrSSSS.SS.rS	 rS
rg)SpankBangPlaylistIE   zShttps?://(?:[^/]+\.)?spankbang\.com/(?P<id>[\da-z]+)/playlist/(?P<display_id>[^/]+)z3https://spankbang.com/ug0k/playlist/big+ass+tittiesug0kzBig Ass Titties)r   r   (   )r#   r%   playlist_mincountc                    U R                  U5      nUR                  S5      nU R                  XSS0S9n[        R                  " SU5       Vs/ s HM  nU R                  [        XR                  S5      5      [        R                  5       UR                  S5      S9PMO     nnU R                  SUS	S
S9nU R                  XSU5      $ s  snf )Nr   Cookiezcountry=US; mobile=on)rS   zX<a[^>]+\bhref=(["\'])(?P<path>/?[\da-z]+-(?P<id>[\da-z]+)/playlist/[^"\'](?:(?!\1).)*)\1path)ierH   z<em>([^<]+)</em>\s+playlist\s*<zplaylist titleF)r5   )rW   rO   r[   r]   r_   
url_resultr   r   ie_keyrf   playlist_result)rG   r#   ri   playlist_idrj   entriesr   s          rI   ro   !SpankBangPlaylistIE._real_extract   s    $$S)jj&((x1H&I ) K k ??CF+,!!#djj.> # @ 	  ''.9I (  ##G%@@s   ACrq   N)rr   rs   rt   ru   rv   _TESTro   rx   rq   rL   rI   rz   rz      s'    gJD&
  EArL   rz   )r]   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   rz   rq   rL   rI   <module>r      s7    	 !
 
 
S
- S
lA- ArL   