
    V|h4                         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   " 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)    N   )InfoExtractor   )fix_xml_ampersandsfloat_or_noneint_or_noneparse_duration
str_to_intunescapeHTMLurl_basename
xpath_textc                   D    \ rS rSr/ SQrSrSrSrSrSr	Sr
SrS rS	 rS
rg)TNAFlixNetworkBaseIE   )z0flashvars\.config\s*=\s*escape\("(?P<url>[^"]+)"z2<input[^>]+name="config\d?" value="(?P<url>[^"]+)"z9config\s*=\s*(["\'])(?P<url>(?:https?:)?//(?:(?!\1).)+)\1z'<input[^>]+name="title" value="([^"]+)"z-<input[^>]+name="description" value="([^"]+)"z*<input[^>]+name="username" value="([^"]+)"Nzv<li[^>]*>\s*<span[^>]+class="infoTitle"[^>]*>Categories:</span>\s*<span[^>]+class="listView"[^>]*>(.+?)</span>\s*</li>c                 l   S nU" USS/5      nUc  g U" USS/5      nUb  UR                   (       d  g U" USS/5      nU" USS	/5      nUb  Uc  g UR                   nUR                   nUR                  5       (       a  UR                  5       (       d  g [        U5      n	[        U5      n
X:  a  g [        [	        US
S5      5      n[        [	        USS5      5      n[        XS-   5       Vs/ s H<  nU R                  UR                   R                  S[        U5      5      S5      UUS.PM>     sn$ s  snf )Nc                 F    U H  nU R                  U5      nUc  M  Us  $    g N)find)elemnamesnamechilds       R/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/tnaflix.py	get_child;TNAFlixNetworkBaseIE._extract_thumbnails.<locals>.get_child!   s$    		$$ L     timelinerolloverBarImageimagePatternpattern
imageFirstfirst	imageLastlastz./imageWidthzthumbnail widthz./imageHeightzthumbnail heightr   #http:)urlwidthheight)	textisdigitintr   r   range_proto_relative_urlreplacestr)selfflix_xmlr   r   
pattern_elfirst_ellast_el
first_text	last_textr"   r$   r(   r)   is                 r   _extract_thumbnails(TNAFlixNetworkBaseIE._extract_thumbnails   sI   	! X
4F'GHx.))DE
Z__Xg'>?H{F&;<w]]
LL	!!##9+<+<+>+>J9~<JxARSTZ/CUVW q)	+ *a ++JOO,C,CCQ,PRYZ
 *	+ 	+ +s   +AD1c                 *
  ^ ^ T R                  U5      nUR                  SS5      u  p4S H2  nXRR                  5       ;   d  M  UR                  U5      nU(       d  M2    O   UnT R                  X5      mT R	                  T5      n0 nT R                  T R                  T R                  TSS SS9S5      n	U	(       d  UR                  S5      n	U	(       dU  UR                  S	5      (       a?  UR                  S
5      (       a)  SU SU SUS	    S3n	UR                  US
   USSSS.5        / 0 pU	(       Ga4  T R                  XS[        SU0US9nS nUR                  S5      nUb$  U
R                  U" U5      [        USSSS9S.5        UR                  S5       H  nUR                  S5      nUc  M  UR                  S5      nUc  S OUR                   n[#        T R%                  SUSS S95      nU
R                  T R                  U" U5      S5      UUS .5        M     T R'                  U5      =(       d    / nUR                  ST R                  [        US!S"5      S5      05        GO%T R)                  S#U S$U 3USU0S%9R                  S&S5      n[*        R,                  " S'U5       H  nUR                  S(5      nT R%                  S)[/        U5      SS S9nU
R                  T R                  US5      [/        U5      R1                  S*5      S+   [#        U5      U(       a  U S,3O[/        U5      R1                  S*5      S-   S..5        M     T R                  T R%                  S/US"S S9S5      nU(       a  SU0/OS nT R3                  TU0 S9nU U4S0 jnUUU" T R4                  S15      =(       d(    T R7                  TS S9=(       d    UR                  S15      U" T R8                  S25      =(       d    UR                  S25      U[;        T R=                  S3TS3S S95      =(       d    UR                  S35      T R?                  T5      =(       d    S4U" T R@                  S55      =(       d    UR                  S55      [C        U" T RD                  S65      5      [C        U" T RF                  S75      5      [I        U" T RJ                  S85      5      [M        [O        [P        RR                  U" T RT                  S95      =(       d    SR1                  S:5      5      5      U
S;.$ )<Nidhost)
display_iddisplay_id_2zflashvars.configr'   )defaultgroupr&   configvkeynkeyzhttp://cdn-fck.z.com//z.fid1 )keyVIDpremiumvipalphazDownloading metadataReferer)transform_sourceheadersqueryc                 ,    [        U R                  5      $ r   )r   r*   )vls    r   extract_video_url=TNAFlixNetworkBaseIE._real_extract.<locals>.extract_video_urlq   s    #BGG,,r   z./videoLinkz./videoConfig/typetypeflvr@   )r'   extz./quality/itemresz
^(\d+)[pP]r)   )r'   	format_idr)   z./startThumb	thumbnailhttp://www.z.com/ajax/video-player/)rO   htmlz<source src="(?P<src>[^"]+)"srcz	-(\d+)p\..pr   )r'   rX   r)   rZ   zdata-poster="([^"]+)"c                 :   > U (       a  TR                  U TUS S9$ S $ )NrW   )_html_search_regex)r    r   r1   webpages     r   extract_field9TNAFlixNetworkBaseIE._real_extract.<locals>.extract_field   s%    T[4**7GT4*Peaeer   titledescriptionduration   uploaderz
view countzcomment countzaverage rating
categories,)r<   r>   rg   rh   
thumbnailsri   	age_limitrk   
view_countcomment_countaverage_ratingrl   formats)+_match_valid_urlrA   	groupdict_download_webpage_hidden_inputsr.   rc   _CONFIG_REGEXgetupdate_download_xmlr   r   appendr   findallr*   r   _search_regexr9   _download_jsonrefinditerr   split_search_json_ld_TITLE_REGEX_og_search_title_DESCRIPTION_REGEXr	   _html_search_meta_rta_search_UPLOADER_REGEXr
   _VIEW_COUNT_REGEX_COMMENT_COUNT_REGEXr   _AVERAGE_RATING_REGEXlistmapr0   strip_CATEGORIES_REGEX)r1   r'   mobjvideo_idr=   display_id_keyr>   inputsrP   cfg_urlrs   json_ldcfg_xmlrS   
video_linkitemrY   rZ   r)   rn   player	video_urlr[   re   rd   s   `                       @r   _real_extract"TNAFlixNetworkBaseIE._real_extractG   s-   $$S)D&1<N!11!ZZ7
:	 = "J((9$$W- **4+B+B);T ,C ,!# jj*G 6::f--&**V2D2D'vU4&&.9INGLLf~  r ((%;!3i=MUZ ) \G- !m4J%,Z8%g/CVUZ[  
  (89!YY}5
%ii&$'KDSXX	$T%7%7!9h &8 &F G334Ej4QSZ[!*$   : 11':@bJt//
7NT_0`bij  ((dV#:8*Ex"C( ) **-#fb/  $CVL JJu-	++L,y:QS[ei+j33IwG'	288=bA)&117F81\)=T=Z=Z[^=_`a=b	   M 001C1C(&+t 2D 2MNUWI1:5),-J**7J*KG	f $#D$5$5w? ...w.E. W-()@)@-PnT[T_T_`mTn$&&&z7JPT&UW rZaZeZefpZq))'28b%d&:&:JGb7;;WaKb$]43I3I<%XY'd6O6OQ`(ab+M$:T:TVf,ghs399}T=S=SUa/b/hfh.o.ops.tuv!
 	
r    )__name__
__module____qualname____firstlineno__rx   r   r   r   r   r   r   r   r9   r   __static_attributes__r   r   r   r   r      sB    M
 >LICO  R&+Po
r   r   c                   T    \ rS rSrSrS/rSSSSSSS	S
SS\S.
SS0S.SSS./rS rSr	g)TNAFlixNetworkEmbedIE   zAhttps?://player\.(?P<host>tnaflix|empflix)\.com/video/(?P<id>\d+)zW<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//player\.(?:tna|emp)flix\.com/video/\d+)\1z%https://player.tnaflix.com/video/65386538mp4Educational xxx video (G Spot)$md5:b4fab8f88a8621c8fabd361a173fe5b8re:https?://.*\.jpg$rj      
bobwhite39)
r<   r>   rX   rg   rh   r[   ro   ri   rk   rl   skip_downloadT)r'   	info_dictparamsz%http://player.empflix.com/video/33051r'   only_matchingc                     U R                  U5      nUR                  SS5      u  p4U R                  SU SU SU 35      $ )Nr<   r=   r\   z.com/category/z/video)rt   rA   
url_result)r1   r'   r   r   r=   s        r   r   #TNAFlixNetworkEmbedIE._real_extract   sH    $$S)D&1TF.
&QYPZ[\\r   r   N)
r   r   r   r   
_VALID_URL_EMBED_REGEXr   _TESTSr   r   r   r   r   r   r      sb    UJnoL 7 5A0$
 T
$ 7#F,]r   r   c                        \ rS rSrSrSrSrSrg)TNAEMPFlixBaseIE   z(?s)>Description:</[^>]+>(.+?)<z5<span>by\s*<a[^>]+\bhref=["\']/profile/[^>]+>([^<]+)<z,(?s)<span[^>]*>Categories:</span>(.+?)</div>r   N)r   r   r   r   r   r   r   r   r   r   r   r   r      s    ;NOGr   r   c                   d    \ 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./rSrg)	TNAFlixIE   zVhttps?://(?:www\.)?(?P<host>tnaflix)\.com/[^/]+/(?P<display_id>[^/]+)/video(?P<id>\d+)z;<title>(.+?) - (?:TNAFlix Porn Videos|TNAFlix\.com)</title>zJhttp://www.tnaflix.com/porn-stars/Carmella-Decesare-striptease/video553878 7e569419fe6d69543d01e6be22f5f7c4553878zCarmella-Decesare-stripteaser   zCarmella Decesare - stripteaser   [   rj   )r<   r>   rX   rg   r[   ri   ro   rl   r'   md5r   zAhttps://www.tnaflix.com/teen-porn/Educational-xxx-video/video6538 add5a9fa7f4da53d3e9d0845ac58f20cr   zEducational-xxx-videor   r   r   r   )
r<   r>   rX   rg   rh   r[   ri   ro   rk   rl   z?https://www.tnaflix.com/amateur-porn/bunzHD-Ms.Donk/video358632Tr   r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s}    jJQL \1850	
	  S115A0$
	" Q=!Fr   r   c                   J    \ 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./rSrg)	EMPFlixIEi  z{https?://(?:www\.)?(?P<host>empflix)\.com/(?:videos/(?P<display_id>.+?)-|[^/]+/(?P<display_id_2>[^/]+)/video)(?P<id>[0-9]+)zBhttp://www.empflix.com/amateur-porn/Amateur-Finger-Fuck/video33051 d761c7b26601bd14476cd9512f2654fc33051zAmateur-Finger-Fuckr   zAmateur Finger FuckzAmateur solo finger fucking.r   S   rj   )	r<   r>   rX   rg   rh   r[   ri   ro   rl   r   zKhttp://www.empflix.com/videos/[AROMA][ARMD-718]-Aoi-Yoshino-Sawa-25826.htmlTr   z<http://www.empflix.com/videos/Amateur-Finger-Fuck-33051.htmlr   N)r   r   r   r   r   r   r   r   r   r   r   r   r     s[     PJ T1/*90

 ] N#Fr   r   c                   ~    \ rS rSrSrSrSrSrSrSSS	S
SSSSSS\	\	\
/ SQS.S.SSSSSSSSSS\	\	\
SS/S.SS./rSrg )!
MovieFapIEi"  z_https?://(?:www\.)?(?P<host>moviefap)\.com/videos/(?P<id>[0-9a-f]+)/(?P<display_id>[^/]+)\.htmlz&<br>Views\s*<strong>([\d,.]+)</strong>z-<span[^>]+id="comCount"[^>]*>([\d,.]+)</span>z1Current Rating\s*<br>\s*<strong>([\d.]+)</strong>z?(?s)<div[^>]+id="vid_info"[^>]*>\s*<div[^>]*>.+?</div>(.*?)<br>zYhttp://www.moviefap.com/videos/be9867c9416c19f54a4a/experienced-milf-amazing-handjob.html 26624b4e2523051b550067d547615906be9867c9416c19f54a4az experienced-milf-amazing-handjobr   z Experienced MILF Amazing Handjobz*Experienced MILF giving an Amazing Handjobr   rj   darvinfred06)AmateurMasturbationMatureFlashing)r<   r>   rX   rg   rh   r[   ro   rk   rp   rq   rr   rl   r   zKhttp://www.moviefap.com/videos/e5da0d3edce5404418f5/jeune-couple-russe.html fa56683e291fc80635907168a743c9ade5da0d3edce5404418f5zjeune-couple-russerV   zJeune Couple Russer   
whiskeyjarTeenzThis video does not exist)r'   r   r   skipr   N)r   r   r   r   r   r   r   r   r   r,   floatr   r   r   r   r   r   r   "  s    sJAKPZ k1(<7G0& #K
	( ]1(.)$0$ #$f-
 ,%%%Fr   r   )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sp    	 !	 	 	f
= f
R]0 ]@H+ H&  &R  4-% -r   