
    Ği.                         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 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  G d de          Z G d	 d
e          Z G d de          ZdS )    N   )InfoExtractor)PhantomJSwrapper   )ExtractorErrorUserNotLivedetermine_extint_or_none
js_to_jsonparse_resolutionstr_or_nonetraverse_objunescapeHTMLurl_or_noneurlencode_postdataurljoinc                   (    e Zd Zd Zd Zd ZddZdS )DouyuBaseIEc                     dD ]=}|                      ||dd          }|r | j                            dd|           |c S >t          d          )N)zEhttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/md5.jsz2https://unpkg.com/cryptojslib@3.1.2/rollups/md5.jszDownloading signing dependencyF)notefataldouyucrypto-js-md5z0Unable to download JS dependency (crypto-js/md5))_download_webpagecachestorer   )selfvideo_idurljs_codes       ]C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/douyutv.py_download_cryptojs_md5z"DouyuBaseIE._download_cryptojs_md5   s|    
 		 		C
 ,,X$DE - S SG 
  /7CCC OPPP    c                 f    | j                             ddd          p|                     |          S )Nr   r   z
2024.07.04)min_ver)r   loadr"   )r   r   s     r!   _get_cryptojs_md5zDouyuBaseIE._get_cryptojs_md5&   s?    z_l  < < e?C?Z?Z[c?d?d	er#   c           
         t          j                    j        }t          t	          j                              }|                     |           d| d| d| d| d
}t          |           }|                    ||d                                          }d t          j
                            |                                          D             S )N;z;console.log(ub98484234("z","z"))zExecuting JS signing scriptr   c                 &    i | ]\  }}||d          S )r    ).0ivs      r!   
<dictcomp>z*DouyuBaseIE._calc_sign.<locals>.<dictcomp>1   s"    JJJDAq1Q4JJJr#   )uuiduuid4hexroundtimer'   r   executestripurllibparseparse_qsitems)	r   	sign_funcr   abc	js_scriptphantomresults	            r!   
_calc_signzDouyuBaseIE._calc_sign*   s    JLL$)++--h77pp)pp^_ppdeppjkppp	"4((H&C ! E EEJUWW 	JJFL$9$9&$A$A$G$G$I$IJJJJr#   Tc                 4    |                      d|d|          S )Nz6(?:<script.*)?<script[^>]*>(.*?ub98484234.*?)</script>zJS sign funcr   )_search_regex)r   webpager   s      r!   _search_js_sign_funcz DouyuBaseIE._search_js_sign_func3   s-    !!EwP^fk " m m 	mr#   N)T)__name__
__module____qualname__r"   r'   rC   rH   r,   r#   r!   r   r      sd        Q Q Qe e eK K Km m m m m mr#   r   c                       e Zd ZdZdZddddddedd	d
d	dd	idddddddddd	ddd	iddddddddddd	ddd	iddddddd dd!d
d"dd	idd#d	d$d%d	d$gZd& Zd' Zd( Z	d)S )*	DouyuTVIEu   斗鱼直播zVhttps?://(?:www\.)?douyu(?:tv)?\.com/(topic/\w+\?rid=|(?:[^/]+/))*(?P<id>[A-Za-z0-9]+)zhttps://www.douyu.com/pigff24422pigffmp4u?   re:^【PIGFF】.* [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$u.   ≥15级牌子看鱼吧置顶帖进粉丝vx群Tis_live)	id
display_idexttitledescription	thumbnailuploaderrQ   live_statusskip_download)r   	info_dictparamszhttp://www.douyutv.com/8598285982flvu^   re:^小漠从零单排记！——CSOL2躲猫猫 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$z$md5:746a2f7a253966a06755a912f0acc0d2zre:^https?://.*\.pngu   douyu小漠)rR   rS   rT   rU   rV   rW   rX   rQ   zRoom not found)r   r[   r\   skipzhttp://www.douyutv.com/1773217732uV   re:^清晨醒脑！根本停不下来！ [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$zre:.*m7show@163\.com.*u   7师傅z,https://www.douyu.com/topic/ydxc?rid=65606036560603uV   re:^阿余：新年快乐恭喜发财！ [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$u   re:.*直播时间.*u   阿涛皎月Carry)rR   rS   rT   rU   rV   rW   rX   rY   zhttp://www.douyu.com/xiaocangr   only_matchingzhttp://www.douyu.com/t/lplc                 V    |                      d| |d          d         d|          S )Nz-https://www.douyu.com/swf_api/homeH5Enc?rids=zGetting signing scriptr*   dataroom)_download_json)r   room_idr   s      r!   _get_sign_funczDouyuTVIE._get_sign_func   sI    ""EGEEx) # + ++133C'3C3CE 	Er#   c           
         g }t          |d          D ]}t          t          |d          t          |d                    }|rt          |dt          hf          t          |dfdfd          }t          |          }|                    |t                    |d	k    rd
n||d	k    rdnddz  nd dt          |dt
          hfdt          hfd                     |S )N).re   rtmp_url	rtmp_liverate
multiratesc                     |d         k    S )Nrm   r,   )_r/   rate_ids     r!   <lambda>z3DouyuTVIE._extract_stream_formats.<locals>.<lambda>   s    RSTZR[_fRf r#   F)get_allm3u8rP   m3u8_nativehttpsi)r   	format_idrT   protocolqualitynamebit)formattbr)r   r   r
   r	   appendr   )r   stream_formatsformatsstream_info
stream_url	rate_inforT   rq   s          @r!   _extract_stream_formatsz!DouyuTVIE._extract_stream_formats   s5   'FF 	 	K [*55|KQ\7]7]_ _J &{Vk]4KLL(|EfEfEfEf6gqvwww	#J//%!,W!5!5$'6MM55s14G3:3Fw//D
  
  #9#)K="9 %}5/ /  
  
 
 
 r#   c                 t   |                      |          }|                     ||          }|                     d|d          }|                     d|dd          dk    rt          d|	          |                     d
|dd          dk    rt          |	          ddt	          t          j                              d}t          j        d| dt          j	        
                    |           d                                                                          |d<   t          |                     d| |d|d          d          }t          |d          dk    rt          |	          |                     |d          p|                     ||          }ddi|                     |||          }|                     d| |dt%          |                    g}	t          |	d         d          D ]`}
|
t          |	d         d           k    rD|
|d<   |	                    |                     d| |d!|
 t%          |                               a||                     |	          d"d#t          |d$t*          hd% hfd&t*          ht,          hfd't*          hfd(t*          hfd)t.          hfd*          S )+Nz\$ROOM\.room_id\s*=\s*(\d+)zroom idz"videoLoop"\s*:\s*(\d+)loop )default1z The channel is auto-playing VODs)r   z\$ROOM\.show_status\s*=\s*(\d+)status2wp)aid
client_sysr5   zroom/?zNzMV1y4EMxOHS6I5WKmauthz#http://www.douyutv.com/api/v1/room/zDownloading room infoF)r   queryr   re   show_statusrE   rm   r   z*https://www.douyu.com/lapi/live/getH5Play/zDownloading livestream format)r   re   )re   rn   .rm   )re   rm   zDownloading livestream format T)rR   r   rQ   r   c                     | dd          S )Nr   r,   )r.   s    r!   rr   z)DouyuTVIE._real_extract.<locals>.<lambda>   s    !"" r#   	room_nameshow_detailsnicknameroom_src)rS   rU   rV   rX   rW   )	_match_idr   rF   r   intr5   hashlibmd5r8   r9   	urlencodeencode	hexdigestr   rg   rH   ri   rC   r   r~   r   strr   r   )r   r   r   rG   rh   r\   rf   js_sign_func	form_datar   rq   s              r!   _real_extractzDouyuTVIE._real_extract   sF   >>#&&((h77$$%CWiXX8'6SUVVZ]]]@8TTTT@'8]_``dgggx0000 	$$
 

 !RGRRfl44V<<RRRYY[[] ]]f]f]h]h 	vD//;';;X(e 0 E EFLN N
 m,,33x0000000FFp$J]J]^egoJpJpA
oolHg>>
	 --BBB:#I.. . 0 0 1
 $N1$57Z[[ 	9 	9G,~a'8:JKKKK$+	&!%%d&9&9JJJ#MG#M#M+I66 ': '8 '8 9 9 9 33NCC
 
 4$seoo->?%u|n= .6'#/(;-8" "  	
 	
r#   N)
rI   rJ   rK   IE_DESC
_VALID_URLr   _TESTSri   r   r   r,   r#   r!   rM   rM   9   sv       GjJ,!VL$

 

 T
 " .!uA0%	
 	
 T
 ! " .!m40!	
 	
 T
   >#m00+$	
 	
 T
   / 
 , CEFNE E E
  ,8
 8
 8
 8
 8
r#   rM   c                   l    e Zd ZdZdddddeddd	d
eddgdddddgZddddZddddZddddZ	d Z
dS )DouyuShowIEz;https?://v(?:mobile)?\.douyu\.com/show/(?P<id>[0-9a-zA-Z]+)z)https://v.douyu.com/show/mPyq7oVNe5Yv1gLYmPyq7oVNe5Yv1gLYrP   uW   四川人小时候的味道“蒜苗回锅肉”，传统菜不能丢，要常做来吃iy  u   美食作家王刚VOVAO4NVx1m7Qic20220830u   美食u   美食综合)rR   rT   rU   durationrW   rX   uploader_id	timestampupload_date
view_counttags)r   r[   z/https://vmobile.douyu.com/show/rjNBdvnVXNzvE2ywTrb   u   原画u   超清u   高清)superhighnormal	1920x10801280x720852x480c                    |                     dd          }|                     |          }|                     ||          }|                     d|d|t                    }|                     |          }d|i|                     |||d         d                   }|                     d	|t          |          d
          }g }t          |ddt          j        hdf          D ]\  }	}t          |dt          hf          }
|
rt          |
          }|                    | j                            |	          |	|
| j                            |	          |dk    rdn||dk    rdnddt%          | j                            |	                               |                     d| j                            |	|	           d|                                             ||dt          |dddt,          hfddt,          hfddt.          hfddt0          hfddt          hfddt0          hfdd t0          hfd!dd"t,          hfd#f          S )$Nzvmobile.zv.z<script>\s*window\.\$DATA\s*=z
video info)transform_sourcevidROOMpoint_idz+https://v.douyu.com/api/stream/getStreamUrlzDownloading video formats)re   r   re   thumb_video.r   rt   rP   ru   rv   )r|   rw   r   ry   rT   rx   "z!" format may require logging in. )rR   r   DATAcontentrU   authorup_idvideo_duration	video_piccreate_timeview_numvideoTagtagName)rU   rX   r   r   rW   r   r   r   )replacer   r   _search_jsonr   rH   rC   rg   r   r   dictr;   r   r	   r~   _FORMATSget
_QUALITIESr   _RESOLUTIONS	to_screen_login_hintr   r   r
   )r   r   r   rG   
video_infor   r   url_infor   rz   	video_urlrT   s               r!   r   zDouyuShowIE._real_extract  s   kk*d++>>#&&((h77&&,g(Z ' A A
 00998
oolHj6H6TUU
	 &&98#I..5P ' R R %hVY0Z[[ 	n 	nID#$S5;-*@AAI n#I.."m//55!%$#22488$'6MM55s14G    't'8'<'<T'B'BCC      l))$55llX\XhXhXjXjlln n n n 
 
 :#Wse4&3%8 )7[MB&(8;-H'{mD'F(*{mD#S)cU;	1 	1 	( 	 	
 	
r#   N)rI   rJ   rK   r   r   r   r   r   r   r   r   r,   r#   r!   r   r      s        OJ ;$n-)#%~.
 
   A F*  H  J  L2
 2
 2
 2
 2
r#   r   )r   r5   r8   r1   commonr   openloadr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   rM   r   r,   r#   r!   <module>r      s}       ! ! ! ! ! ! & & & & & &                            m m m m m- m m mB]
 ]
 ]
 ]
 ]
 ]
 ]
 ]
@[
 [
 [
 [
 [
+ [
 [
 [
 [
 [
r#   