
    VGhO                         d dl Z d dlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZ  G d de      Z G d d	e      Z G d
 de      Zy)    N   )InfoExtractor   )ExtractorError
clean_htmldetermine_extdict_getextract_attributesfloat_or_noneint_or_noneparse_durationstr_or_nonetry_getunified_strdateurl_or_noneurljoinc                      e Zd ZdZde dZdddddd	d
ddddddddeedddddddddddddededdd id!d"d#dd$d%d&d'd'd(ded)ded*d+dd id!d,d d-d.d d-d/d d-d0d d-d1d d-d2d d-d3d d-d4d d-d5d d-d6d d-d7d d-d8d d-d9d d-d:d d-d;d d-gZd< Zy=)>
XHamsterIEzX(?:xhamster\.(?:com|one|desi)|xhms\.pro|xhamster\d+\.(?:com|desi)|xhday\.com|xhvid\.com)zI(?x)
                    https?://
                        (?:[^/?#]+\.)?z/
                        (?:
                            movies/(?P<id>[\dA-Za-z]+)/(?P<display_id>[^/]*)\.html|
                            videos/(?P<display_id_2>[^/]*)-(?P<id_2>[\dA-Za-z]+)
                        )
                    zIhttps://xhamster.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445 e009ea6b849b129e3bebaeb9cf0dee511509445z%femaleagent-shy-beauty-takes-the-baitmp4z%FemaleAgent Shy beauty takes the baitiVzP20121014Ruseful2011ruseful2011i}     zOhttps://thumb-nss.xhcdn.com/a/u3Vr5F2vvcU3yK59_jJqVA/001/509/445/1280x720.8.jpgz&https://xhamster.com/users/ruseful2011 )id
display_idexttitle	timestampupload_dateuploaderuploader_idduration	age_limit	thumbnailuploader_urldescription
view_countcomment_count)urlmd5	info_dictzAhttps://xhamster.com/videos/britney-spears-sexy-booty-2221348?hd=2221348zbritney-spears-sexy-bootyzBritney Spears  Sexy Bootyi3R20130914
jojo747400   zOhttps://thumb-nss.xhcdn.com/a/kk5nio_iR-h4Z3frfVtoDw/002/221/348/1280x720.4.jpg)r   r   r   r    r!   r"   r#   r%   r&   r)   r*   r'   r+   skip_downloadT)r,   r.   paramsz(http://xhamster.com/movies/5667973/.html5667973z....iV20160208
parejafreeH   z%https://xhamster.com/users/parejafreezOhttps://thumb-nss.xhcdn.com/a/xc8MSwVKcsQeRRiTT-saMQ/005/667/973/1280x720.2.jpg)r   r   r    r!   r"   r#   r$   r%   r&   r+   r(   r)   r*   r'   zLhttps://m.xhamster.com/videos/cute-teen-jacqueline-solo-masturbation-8559111r,   only_matchingzChttps://xhamster.com/movies/2272726/amber_slayed_by_the_knight.htmlz9https://it.xhamster.com/movies/7263980/la_mia_vicina.htmlz9https://pt.xhamster.com/videos/euro-pedal-pumping-7937821zIhttps://xhamster.one/videos/femaleagent-shy-beauty-takes-the-bait-1509445zJhttps://xhamster.desi/videos/femaleagent-shy-beauty-takes-the-bait-1509445zJhttps://xhamster2.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445zKhttps://xhamster11.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445zKhttps://xhamster26.com/videos/femaleagent-shy-beauty-takes-the-bait-1509445zMhttp://xhamster.com/movies/1509445/femaleagent_shy_beauty_takes_the_bait.htmlzDhttp://xhamster.com/movies/2221348/britney_spears_sexy_booty.html?hdzRhttp://de.xhamster.com/videos/skinny-girl-fucks-herself-hard-in-the-forest-xhnBJZxz4https://xhday.com/videos/strapless-threesome-xhh7yVfz&https://xhvid.com/videos/lk-mm-xhc6wn6zPhttps://xhamster20.desi/videos/my-verification-video-scottishmistress23-11937369c                 x     j                  |      }|j                  d      xs |j                  d      }|j                  d      xs |j                  d      }t        j                  dd|      } j	                  ||      \  }} j                  d|dd 	      }|rt        |d
       j                  |      }	 fd}
 j                   j                  d|dd	      |d      }|r|d   }|d   }g }t               }i }t        |d t              xs i }|j                         D ]  \  }}t        |t              st        |d t              xs i }|j                         D ]3  \  }}t        |t              st        |j!                  d            ||<   5 |j                         D ]x  \  }}|dk(  r|}t#        |      }|r||v r |j%                  |       |j'                  | d| |t)        |d       |
|      |j!                  |      d|j*                  id       z  t        |d t              }|r|j!                  d      }t        |t              redD ]`  }|j!                  |      }|st-        ||      }|r||v r*|j%                  |       |j/                   j1                  ||dddd              b |j!                  d!      }t        |t              r(|j                         D ]  \  }}t        |t2              s|D ]  }t        |t              sdD ]  } |j!                  |       }!|!st-        ||!      }!|!r|!|v r*|j%                  |!       t)        |!d      }"|"d"k(  r'|j/                   j1                  |!|dddd              st5        |j!                  d#            xs t5        |j!                  d$            xs d%}|j'                  | d| |!|" |
|      |j!                  |      d|!id          |j!                  d&      }#t        |#t2              rNg }$|#D ]F  }%t        |%t              s|%j!                  d'      }&t        |&t6              s6|$j'                  |&       H nd }$t#        t        |d(             }'i d|d|d|d)|j!                  d)      d*t9        |j!                  d+            d,t        |d- t6              d.|'d/|'r|'j;                  d0      d1   nd d2|j!                  d3      d4t9        |j!                  d4            d5t9        |j!                  d6            d7t9        t        |d8 t<                    d9t9        t        |d: t<                    d;t9        |j!                  d<            d=|	|	nd>d&|$d?|S  j                  g d@|d      }g }t               } j                   j                  dA|dBd	      |d      }|j                         D ]D  \  }}t#        |      }|s||v r|j%                  |       |j'                  || |
|      dC       F  j                  g dD|dEdd F      }(|(r|(|vr|j'                  dG|(i       t        j>                  dH|      }|r|j                  dI      nd })tA         j                  dJ|dKd            }* j                  dL|d,dM	      }+ j                  dNdOg|d2dd2P      },tC         j                  dQdRg|d4d            }-t9         j                  dS|dTd            }.t        j>                  dU|      }|r"|j                  dV      |j                  dW      fndX\  }/}0t        j>                  dY|      }|r|j                  dZ      nd[}1 j                  d\|d&d 	      }2|2r-t        jD                  d]|2      D 3cg c]  }3tG        |3       c}3nd }$i d|d|d|d)|)d^|*d,|+d/|+r|+jI                         nd d2|,d4|-d5|.d7t9        |/      d9t9        |0      d;t9        |1      d=|	d&|$d?|S c c}3w )_Nr   id_2r   display_id_2z^(https?://(?:.+?\.)?)m\.z\1z2<div[^>]+id=["\']videoClosed["\'][^>]*>(.+?)</div>errordefaultT)expectedc                 @    t        j                  d| dd             S )Nz
^(\d+)[pP]heightr?   )r   _search_regex)sselfs    b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/xhamster.py
get_heightz,XHamsterIE._real_extract.<locals>.get_height   s+    t11q(D  2  : ; ;    )z.window\.initials\s*=\s*({.+?})\s*;\s*</script>z"window\.initials\s*=\s*({.+?})\s*;initialsz{}F)fatal
videoModelr    c                     | d   S )Nsources xs    rG   <lambda>z*XHamsterIE._real_extract.<locals>.<lambda>   s
    q| rI   c                     | d   S )NdownloadrO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>   s
    a
m rI   sizerT   -r   Referer)	format_idr,   r   rC   filesizehttp_headersc                     | d   d   S )NxplayerSettingsrN   rO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>   s    A&7$8$C rI   hls)r,   fallbackm3u8_native)entry_protocolm3u8_idrK   standardm3u8qualitylabelr   
categoriesnamec                     | d   d   S )NauthorpageURLrO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>  s    (I@V rI   r)   r!   createdr#   c                     | d   d   S )Nri   rg   rO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>  s    Qx[%8 rI   r(   r$   /r'   thumbURLr%   r*   views
like_countc                     | d   d   S )NratinglikesrO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>  s    Qx[%9 rI   dislike_countc                     | d   d   S )Nrs   dislikesrO   rP   s    rG   rR   z*XHamsterIE._real_extract.<locals>.<lambda>  s    Qx[%< rI   r+   commentsr&   r   formats)z<h1[^>]*>([^<]+)</h1>z6<meta[^>]+itemprop=".*?caption.*?"[^>]+content="(.+?)"zY<title[^>]*>(.+?)(?:,\s*[^,]*?\s*Porn\s*[^,]*?:\s*xHamster[^<]*| - xHamster\.com)</title>zsources\s*:\s*({.+?})\s*,?\s*\nrN   )rX   r,   rC   )z(file\s*:\s*(?P<q>["'])(?P<mp4>.+?)(?P=q)z<<a\s+href=(?P<q>["'])(?P<mp4>.+?)(?P=q)\s+class=["']mp4Thumbz3<video[^>]+file=(?P<q>["'])(?P<mp4>.+?)(?P=q)[^>]*>z	video url)groupr@   r,   z!<span>Description: </span>([^<]+)r   z:hint=["\'](\d{4}-\d{2}-\d{2}) \d{2}:\d{2}:\d{2} [A-Z]{3,4}zupload datez><span[^>]+itemprop=["\']author[^>]+><a[^>]+><span[^>]+>([^<]+)	anonymousz:["']thumbUrl["']\s*:\s*(?P<q>["'])(?P<thumbnail>.+?)(?P=q)z=<video[^>]+"poster"=(?P<q>["'])(?P<thumbnail>.+?)(?P=q)[^>]*>)rK   rz   zA<[^<]+\bitemprop=["\']duration["\'][^<]+\bcontent=["\'](.+?)["\']zRuntime:\s*</span>\s*([\d:]+)z%content=["\']User(?:View|Play)s:(\d+)z
view countzChint=[\'"](?P<likecount>\d+) Likes / (?P<dislikecount>\d+) Dislikes	likecountdislikecount)NNz0</label>Comments \((?P<commentcount>\d+)\)</div>commentcountr   z+(?s)<table.+?(<span>Categories:.+?)</table>z<a[^>]+>(.+?)</a>r"   )%_match_valid_urlrz   resub_download_webpage_handle_html_search_regexr   _rta_search_parse_jsonrD   setr   dictitems
isinstancer   getr   addappendr   r,   r   extend_extract_m3u8_formatslistr   strr   splitintsearchr   r   findallr   lower)4rF   r,   mobjvideo_idr   desktop_urlwebpageurlhr>   r&   rH   rJ   videor    ry   format_urlsformat_sizesrN   rX   formats_dictdownload_sourcesrd   format_dictformat_item
format_urlxplayer_sourceshls_sourceshls_format_keyhls_urlstandard_sourcesformats_liststandard_formatstandard_format_keystandard_urlr   categories_listrf   cc_namer(   	video_urlr)   r"   r#   r'   r%   r*   rq   ru   r+   categories_htmlcategorys4   `                                                   rG   _real_extractzXHamsterIE._real_extract   s	   $$S)::d#9tzz&'9ZZ-KN1K
ff95#F55k8L''AWd ( ,  66$$W-		; ##89@*   E $ # \*E'NEG%KLe%;TBHbG+2==? '	<!,5#*74KT#R#XVX ,<,B,B,D S(G[%k48 ,9+//&:Q,RL)S -9,>,>,@ (G[ J. !!,J!,Z!8J%{)B OOJ/NN(1{!G9%=),Z?",W"5$0$4$4W$=%txx)	$ 	8 &CTKO-11%8k40*= 
9"-//."A&$")#w"7&'[*@$#0t'A'A#Xu]$) (B (8 9
9 $3#6#6z#B .53C3I3I3K  #/	<),=$/; #O#-ot#D (7J # 3/>/B/BCV/W'3$,/6sL/I'3|{7R$, + =&3L%&H#&&=$+NN43M3M(4hVc05U 4N 4D %E %-+67J7J97U+V ,1.9/:M:Mg:V.W,1.0 !( !(4=;ay1I+7+..8.A0<0@0@0I(1<5&	0" 	!#### #D $ii5O/40
( 2A%a. UU6]F!&#."))&12 "
&wu6V'WXLhj  uyy7	
 [9)=> G8#?  l|11#6r:PT UYYz2 K		*(=> k%))G*<= k'93+@ A  W<c.C "D"  UYYz-B!C#$ )*?YR%& j'( 7) 2 ''k W	 e""2GY   E	 # #
 &-]]_ 	!Iz$Z0J[(OOJ'NN&!$Y/ 	 &&I [t	 ' =	
 +5NNy 
 yy=wG'+djjm%d&8&8I]% '9 '1 2 **MZ + 6 &&NQS[[ ' B	
 "$"4"4Q-/07e #5 #% &
 !!3!34\ "4 "0 1
 yy_ahi_ctzz+'>

>@Z&[iu#]yyLgV6:

>2,,:G$ - ( 8G <>:: /<3 4xj* 4LP 	
(
*
 U
 ;	

 ;
 
 x8>>+T
 
 
 *
 +j1
 [7
 [7
 
 *
  w!
 	
4s   `7N)__name__
__module____qualname___DOMAINS
_VALID_URLr   _TESTSr   rO   rI   rG   r   r      s   jH''/j 1J [1A<#%%(jD 
* S51#%$j 
  T
#, :#%$' Cj
" T
'0 ^
 U
 K K
 [ \ \ ] ] _ V d F 8 bWnF`s
rI   r   c            
       T    e Zd Zdej                   dZdgZdddddd	d
ddddZd Zy)XHamsterEmbedIEhttps?://(?:[^/?#]+\.)?z/xembed\.php\?video=(?P<id>\d+)z_<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:www\.)?xhamster\.com/xembed\.php\?video=\d+)\1z,http://xhamster.com/xembed.php?video=33285393328539r   zPen MasturbationieS20140728ManyakisArt   r   )r   r   r    r!   r"   r#   r%   r&   )r,   r.   c                    | j                  |      }| j                  ||      }| j                  d| d| d|dd       }|s/| j                  | j                  d|d      |      }t	        |d      }| j                  |d	      S )
Nz(href="(https?://xhamster\.com/(?:movies/z/[^"]*\.html|videos/[^/]*-z)[^"]*)"zxhamster urlr?   zvars\s*:\s*({.+?})\s*,\s*\nvars)downloadLinkhomepageLinkcommentsLinkshareUrlXHamster)	_match_id_download_webpagerD   r   r	   
url_result)rF   r,   r   r   r   player_varss         rG   r   zXHamsterEmbedIE._real_extract  s    >>#&((h7&&7zA[\d[eemn^T ' 3	 **""#A7FSK !.jkIy*55rI   N)	r   r   r   r   r   r   _EMBED_REGEX_TESTr   rO   rI   rG   r   r     sL    +J,?,?+@@_`JvwL='#%%	
E6rI   r   c                   v    e Zd Zdej                   dZdddiddddd	id
ddddiddddddddgZd Zd Zy)XHamsterUserIEr   z./(?:(?P<user>users)|creators)/(?P<id>[^/?#&]+)z/https://xhamster.com/users/netvideogirls/videosr   netvideogirlsi  )r,   r.   playlist_mincountz+https://xhamster.com/users/firatkaan/videos	firatkaanr   z.https://xhamster.com/creators/squirt-orgasm-69zsquirt-orgasm-69   z!https://xhday.com/users/mobhunterTr9   z!https://xhvid.com/users/pelushe21c              #   d  K   |rdnd\  }}d| d| d| d}t        j                  d      D ]  }| j                  ||d|       }t        j                  d|      D ]|  }t        |      }	t        |	j                  d	            }
|
rt        j                  |
      s@t        j                  |
      }| j                  |
t        j                         |
       ~ t        j                  d|      }|s y t        |j                  d            }t        |j                  d	            }|r y  y w)N)usersvideos)creators	exclusivezhttps://xhamster.com/rm   z/1r   zDownloading page z;(<a[^>]+class=["\'].*?\bvideo-thumb__image-container[^>]+>)href)ier   z <a[^>]+data-page=["\']next[^>]+>r   )	itertoolscountr   r   r   r
   r   r   r   suitabler   r   ie_keyr   rz   )rF   user_idis_userprefixsuffixnext_page_urlpagenumpage	video_tagr   r   r   r   	next_pages                 rG   _entrieszXHamsterUserIE._entries  s5    07,=V/xq	6("M q) 	G))w*;G9(EGDZZR 	J	 +95'		&(9:	 
(;(;I(F%//	:oo*"3"3"5 & J J	J 99@$GD*4::a=9I'	f(=>M '	s   D)D0,D0c                     | j                  |      j                  dd      \  }}| j                  | j                  |t	        |            |      S )Nuserr   )r   rz   playlist_resultr   bool)rF   r,   r   r   s       rG   r   zXHamsterUserIE._real_extract  sE    --c288Fg##DMM'4:$FPPrI   N)	r   r   r   r   r   r   r   r   r   rO   rI   rG   r   r     s    +J,?,?+@@noJ A/
 ! =+
  @$
 ! 3 3/F80QrI   r   )r   r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   rO   rI   rG   <module>r      sL     	 !   "m
 m
` 6m  6F8Q] 8QrI   