
    V|hC#                         S SK r S SKrS SKrS SKr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Jr  SSKJr   " S S\5      r " S	 S
\5      rg)    N   )InfoExtractor   )
ExtractorError
clean_htmlint_or_noneparse_durationstr_or_nonetry_getunescapeHTML
update_urlupdate_url_queryurl_or_none)traverse_objc                   r    \ rS rSrSrSrSrSS\S\S\S	.S
S0S.SSS./r	SSS.SSS.SSS.S.r
S rS rSrg)
HuyaLiveIE   zLhttps?://(?:www\.|m\.)?huya\.com/(?!(?:video/play/))(?P<id>[^/#?&]+)(?:\D|$)z	huya:liveu   虎牙直播zhttps://www.huya.com/572329572329flvT)idtitleextdescriptionis_live
view_countskip_download)url	info_dictparamszhttps://www.huya.com/xiaoyugame)r   only_matchingi  i8  )widthheighti   i  i   i  )u   蓝光u   超清u   流畅c                    U R                  U5      nU R                  XS9nU R                  SUSUS S9n[        US 5      nU(       d
  [	        SSS9eUR                  S	5      =(       d)    UR                  S
5      =(       d    U R                  U5      nUR                  S5      nUR                  S5      nUS   S   S   n	U	(       d
  [	        SSS9e/ n
U	 GH  nUR                  S5      nU(       d  M  UR                  S5      nU(       + =(       a    US;   n[        [        R                  R                  [        US   5      5      5      nSu  nnU(       a  U R                  XU5      u  nnUR                  S5       GH2  n[        R                  " SUR                  S5      5      R                  5       u  nnUR                  S5      nU(       a  UUS'   O'UR!                  SS 5        U(       a  [#        U5      S-  nU(       a3  [$        R&                  " SR)                  UUS   UUUS   /5      5      US'   U
R+                  UR                  S 5      [-        UR                  S!5      5      U[/        U S"U S#UR                  S 5       3US$9S%.U R0                  R                  U0 5      E5        GM5     GM     UUU
UR                  S&5      UR                  S'5      UR                  S(5      S)S*S+.S,.$ )-N)video_idz	stream:\sstream)r$   defaultc                     U S   S   S   $ )Ndatar   gameLiveInfo )xs    O/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/huya.py<lambda>*HuyaLiveIE._real_extract.<locals>.<lambda>@   s    1V9Q<3O    zCan not extract the room infoT)expectedroomNameintroduction
screenTypeliveSourceTyper(   r   gameStreamInfoListzVideo is offlinesFlvUrlsStreamName)r         sFlvAntiCode) r;   vMultiStreamInfoz(.+?)(?:(\d+)M)?sDisplayNameiBitRateratio  _uwsTimewsSecretsFlvUrlSuffix
iLineIndex/.query)r   	format_idtbrr   
totalCount
screenshotcontentIntrozhttps://www.huya.comzhttps://www.huya.com/)OriginReferer)r   r   formatsr   	thumbnailr   http_headers)	_match_id_download_webpage_search_jsonr   r   get_html_extract_titledicturllibparse	parse_qslr   encryptre	fullmatchgroupspopinthashlibmd5joinappendr
   r   _RESOLUTION)selfr   r$   webpagestream_data	room_infor   screen_typelive_source_typestream_info_listrR   stream_info
stream_urlstream_name	re_secretr   fmsssidisplay_namebitraterates                         r,   _real_extractHuyaLiveIE._real_extract<   s   >>#&(((@''gxRZdh'iK)OP	 !@4PPj)oY]]>-JodNfNfgnNommL1$==)9:&v.q12FG !3dCC+K$3J%//-8K'J,<
,JI&,,00k.>Y1Z[\FFBf;GB!oo&89(*')?)AAG &gvvj)&*F7OJJw-"7|d2)0"fSk;F8DT!UV*XF:&&???;!,[__\-J!K+zl!K=+//ZiJjIk,l28:	  &&**<<   : ,B #--5"|4$==802
 	
r/   c           	         [        UR                  S5      S5      [        R                  " 5       -   nUS   nUR                  [	        U5      5      (       d  UnO[        US-  S-  S-  5      nUS-  nUS-  nUS-  n	XxS	-	  -  U	S
-  -  n
UR                  [        U
5      [        [        US-  5      U-   5      S[        US-  S-  S-  5      SS.5        [        R                  " US   5      R                  5       R                  SS5      S   n[        R                  " SR                  US   US   US   /5      5      nX4$ )NrC      lPresenterUidg    cAg    .Al    l        i    r8   r@   1100)rB   seqidveruuidtrt   rA   r   r   |r   ctyper   )r   rX   random
startswithstrupdater
   base64	b64decodedecodesplitrd   re   rf   )ri   r   rp   rr   ctpresenter_uiduidu1u2u3rB   rt   ru   s                r,   r^   HuyaLiveIE.encryptw   s;   H-r2V]]_D#O4%%c-&899Cb3hnz9:C%%:8^rMB!G#Q R$Y!7#!=>S3 ;<
 	 fTl+224::3B1E[[6'?F7OVC["QRSvr/   r*   N)__name__
__module____qualname____firstlineno__
_VALID_URLIE_NAMEIE_DESCr   rc   _TESTSrh   rz   r^   __static_attributes__r*   r/   r,   r   r      s    `JGG,
 T
 1F( 

 

 
K9
vr/   r   c                       \ rS 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.S.SSSS S/\S!\SS"S#S$S%\S&.S./rS'\	4S( jr
S)rg*)+HuyaVideoIE   z9https?://(?:www\.)?huya\.com/video/play/(?P<id>\d+)\.htmlz
huya:videou   虎牙视频z/https://www.huya.com/video/play/1002412640.html
1002412640mp4u   8月3日u   主机游戏g      ,@u   虎牙-ATS欧卡车队青木
156437615120240803zre:https?://.+\.jpgif)r   r   r   
categoriesdurationuploaderuploader_idupload_dater   comment_count
like_countrS   	timestamp)r   r   z.https://www.huya.com/video/play/556054543.html	556054543u   我不挑事 也不怕事u   英雄联盟z$md5:58184869687d18ce62dc7b4b2ad21201g      @u   卡尔	36713863220210811zcount:4ina)r   r   r   r   r   r   r   r   r   r   r   r   tagsrS   r   z/https://www.huya.com/video/play/1063345618.html
1063345618u6   峡谷第一中！黑铁上钻石顶级教学对抗elog    @iIh20250611u   北枫CC
2183525275)r   r   r   r   r   r   r   rS   r   r   r   r   r   r   c                    U R                  U5      nU R                  SUSU0S9S   S   n/ n[        USSS 45       Hw  nU R                  US	   US
SS9nU HH  nUR                  " S#0 [        US[
        14S[        14S[
        14S[
        14S[
        14S.5      D6  MJ     UR                  U5        My     UUS.[        US[
        14S[        1[        4S[
        14S[
        14S.5      E[        USS[        14S[        1[        [        [        4S[        14SS[        1[        [        [        4S[        1[        S S91[        4S[        14S [        14S![
        14S".45      E$ )$Nz0https://liveapi.huya.com/moment/getMomentContentvideoIdrI   r(   moment	videoInfodefinitionsc                     [        US   5      $ )Nm3u8)r   )rA   vs     r,   r-   +HuyaVideoIE._real_extract.<locals>.<lambda>   s    [65Kr/   r   r   F)fatalsizedefNamer"   
definitionr!   )filesizerK   r"   qualityr!   )r   rR   commentCountcontent
favorCountcTime)r   r   r   r   
videoTitlecategoryvideoDurationr   .)videoBigCover
videoCovernickNamer   videoPlayNum)r   r   r   r   rS   r   r   r   r*   )rU   _download_jsonr   _extract_m3u8_formatsr   r   r   extendr   filterallr	   r   r   anyr
   )ri   r   r$   r   rR   r   fmtsfmts           r,   rz   HuyaVideoIE._real_extract   s   >>#&$$>Y1 % 339;;CE &v(K0
 J --j.@(EY^-_D

 \*!'+ 7"+cU!3'+7 ,{m<%}57    NN4  
 6"0;-!@ )J<@+k];%}5	$ 
 6K&.)C5&#vF,~.>?seVS&A=}z`dOeNfhkl'#/ %}5-}=	2 	$ 	
 	
r/   r*   N)r   r   r   r   r   r   r   rc   r   r   rz   r   r*   r/   r,   r   r      s    MJGG A)*6'% /#
$ @0)*A &% /#
* AM)* /#%"'
I6Fp(
 (
r/   r   )r   rd   r   r_   urllib.parser[   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r*   r/   r,   <module>r      sH       	  !   +t tne
- e
r/   