Ë
    š„j¡  ã                   óF   — d dl Z ddlmZ ddlmZmZmZmZ  G d„ de«      Zy)é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚlowercase_escapeÚurl_or_noneÚurlencode_postdatac                   óz   — e Zd ZdZdddddddœd	did
dœdddœdddœdddœdddœdddœgZddddddœZd„ Zd„ Zd„ Zy)ÚChaturbateIEzahttps?://(?:[^/]+\.)?chaturbate\.(?P<tld>com|eu|global)/(?:fullvideo/?\?.*?\bb=)?(?P<id>[^/?&#]+)z$https://www.chaturbate.com/siswet19/Úsiswet19Úmp4z:re:^siswet19 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$é   T)ÚidÚextÚtitleÚ	age_limitÚis_liveÚskip_downloadzRoom is offline)ÚurlÚ	info_dictÚparamsÚskipz*https://chaturbate.com/fullvideo/?b=caylin)r   Úonly_matchingz#https://en.chaturbate.com/siswet19/zhttps://chaturbate.eu/siswet19/z)https://chaturbate.eu/fullvideo/?b=caylinz#https://chaturbate.global/siswet19/zRoom is currently offlinez#Room is currently in a private showzPerformer is currently awayzRoom is password protectedzHidden session in progress)ÚofflineÚprivateÚawayzpassword protectedÚhiddenc                 ó²  — | j                  d|› d�|t        d|i«      i | j                  «       ¥dddœ¥dd¬	«      xs i }|j                  d
«      }|sf|j                  d«      }| j                  j                  |«      x}rt        |d¬«      ‚|dk(  r| j                  «        | j                  d|› d�«       y ||d|› d�dd| j                  ||dd¬«      dœS )Núhttps://chaturbate.z/get_edge_hls_url_ajax/Ú	room_slugÚXMLHttpRequestzapplication/json)zX-Requested-WithÚAcceptFT)ÚdataÚheadersÚfatalÚimpersonater   Úroom_status©ÚexpectedÚpubliczGot status "z." from API; falling back to webpage extractionú+https://roomimg.stream.highwebmedia.com/ri/ú.jpgr   r   )r   Úlive)r   r   Ú	thumbnailr   r   Úformats)	Ú_download_jsonr	   Úgeo_verification_headersÚgetÚ
_ERROR_MAPr   Úraise_geo_restrictedÚreport_warningÚ_extract_m3u8_formats)ÚselfÚvideo_idÚtldÚresponseÚm3u8_urlÚstatusÚerrors          úR/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/chaturbate.pyÚ_extract_from_apizChaturbateIE._extract_from_api4   s  € Ø×&Ñ&Ø! # Ð&=Ð>ÀÜ# [°(Ð$;Ó<ðØ×/Ñ/Ó1ðà$4Ø,òð ¨ð 'ó .ò 4ð 24ð 	ð —<‘< Ó&ˆÙØ—\‘\ -Ó0ˆFØŸ™×+Ñ+¨FÓ3Ð3ˆuÐ3Ü$ U°TÔ:Ð:Ø˜Ò!Ø×)Ñ)Ô+Ø×Ñ ,¨v¨hÐ6dÐ eÔfØð ØØFÀxÀjÐPTÐUØØØ×1Ñ1°(¸HÈ%ÐVZÐ1Ó[ñ
ð 	
ó    c                 ó2  ‡— | j                  d|› d|› d�|| j                  «       d¬«      Šg }| j                  | j                  d‰ddd¬	«      |t        d
¬«      }|r-t        |j                  d«      «      }|r|j                  |«       |sDt        j                  d‰«      D ]+  }|j                  t	        |j                  d«      «      «       Œ- |s;t        j                  d‰«      D ]"  }|j                  |j                  d«      «       Œ$ g }|D ]5  }||j                  dd«      }
}	|	|
fD ]  }||vsŒ|j                  |«       Œ Œ7 |sg| j                  ddg‰ddd ¬«      }|s3t        ˆfd„| j                  d   ddfD «       «      r| j                  d   }|rt        |d¬«      ‚t        d«      ‚g }|D ]D  }dD ]  }d|› �|v sŒ|} n d }|j                  | j!                  ||d|dk(  rd nd |d
d¬!«      «       ŒF ||d"|› d#�| j#                  ‰«      d|d$œS )%Nr   ú/T)r$   r&   z9initialRoomDossier\s*=\s*(["\'])(?P<value>(?:(?!\1).)+)\1r#   z{}Úvalue)ÚdefaultÚgroupF)Útransform_sourcer%   Ú
hls_sourcez'(\\u002[27])(?P<url>http.+?\.m3u8.*?)\1r   z"(["\'])(?P<url>http.+?\.m3u8.*?)\1Ú_fastÚ z?<span[^>]+class=(["\'])desc_span\1[^>]*>(?P<error>[^<]+)</span>zA<div[^>]+id=(["\'])defchat\1[^>]*>\s*<p><strong>(?P<error>[^<]+)<r=   )rE   rD   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚpÚwebpages     €r>   ú	<genexpr>z2ChaturbateIE._extract_from_html.<locals>.<genexpr>y   s   øè ø€ ò W¨�q˜G”|ñ Wùs   ƒr   Úoffline_tippingÚtip_offliner(   zUnable to find stream URL)ÚfastÚslowÚ_r   rR   iöÿÿÿ)r   Ú
preferenceÚm3u8_idr%   r-   r+   r,   )r   r   r.   r   r   r/   )Ú_download_webpager1   Ú_parse_jsonÚ_search_regexr   r   r2   ÚappendÚreÚfinditerrE   ÚreplaceÚanyr3   r   Úextendr6   Ú_rta_search)r7   r8   r9   Úfound_m3u8_urlsr#   r;   ÚmÚ	m3u8_urlsÚfound_m3u8_urlÚm3u8_fast_urlÚm3u8_no_fast_urlr=   r/   Úknown_idrV   rN   s                  @r>   Ú_extract_from_htmlzChaturbateIE._extract_from_htmlQ   s±  ø€ Ø×(Ñ(Ø! #  a¨ z°Ð3°XØ×1Ñ1Ó3Àð )ó Gˆð ˆà×ÑØ×ÑØLØ˜¨°Wð ó >ð Ô'7¸uð	  ó Fˆñ
 Ü" 4§8¡8¨LÓ#9Ó:ˆHÙØ×&Ñ& xÔ0áÜ—[‘[Ø>ÀóIò I�à×&Ñ&Ô'7¸¿¹À»Ó'GÕHðIñ Ü—[‘[Ø9¸7óDò 7�à×&Ñ& q§w¡w¨u£~Õ6ð7ð ˆ	Ø-ò 	/ˆNØ.<¸n×>TÑ>TÐU\Ð^`Ó>aÐ+ˆMØ*Ð,<Ð=ò /�Ø 9Ò,Ø×$Ñ$ XÕ.ñ/ð	/ñ Ø×&Ñ&ØSØUðWà˜¨¸ð 'ó ?ˆEñ Üó WØŸ™¨	Ñ2Ð4EÀ}ð.Vô Wô Wà ŸO™O¨IÑ6�EÙÜ$ U°TÔ:Ð:Ü Ð!<Ó=Ð=àˆØ!ò 	:ˆHØ,ò �Ø�x�j�> XÒ-Ø&�GÙðð
 �Ø�N‰N˜4×5Ñ5Ø˜(¨à")¨VÒ"3™3¸Ø u°4ð	 6ó 9õ :ð	:ð ØØFÀxÀjÐPTÐUØ×)Ñ)¨'Ó2ØØñ
ð 	
r@   c                 ó–   — | j                  |«      j                  dd«      \  }}| j                  ||«      xs | j                  ||«      S )Nr   r9   )Ú_match_valid_urlrE   r?   rh   )r7   r   r8   r9   s       r>   Ú_real_extractzChaturbateIE._real_extract—   sJ   € Ø×-Ñ-¨cÓ2×8Ñ8¸¸uÓE‰ˆ�#Ø×%Ñ% h°Ó4Ò^¸×8OÑ8OÐPXÐZ]Ó8^Ð^r@   N)	Ú__name__Ú
__module__Ú__qualname__Ú
_VALID_URLÚ_TESTSr3   r?   rh   rk   rK   r@   r>   r   r      s¦   „ Øu€Jà5àØØQØØñ
ð ˜Tð
ð "ñð <Øñð 5Øñð 1Øñð ;Øñð 5Øñð3€Fð> /Ø8Ø-Ø:Ø.ñ€Jò
ò:D
óL_r@   r   )	r[   Úcommonr   Úutilsr   r   r   r	   r   rK   r@   r>   ú<module>rs      s%   ðÛ 	å !÷ó ôM_�=õ M_r@   