
    ĞiC#                         d dl Z d dlZd dlZ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 ddlmZ  G d de          Z G d	 d
e          ZdS )    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                   l    e Zd ZdZdZdZddedededd	did
dddgZddddddddddZ	d Z
d ZdS )
HuyaLiveIEzLhttps?://(?: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                    |                      |          }|                     ||          }|                     d|d|d           }t          |d           }|st	          dd          |                    d	          p)|                    d
          p|                     |          }|                    d          }|                    d          }|d         d         d         }	|	st	          dd          g }
|	D ]}|                    d          }|s|                    d          }| o|dv }t          t          j	        
                    t          |d                                       }d\  }}|r|                     |||          \  }}|                    d          D ]V}t          j        d|                    d                                                    \  }}|                    d          }|r||d<   n*|                    dd            |rt#          |          dz  }|r;t%          j        d                    ||d         |||d         g                    |d<   |
                    |                    d           t-          |                    d!                    |t/          | d"| d#|                    d            |$          d%| j                            |i                      X|||
|                    d&          |                    d'          |                    d(          d)d*d+d,S )-N)video_idz	stream:\sstream)r#   defaultc                 *    | d         d         d         S )Ndatar   gameLiveInfo )xs    ZC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/huya.py<lambda>z*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) r9   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_listrP   stream_info
stream_urlstream_name	re_secretr   fmsssidisplay_namebitraterates                         r+   _real_extractzHuyaLiveIE._real_extract<   s   >>#&&((x(@@''gxRZdh'iiK)O)OPP	 	Q !@4PPPPj))oY]]>-J-JodNfNfgnNoNommL11$==)9::&v.q12FG 	D !3dCCCC+ 	 	K$33J %//-88K'J,<
,JI&,00k.>Y1Z1Z[[\\FFB Hfk;GGB!oo&899  (*')?)?)A )AAG &gvvj)) 3&*F7OOJJw--- 3"7||d2 X)0"fSk;F8DT!UVV*X *XF:&&???;;!,[__\-J-J!K!K+z,l,lK,l,l+//ZiJjJj,l,l28: : :	    &**<<<     . #--55"|44$==8802 
 
 	
r-   c           	         t          |                    d          d          t          j                    z   }|d         }|                    t	          |                    s|}nt          |dz  dz  dz            }|dz  }|dz  }|dz  }	||d	z	  z  |	d
z  z  }
|                    t          |
          t          t          |dz            |z             dt          |dz  dz  dz            dd           t          j        |d                   	                                
                    dd          d         }t          j        d                    |d         |d         |d         g                    }||fS )NrA      lPresenterUidg    cAg    .Al    l        i    r6   r>   1100)r@   seqidveruuidtrr   r?   r   r   |r   ctyper   )r   rV   random
startswithstrupdater
   base64	b64decodedecodesplitrb   rc   rd   )rg   r   rn   rp   ctpresenter_uiduidu1u2u3r@   rr   rs   s                r+   r\   zHuyaLiveIE.encryptw   sv   H--r22V]__D#O4%%c-&8&899 	;CCb3hnz9::C%%:8^rMB!G#Q R$Y!7!7#!=>>S3 ;<<
 
 	 	 	 fTl++2244::3BB1E[6'?F7OVC["QRRSS2vr-   N)__name__
__module____qualname__
_VALID_URLIE_NAMEIE_DESCr   ra   _TESTSrf   rx   r\   r)   r-   r+   r   r      s        `JGG,
 
 T
  1 F( 
 

 
 

 
 
 K9
 9
 9
v    r-   r   c                       e Zd ZdZdZdZdddddgd	d
ddeeedddddddddgdddddeeeddddddddddged edd!d"d#d$ed%dgZd&efd'Z	d(S ))HuyaVideoIEz9https?://(?: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_countrQ   	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   tagsrQ   r   z/https://www.huya.com/video/play/1063345618.html
1063345618u6   峡谷第一中！黑铁上钻石顶级教学对抗elog    @iIh20250611u   北枫CC
2183525275)r   r   r   r   r   r   r   rQ   r   r   r   r   r   r   c                 Z   |                      |          }|                     d|d|i          d         d         }g }t          |ddd f          D ]}|                     |d	         |d
d          }|D ]K} |j        d#i t          |dt
          hfdt          hfdt
          hfdt
          hfdt
          hfd           L|                    |           ||dt          |dt
          hfdt          ht          fdt
          hfdt
          hfd          t          |ddt          hfdt          ht          t          t          fdt          hfddt          ht          t          t          fdt          ht          d           ht          fdt          hfd t          hfd!t
          hfd"f          S )$Nz0https://liveapi.huya.com/moment/getMomentContentvideoIdrG   r'   moment	videoInfodefinitionsc                 ,    t          |d                   S )Nm3u8)r   )r?   vs     r+   r,   z+HuyaVideoIE._real_extract.<locals>.<lambda>   s    [65K5K r-   r   r   F)fatalsizedefNamer!   
definitionr    )filesizerI   r!   qualityr    )r   rP   commentCountcontent
favorCountcTime)r   r   r   r   
videoTitlecategoryvideoDurationr   .)videoBigCover
videoCovernickNamer   videoPlayNum)r   r   r   r   rQ   r   r   r   r)   )rS   _download_jsonr   _extract_m3u8_formatsr   r   r   extendr   filterallr	   r   r   anyr
   )rg   r   r#   r   rP   r   fmtsfmts           r+   rx   zHuyaVideoIE._real_extract   s1   >>#&&$$>Y1 % 3 339;;CE &v(K(K0
   	! 	!J --j.@(EY^-__D  
  \*!'+ 7"+cU!3'+7 ,{m<%}57 7       NN4     
 
 6"0;-!@ )J<@+k];%}5	$ $  
 6K&.)C5&#vF,~.>?seVS&A=}z`dOeOeOeNfhkl'#/ %}5-}=	2 	2 	$ 	 	
 	
r-   N)
r   r   r   r   r   r   ra   r   r   rx   r)   r-   r+   r   r      s       MJGG A)*6'% /#
 
 $ @0)*A &% /#
 
 * AM)* /#%"'
 
 I6Fp(
 (
 (
 (
 (
 (
 (
r-   r   )r   rb   r   r]   urllib.parserY   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r)   r-   r+   <module>r      sD      				     ! ! ! ! ! !                        + * * * * *t t t t t t t tne
 e
 e
 e
 e
- e
 e
 e
 e
 e
r-   