Ë
    š„júi  ã                   óÆ   — d dl Z d dlZd dlZddlm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«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Zy)é    Né   )ÚInfoExtractoré   )Úint_to_int32)ÚExtractorErrorÚ
clean_htmlÚdetermine_extÚdict_getÚextract_attributesÚfloat_or_noneÚint_or_noneÚjoin_nonemptyÚparse_durationÚstr_or_noneÚtry_getÚunified_strdateÚurl_or_nonec                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Ú_ByteGeneratorc                 ó†   — 	 t        | d|› �«      | _        t	        |«      | _        y # t        $ r t        d|› d�«      ‚w xY w)NÚ_algozUnknown algorithm ID "ú")ÚgetattrÚ
_algorithmÚAttributeErrorr   r   Ú_s)ÚselfÚalgo_idÚseeds      úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/xhamster.pyÚ__init__z_ByteGenerator.__init__   sS   € ð	FÜ% d¨e°G°9Ð,=Ó>ˆDŒOô ˜tÓ$ˆ�øô ò 	FÜ Ð#9¸'¸À!Ð!DÓEÐEð	Fús	   ‚' §A c                 ó6   — t        |dz  dz   «      x}| _        |S )Nif i_ón<©r   r   ©r   Úss     r    Ú_algo1z_ByteGenerator._algo1    s#   € ô # 1 w¡;°Ñ#;Ó<Ð<ˆˆDŒGØˆó    c                 ó€   — t        ||dz  z  «      }t        ||dz  dz	  z  «      }t        ||dz  z  «      x}| _        |S )Né   ì   ÿÿ é   é   r#   r$   s     r    Ú_algo2z_ByteGenerator._algo2&   sL   € ô ˜˜a 2™g™Ó'ˆÜ˜˜q :™~°"Ñ4Ñ5Ó6ˆÜ" 1¨¨Q©¡<Ó0Ð0ˆˆDŒGØˆr'   c                 ó   — t        |dz   «      x}| _        t        ||dz  dz	  z  «      }t        |t        d«      z  «      }t        ||dz  dz	  z  «      }t        |t        d«      z  «      }t        ||dz  dz	  z  «      S )Nì   ¹yn< r*   é   l   wJ× r)   l   =.e r#   r$   s     r    Ú_algo3z_ByteGenerator._algo3.   sŠ   € ô # 1 z¡>Ó2Ð2ˆˆDŒGÜ˜˜q :™~°"Ñ4Ñ5Ó6ˆÜ˜œ\¨*Ó5Ñ5Ó6ˆÜ˜˜q :™~°"Ñ4Ñ5Ó6ˆÜ˜œ\¨*Ó5Ñ5Ó6ˆÜ˜A ! j¡.°RÑ!7Ñ8Ó9Ð9r'   c                 óº   — t        |dz   «      x}| _        t        |dz  |dz  dz	  z  «      }t        |dz   «      }t        ||dz  dz	  z  «      }t        |dz  «      S )Niõy+mé   r*   é   r/   é   i-ëÔ'r#   r$   s     r    Ú_algo4z_ByteGenerator._algo49   sh   € ä" 1 z¡>Ó2Ð2ˆˆDŒGÜ˜!˜q™& a¨*¡n¸Ñ%;Ñ<Ó=ˆÜ˜˜Z™Ó(ˆÜ˜˜q :™~°"Ñ4Ñ5Ó6ˆÜ˜A 
™NÓ+Ð+r'   c                 óœ   — t        ||dz  z  «      }t        ||dz  dz	  z  «      }t        ||dz  z  «      }t        |dz   «      x}| _        |S )Nr3   r*   é	   é   l   ¥%KK r#   r$   s     r    Ú_algo5z_ByteGenerator._algo5A   sX   € ä˜˜a 1™f™Ó&ˆÜ˜˜q :™~°!Ñ3Ñ4Ó5ˆÜ˜˜a 1™f™Ó&ˆÜ" 1 z¡>Ó2Ð2ˆˆDŒGØˆr'   c                 ó¶   — t        |t        d«      z  t        d«      z   «      x}| _        t        ||dz  dz	  z  «      }|dz  dz	  dz  }t        |dz  |z	  «      S )Niµw’,l   K¬X r*   é   é   é   r#   )r   r%   Ús2Úshifts       r    Ú_algo6z_ByteGenerator._algo6I   sf   € ä" 1¤|°JÓ'?Ñ#?Ä,ÈzÓBZÑ#ZÓ[Ð[ˆˆDŒGÜ˜!  J¡°2Ñ5Ñ6Ó7ˆØ�Z‘ BÑ&¨Ñ+ˆÜ˜R *™_°Ñ6Ó7Ð7r'   c                 óä   — t        |t        d«      z   «      x}| _        t        ||dz  z  «      }t        |t        d«      z  «      }t        ||dz  dz	  z  «      }t        |t        d«      z  «      S )Nr/   r,   i-5ër*   é   l   ‹&Ù r#   )r   r%   Úes      r    Ú_algo7z_ByteGenerator._algo7P   sp   € ä" 1¤|°JÓ'?Ñ#?Ó@Ð@ˆˆDŒGÜ˜˜a 1™f™Ó&ˆÜ˜œ\¨*Ó5Ñ5Ó6ˆÜ˜˜q :™~°"Ñ4Ñ5Ó6ˆÜ˜A¤¨ZÓ 8Ñ8Ó9Ð9r'   c                 ó>   — | j                  | j                  «      dz  S )Néÿ   )r   r   )r   s    r    Ú__next__z_ByteGenerator.__next__X   s   € Ø�‰˜tŸw™wÓ'¨$Ñ.Ð.r'   N)Ú__name__Ú
__module__Ú__qualname__r!   r&   r-   r1   r6   r:   rA   rE   rH   © r'   r    r   r      s/   „ ò%òòò	:ò,òò8ò:ó/r'   r   c                   ó<  — 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d giid!d"œd#œd$d%dd&d'd(d)d)d*ded+dedd,œd-d.œd/d0d1œd2d0d1œd3d0d1œd4d0d1œd5d0d1œd6d0d1œd7d0d1œd8d0d1œd9d0d1œd:d0d1œd;d0d1œd<d0d1œd=d0d1œd>d0d1œd?d0d1œgZd@ZdA„ ZdB„ Z	dC„ Z
dD„ ZyE)FÚ
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 baiti…VzPÚ20121014ÚRuseful2011Úruseful2011i}  r<   úre:https?://.+\.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éÈ   )rW   rX   rY   rZ   r[   r\   r]   r_   r`   rc   rd   ra   re   ÚgenericÚimpersonateÚchromeÚm3u8)Úextractor_argsÚskip_download©rf   rh   Úparamsz(http://xhamster.com/movies/5667973/.htmlÚ5667973z....i¿¸VÚ20160208Ú
parejafreeéH   z%https://xhamster.com/users/parejafree)rW   rY   rZ   r[   r\   r]   r^   r_   r`   re   rb   rc   rd   ra   zInvalid URL)rf   rh   ÚskipzLhttps://m.xhamster.com/videos/cute-teen-jacqueline-solo-masturbation-8559111T©rf   Ú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-11937369z[0-9a-fA-F]{12,}c                 ó>  ‡— t         j                  |«      }t        j                  |dd dd¬«      }	 t	        |d   |«      Št        ˆfd	„|dd  D «       «      j                  d
«      S # t
        $ r+}| j                  d|› d|j                  › �«       Y d }~y d }~ww xY w)Nr   r,   ÚlittleT)Ú	byteorderÚsignedr   úSkipping format "ú": c              3   ó:   •K  — | ]  }|t        ‰«      z  –— Œ y ­w)N)Únext)Ú.0ÚbyteÚbyte_gens     €r    ú	<genexpr>z2XHamsterIE._decipher_hex_string.<locals>.<genexpr>á   s   øè ø€ ÒI°4˜¤ X£Õ.ÑIùs   ƒzlatin-1)
ÚbytesÚfromhexÚintÚ
from_bytesr   r   Úreport_warningÚmsgÚ	bytearrayÚdecode)r   Ú
hex_stringÚ	format_idÚ	byte_datar   rD   r†   s         @r    Ú_decipher_hex_stringzXHamsterIE._decipher_hex_string×   sš   ø€ Ü—M‘M *Ó-ˆ	Ü�~‰~˜i¨¨!˜n¸Èˆ~ÓNˆð	Ü% i°¡l°DÓ9ˆHô
 ÓI¸9ÀQÀR¸=ÔIÓI×PÑPÐQZÓ[Ð[øô	 ò 	Ø×ÑÐ"3°I°;¸cÀ!Ç%Á%ÀÐ IÔJÜûð	ús   ³A( Á(	BÁ1!BÂBc                 óH  — t        j                  | j                  |«      r| j                  ||«      S t	        |«      sDt        j                  d|«      r| j                  d|› d|› �«       y | j                  d|› d�«       y t        j                  j                  |«      }| j                  d| j                  › d�|j                  dd	d
¬«      \  }}|s| j                  d|› d�«       y | j                  ||«      }|sy |j                  d|› |› �¬«      j                  «       S )Nz[0-9a-fA-F]+zSkipping dummy ciphertext for "r�   r€   z": invalid ciphertextz
^/(?P<hex>z)(?P<rem>[/,].+)$zurl components©NN)ÚhexÚrem)ÚdefaultÚgroupz": unsupported URL formatú/)Úpath)ÚreÚ	fullmatchÚ_VALID_HEX_REr“   r   Úwrite_debugrŒ   ÚurllibÚparseÚurlparseÚ_search_regexr›   Ú_replaceÚgeturl)r   Ú
format_urlr‘   Ú
parsed_urlr�   Úpath_remainderÚ
deciphereds          r    Ú_decipher_format_urlzXHamsterIE._decipher_format_urlã   s2  € ä�<‰<˜×*Ñ*¨JÔ7Ø×,Ñ,¨Z¸ÓCÐCÜ˜ZÔ(Ü�|‰|˜O¨ZÔ8à× Ñ Ð#BÀ9À+ÈSÐQ[ÐP\Ð!]Ô^ð ð ×#Ñ#Ð&7¸	°{ÐBWÐ$XÔYØä—\‘\×*Ñ*¨:Ó6ˆ
à%)×%7Ñ%7Ø˜$×,Ñ,Ð-Ð->Ð?ÀÇÁÐRbØ ¨ð &8ó &8Ñ"ˆ
�Nñ Ø×ÑÐ"3°I°;Ð>WÐ XÔYØà×.Ñ.¨z¸9ÓEˆ
ÙØà×"Ñ"¨!¨J¨<¸Ð7GÐ(HÐ"ÓI×PÑPÓRÐRr'   c           
      ó¨   ‡— |D ]K  }|j                  d«      rŒdD ]2  Št        ˆfd„|d   |j                  dd«      fD «       «      sŒ-‰|d<    ŒK ŒM |S )NÚvcodec)Úav1Úh264c              3   ó.   •K  — | ]  }d ‰› d �|v –— Œ y­w)ú.NrL   )r„   Úf_urlr¬   s     €r    r‡   z,XHamsterIE._fixup_formats.<locals>.<genexpr>  s   øè ø€ Òa°%˜˜6˜( !�}¨Ô-Ñaùs   ƒrf   Úmanifest_urlrV   )ÚgetÚany)r   ÚformatsÚfr¬   s      @r    Ú_fixup_formatszXHamsterIE._fixup_formatsÿ   se   ø€ Øò 	ˆAØ�u‰u�XŒØØ)ò �ÜÓa¸A¸e¹HÀaÇeÁeÈNÐ\^ÓF_Ð;`ÔaÕaØ"(�A�h‘KÙñð	ð ˆr'   c                 óè  ‡ — ‰ j                  |«      }|j                  d«      xs |j                  d«      }|j                  d«      xs |j                  d«      }t        j                  dd|«      }‰ j	                  ||d¬«      \  }}‰ 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        «      rndD ]i  }|j!                  |«      }|sŒ‰ j-                  |d |› �«      }|r||v rŒ3|j%                  |«       |j/                  ‰ j1                  ||dd!dd¬"«      «       Œk |j!                  d#«      }t        |t        «      �rB|j                  «       D �].  \  }}t        |t2        «      sŒ|D �]  } t        | t        «      sŒdD ]ø  }!| j!                  |!«      }"|"sŒt5        | j!                  d$«      «      xs t5        | j!                  d%«      «      xs d&}t7        ||«      }‰ j-                  |"|«      }"|"r|"|v rŒv|j%                  |"«       t)        |"d«      }#|#d'k(  r'|j/                  ‰ j1                  |"|dd!dd¬"«      «       Œ¿|j'                  ||"|# |
|«      |j!                  |«      d|j*                  idd(œ«       Œú �Œ �Œ1 |j!                  d)«      }$t        |$t2        «      rNg }%|$D ]F  }&t        |&t        «      sŒ|&j!                  d*«      }'t        |'t8        «      sŒ6|%j'                  |'«       ŒH nd }%t#        t        |d+„ «      «      }(i d|“d|“d|“d,|j!                  d,«      “d-t;        |j!                  d.«      «      “d/t        |d0„ t8        «      “d1|(“d2|(r|(j=                  d3«      d4   nd “d5|j!                  d6«      “d7t;        |j!                  d7«      «      “d8t;        |j!                  d9«      «      “d:t;        t        |d;„ t>        «      «      “d<t;        t        |d=„ t>        «      «      “d>t;        |j!                  d?«      «      “d@|	�|	ndA“d)|%“dB‰ jA                  |«      “dCdDi¥S ‰ j                  g dE¢|d«      }g }t        «       }‰ j                  ‰ j                  dF|dGd¬«      |d¬«      }|j                  «       D ]D  \  }}t#        |«      }|sŒ||v rŒ|j%                  |«       |j'                  || |
|«      dHœ«       ŒF ‰ j                  g dI¢|dJdd ¬K«      })|)r|)|vr|j'                  dL|)i«       t        jB                  dM|«      }|r|j                  dN«      nd }*tE        ‰ j                  dO|dPd¬«      «      }+‰ j                  dQ|d/dR¬«      },‰ j                  dSdTg|d5dd5¬U«      }-tG        ‰ j                  dVdWg|d7d¬«      «      }.t;        ‰ j                  dX|dYd¬«      «      }/t        jB                  dZ|«      }|r"|j                  d[«      |j                  d\«      fnd]\  }0}1t        jB                  d^|«      }|r|j                  d_«      nd`}2‰ j                  da|d)d ¬«      }3|3r-t        jH                  db|3«      D �4cg c]  }4tK        |4«      ‘Œ c}4nd }%i d|“d|“d|“d,|*“dc|+“d/|,“d2|,r|,jM                  «       nd “d5|-“d7|.“d8|/“d:t;        |0«      “d<t;        |1«      “d>t;        |2«      “d@|	“d)|%“dB|“S c c}4w )dNrW   Úid_2rX   Údisplay_id_2z^(https?://(?:.+?\.)?)m\.z\1T)rn   z2<div[^>]+id=["\']videoClosed["\'][^>]*>(.+?)</div>Úerror©r˜   )Úexpectedc                 ó@   •— t        ‰j                  d| dd ¬«      «      S )Nz
^(\d+)[pP]Úheightr¼   )r   r£   )r%   r   s    €r    Ú
get_heightz,XHamsterIE._real_extract.<locals>.get_height  s+   ø€ Ü˜t×1Ñ1Ø˜q (°Dð  2ó  :ó ;ð ;r'   )z.window\.initials\s*=\s*({.+?})\s*;\s*</script>z"window\.initials\s*=\s*({.+?})\s*;Úinitialsz{}F)ÚfatalÚ
videoModelrZ   c                 ó   — | d   S )NÚsourcesrL   ©Úxs    r    ú<lambda>z*XHamsterIE._real_extract.<locals>.<lambda>)  s
   € ¨q°©|€ r'   c                 ó   — | d   S )NÚdownloadrL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>-  s
   € ¸aÀ
¹m€ r'   ÚsizerÊ   ú-rQ   ÚReferer)r‘   rf   rY   r¿   ÚfilesizeÚhttp_headersc                 ó   — | d   d   S )NÚxplayerSettingsrÅ   rL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>G  s   €  AÐ&7Ñ$8¸Ñ$C€ r'   Úhls)rf   Úfallbackzhls-Úm3u8_native)Úentry_protocolÚm3u8_idrÂ   ÚstandardÚqualityÚlabelrV   rp   )r‘   rf   rY   r¿   rÎ   rÏ   Ú__needs_testingÚ
categoriesÚnamec                 ó   — | d   d   S )NÚauthorÚpageURLrL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>‹  s   € ÀÀ(ÁÈIÑ@V€ r'   rc   r[   Úcreatedr]   c                 ó   — | d   d   S )NrÞ   rÜ   rL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>“  s   €  Q x¡[°Ñ%8€ r'   rb   r^   rš   éÿÿÿÿra   ÚthumbURLr_   rd   ÚviewsÚ
like_countc                 ó   — | d   d   S )NÚratingÚlikesrL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>š  s   €  Q x¡[°Ñ%9€ r'   Údislike_countc                 ó   — | d   d   S )Nrç   ÚdislikesrL   rÆ   s    r    rÈ   z*XHamsterIE._real_extract.<locals>.<lambda>œ  s   €  Q x¡[°Ñ%<€ r'   re   Úcommentsr`   r<   rµ   Ú_format_sort_fields)Úresz
proto:m3u8Útbr)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*\nrÅ   )r‘   rf   r¿   )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)r™   r˜   rf   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)[^>]*>)rÂ   r™   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Údislikecountr•   z0</label>Comments \((?P<commentcount>\d+)\)</div>Úcommentcountr   z+(?s)<table.+?(<span>Categories:.+?)</table>z<a[^>]+>(.+?)</a>r\   )'Ú_match_valid_urlr™   rœ   ÚsubÚ_download_webpage_handleÚ_html_search_regexr   Ú_rta_searchÚ_parse_jsonr£   Úsetr   ÚdictÚitemsÚ
isinstancer   r³   r   ÚaddÚappendr	   rf   rª   ÚextendÚ_extract_m3u8_formatsÚlistr   r   Ústrr   ÚsplitrŠ   r·   Úsearchr   r   Úfindallr   Úlower)5r   rf   ÚmobjÚvideo_idrX   Údesktop_urlÚwebpageÚurlhr»   r`   rÀ   rÁ   ÚvideorZ   rµ   Úformat_urlsÚformat_sizesrÅ   r‘   Úformats_dictÚdownload_sourcesrØ   Úformat_dictÚformat_itemr¦   Úxplayer_sourcesÚhls_sourcesÚhls_format_keyÚhls_urlÚstandard_sourcesÚ
identifierÚformats_listÚstandard_formatÚstandard_format_keyÚstandard_urlrY   Úcategories_listrÛ   ÚcÚc_namerb   Ú	video_urlrc   r\   r]   ra   r_   rd   rå   ré   re   Úcategories_htmlÚcategorys5   `                                                    r    Ú_real_extractzXHamsterIE._real_extract	  s9
  ø€ Ø×$Ñ$ SÓ)ˆØ—:‘:˜dÓ#Ò9 t§z¡z°&Ó'9ˆØ—Z‘Z Ó-ÒK°·±¸NÓ1Kˆ
ä—f‘fÐ9¸5À#ÓFˆØ×5Ñ5°kÀ8ÐY]Ð5Ó^‰ˆ�à×'Ñ'ØAØ�W dð (ó ,ˆñ Ü  °Ô6Ð6à×$Ñ$ WÓ-ˆ	ô	;ð ×#Ñ#Ø×Ñð8Ø9@À*Øð ó ð ˜Eð $ó #ˆò Ø˜\Ñ*ˆEØ˜'‘NˆEØˆGÜ›%ˆKØˆLÜ˜eÑ%;¼TÓBÒHÀbˆGØ+2¯=©=«?ò Ñ'�	˜<Ü! ,´Ô5ØÜ#*¨7Ñ4KÌTÓ#RÒ#XÐVXÐ Ø,<×,BÑ,BÓ,Dò SÑ(�G˜[Ü% k´4Ô8Ø Ü,9¸+¿/¹/È&Ó:QÓ,R�L Ò)ðSð -9×,>Ñ,>Ó,@ò Ñ(�G˜[Ø  JÒ.ð !Ø!,�JÜ!,¨ZÓ!8�JÙ%¨°{Ñ)BØ Ø—O‘O JÔ/Ø—N‘NØ(1 {°!°G°9Ð%=Ø)Ü,¨Z¸Ó?Ù",¨WÓ"5Ø$0×$4Ñ$4°WÓ$=à% t§x¡xð)ñ	$õ 	ñðô8 &ØÑCÄTóKˆOâØ-×1Ñ1°%Ó8�Ü˜k¬4Ô0Ø*=ò 
9˜Ø"-§/¡/°.Ó"A˜Ù&Ø$Ø"&×";Ñ";¸GÀtÈNÐK[ÐE\Ó"]˜Ù&¨'°[Ñ*@Ø$Ø#Ÿ™¨Ô0ØŸ™ t×'AÑ'AØ# X¨uÀ]Ø$)°ð (Bó (8õ 9ð
9ð $3×#6Ñ#6°zÓ#BÐ ÜÐ.´Õ5Ø4D×4JÑ4JÓ4Ló %#Ñ0˜
 LÜ)¨,¼Ô=Ø$Ø/;ó "#˜OÜ#-¨o¼tÔ#DØ (Ø7Jò #Ð 3Ø/>×/BÑ/BÐCVÓ/W Ù'3Ø$,Ü+6°×7JÑ7JÈ9Ó7UÓ+Vò ,1Ü.9¸/×:MÑ:MÈgÓ:VÓ.Wò,1à.0ð !(ô -:¸*ÀgÓ,N 	Ø/3×/HÑ/HÈÐW`Ó/a Ù'3°|À{Ñ7RØ$,Ø +§¡°Ô =Ü&3°LÀ%Ó&H Ø#&¨&¢=Ø$+§N¡N°4×3MÑ3MØ(4°hÀÐVcØ05¸Uð 4Nó 4Dô %Eð %-à '§¡Ø1:Ø+7Ø+.Ù.8¸Ó.AØ0<×0@Ñ0@ÀÓ0Ià(1°4·8±8ð5&ð
 8<ñ0"õ !#ò'#ò"#ð%#ðN $Ÿi™i¨Ó5ˆOÜ˜/¬4Ô0Ø�
Ø(ò 2�AÜ% a¬Ô.Ø ØŸU™U 6›]�FÜ! &¬#Õ.Ø"×)Ñ)¨&Õ1ñ2ð "�
ä&¤w¨uÑ6VÓ'WÓXˆLðØ�hðà˜jðð ˜ðð ˜uŸy™y¨Ó7ð	ð
 œ[¨¯©°9Ó)=Ó>ðð œGØÑ8¼#ó?ðð  ðð ¹l˜|×1Ñ1°#Ó6°rÒ:ÐPTðð ˜UŸY™Y zÓ2ðð œK¨¯	©	°*Ó(=Ó>ðð œk¨%¯)©)°GÓ*<Ó=ðð œk¬'ØÑ9¼3ó+@ó Aðð  ¤¬WØÑ<¼có.Có "Dðð"  ¤¨U¯Y©Y°zÓ-BÓ!Cð#ð$ ¨)Ð*?™YÀRð%ð& ˜jð'ð( ˜4×.Ñ.¨wÓ7ð)ð, &Ð'Cñ-ð ð6 ×'Ñ'òkð �Wó	ˆð ˆÜ“eˆà×"Ñ"Ø×ÑØ2°G¸YØð ó ð ˜Eð	 #ó #ˆð
 &-§]¡]£_ò 	Ñ!ˆI�zÜ$ ZÓ0ˆJÙØØ˜[Ñ(ØØ�O‰O˜JÔ'Ø�N‰NØ&Ø!Ù$ YÓ/ñõ ð	ð ×&Ñ&òIð �[¨°tð	 'ó =ˆ	ñ
 ˜¨+Ñ5Ø�N‰NØ�yðô ô
 �y‰yÐ=¸wÓGˆÙ'+�d—j‘j ”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ˆ
ô �y‰yÐ_ÐahÓiˆÙ_c t§z¡z°+Ó'>ÀÇ
Á
È>Ó@ZÑ&[ÐiuÑ#ˆ�]ä�y‰yÐLÈgÓVˆÙ6:˜Ÿ
™
 >Ô2Àˆà×,Ñ,Ø:¸GØ $ð -ó (ˆñ 8Gô <>¿:¹:Ø  /ó<3ö 4¨x”j Õ*ó 4ØLPð 	ð
Ø�(ð
à˜*ð
ð �Uð
ð ˜;ð	
ð
 ˜;ð
ð ˜ð
ð ©x˜8Ÿ>™>Ô+¸Tð
ð ˜ð
ð ˜ð
ð ˜*ð
ð œ+ jÓ1ð
ð œ[¨Ó7ð
ð œ[¨Ó7ð
ð ˜ð
ð ˜*ð
ð  �wð!
ð 	
ùò4s   ß9a/N)rI   rJ   rK   Ú_DOMAINSÚ
_VALID_URLrŠ   Ú_TESTSrž   r“   rª   r·   r$  rL   r'   r    rN   rN   \   sä  „ Øj€Hð'à'/ jð 1ð€Jð [Ø1àØAØØ<Ø#Ø%Ø%Ø(ØØØ/ØDØØØ ñ
ñð* SàØ5ØØ1Ø#Ø%Ø$ØØØØØ/Ø ñ
ð   )¨=¸8¸*Ð*EÐFØ#ñ
ñ#ð. :àØØØ#Ø%Ø$Ø'ØØØ ØCØØØ/ñ
ð  ñ'ð, ^Øñð
 UØñð
 KØñð KØñð
 [Øñð \Øñð \Øñð ]Øñð ]Øñð _Øñð VØñð dØñð FØñð 8Øñð bØñðUm€Fð^ (€Mò
\òSò8óz
r'   rN   c                   ó–   — e Zd Zdej                  › d�ZdgZddddedd	d
dddddddedœdœgZdddddedddddddddedœd d!id"œg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Ú3328539rQ   zPen MasturbationrV   zpen-masturbationie¼ÖSÚ20140728ÚManyakisArtr,   r<   rU   Úmanyakisartz&https://xhamster.com/users/manyakisart)rW   rY   rZ   re   rc   rX   r[   r\   r]   r_   r`   ra   r^   rb   rd   )rf   rh   z https://xhamster.com/awards/2023Úxh2VnYnz"xHamster Awards 2023 - The Winnersz xhamster-awards-2023-the-winnersi$  z$re:https?://ic-vt-nss\.xhcdn\.com/.+iâÍUeÚ20231116ÚxHamsterÚxhamsterz#https://xhamster.com/users/xhamster)rW   rY   rZ   r`   re   rc   rX   r_   ra   r[   r\   r]   r^   rb   rd   rr   rp   rs   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_webpager£   rù   r
   Ú
url_result)r   rf   r	  r  r!  Úplayer_varss         r    r$  zXHamsterEmbedIE._real_extract4  sŸ   € Ø—>‘> #Ó&ˆà×(Ñ(¨¨hÓ7ˆà×&Ñ&Ø7¸°zÐA[Ð\dÐ[eÐemÐnØ�^¨Tð 'ó 3ˆ	ñ Ø×*Ñ*Ø×"Ñ"Ð#AÀ7ÈFÓSØóˆKô ! Ð.jÓkˆIà�‰˜y¨*Ó5Ð5r'   N)rI   rJ   rK   rN   r%  r&  Ú_EMBED_REGEXrŠ   r'  Ú_WEBPAGE_TESTSr$  rL   r'   r    r)  r)    s³   „ Ø+¨J×,?Ñ,?Ð+@Ð@_Ð`€JØvÐw€Là=àØØ'Ø ØØ,Ø#Ø%Ø%ØØØ/Ø(ØDØñ
ñð €Fð, 2àØØ9ØØ ØØ<ØØ@Ø#Ø%Ø"Ø%ØAØñ
ð" # FÐ+ñ)ð €Nó.6r'   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/videosrW   Únetvideogirlsi  )rf   rh   Ú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/mobhunterTrz   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/rš   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³   rN   Úsuitabler:  r<  Úie_keyr  r™   )r   Úuser_idÚis_userÚprefixÚsuffixÚnext_page_urlÚpagenumÚpageÚ	video_tagr  r!  r	  r  Ú	next_pages                 r    Ú_entrieszXHamsterUserIE._entriesd  s5  è ø€ Ù07Ñ,Ð=V‰ˆ�Ø/°¨x°q¸¸	ÀÀ6À(È"ÐMˆÜ —‘ qÓ)ò 	ˆGØ×)Ñ)Ø˜wÐ*;¸G¸9Ð(EóGˆDäŸZ™ZØRØóò 	J�	ô +¨9Ó5�Ü'¨¯	©	°&Ó(9Ó:�	Ù ¬
×(;Ñ(;¸IÔ(FØÜ%×/Ñ/°	Ó:�Ø—o‘oØ¤*×"3Ñ"3Ó"5Àð &ó Jó Jð	Jô —9‘9Ð@À$ÓGˆDÙÙÜ*¨4¯:©:°a«=Ó9ˆIÜ'¨	¯©°fÓ(=Ó>ˆMÚ Ùñ'	ùs   ‚D)D0Ä,D0c                 ó    — | j                  |«      j                  dd«      \  }}| j                  | j                  |t	        |«      «      |«      S )NÚuserrW   )rô   r™   Úplaylist_resultrZ  Úbool)r   rf   r\  rQ  s       r    r$  zXHamsterUserIE._real_extract|  sE   € Ø×-Ñ-¨cÓ2×8Ñ8¸ÀÓF‰ˆˆgØ×#Ñ# D§M¡M°'¼4À»:Ó$FÈÓPÐPr'   N)	rI   rJ   rK   rN   r%  r&  r'  rZ  r$  rL   r'   r    rA  rA  F  s’   „ Ø+¨J×,?Ñ,?Ð+@Ð@nÐo€Jð Aà�/ð
ð !ñð =à�+ð
ð ñð @àÐ$ð
ð  ñð 3Øñð 3Øñð/€Fò8ó0Qr'   rA  )rM  rœ   Úurllib.parser    Úcommonr   Újsinterpr   Úutilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rN   r)  rA  rL   r'   r    ú<module>rc     s_   ðÛ Û 	Û å !Ý #÷÷ ÷ õ ÷"A/ñ A/ôHg
�ô g
ôT=6�mô =6ô@8Q�]õ 8Qr'   