
    yf                     n    d dl Z d dlZd dlZddlmZmZ ddlmZmZm	Z	m
Z
mZmZ ddlmZ  G d de      Zy)	    N   )compat_urlparsecompat_b64decode)ExtractorErrorint_or_nonestr_or_nonetry_getunescapeHTMLupdate_url_query   )InfoExtractorc                   h    e Zd ZdZdZdZdde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y)
HuyaLiveIEz9https?://(?:www\.|m\.)?huya\.com/(?P<id>[^/#?&]+)(?:\D|$)z	huya:livezhuya.comzhttps://www.huya.com/572329572329T)idtitle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                 x   | j                  |      }| j                  ||      }| j                  d|d|d       }t        |d       }|st	        dd      |j                  d	      xs$ |j                  d
      xs | j                  |      }|j                  d      }|j                  d      }|d   d   d   }	|	st	        dd      g }
|	D ]  }|j                  d      }|s|j                  d      }| xr |dv }t        t        j                  t        |d                     }d\  }}|r| j                  |||      \  }}|j                  d      D ]#  }t        j                  d|j                  d            j                         \  }}|j                  d      }|r||d<   n"|j                  dd        |rt!        |      dz  }|r2t#        j$                  dj'                  ||d   |||d   g            |d<   |
j)                  |j                  d       t+        |j                  d!            |t-        | d"| d#|j                  d        |$      d%| j.                  j                  |i              &  |||
|j                  d&      |j                  d'      |j                  d(      d)d*d+d,S )-N)video_idz	stream:\sstream)r   defaultc                     | d   d   d   S )Ndatar   gameLiveInfo )xs    7/usr/lib/python3/dist-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) r4   vMultiStreamInfoz(.+?)(?:(\d+)M)?sDisplayNameiBitRateratio  _uwsTimewsSecretsFlvUrlSuffix
iLineIndex/.)query)ext	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dictr   	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_listrK   stream_info
stream_urlstream_name	re_secretr   fmsssidisplay_namebitraterates                         r&   _real_extractzHuyaLiveIE._real_extract7   s   >>#&((x(@''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/33L^A\4]^_FFBfk;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           	      b   t        |j                  d      d      t        j                         z   }|d   }|j                  t	        |            s|}nt        |dz  dz  dz        }|dz  }|dz  }|dz  }	||d	z	  z  |	d
z  z  }
|j                  t        |
      t        t        |dz        |z         dt        |dz  dz  dz        dd       t        |d         j                         j                  dd      d   }t        j                  dj                  |d   |d   |d   g            }||fS )Nr<      lPresenterUidg    cAg    .Al    l        i    r1   r9   1100)r;   seqidveruuidtrk   r:   r   r   |rx   ctyper{   )r   rQ   random
startswithstrupdater   r   decodesplitr[   r\   r]   )r`   r   rg   ri   ctpresenter_uiduidu1u2u3r;   rk   rl   s                r&   rU   zHuyaLiveIE.encryptr   s6   H-r2V]]_D#O4%%c-&8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2vr(   N)__name__
__module____qualname__
_VALID_URLIE_NAMEIE_DESCr   rZ   TESTSr_   rq   rU   r$   r(   r&   r   r      s    MJGG,
 T
 1E& 

 

 
K9
vr(   r   )r[   r~   rV   compatr   r   utilsr   r   r   r	   r
   r   commonr   r   r$   r(   r&   <module>r      s.      	 6  "s sr(   