
    Ş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mZm	Z	m
Z
mZmZ  G d de          Z G d d	e          ZdS )
    N   )InfoExtractor   )ExtractorError
clean_htmlget_element_by_class
js_to_jsonstr_or_nonestrip_jsonpc                       e Zd ZdZdZdZdddddd	d
dddddded	ddiddddd
dddddded	dddd
d d!dd"d#d$ed	dd%d&d
d'd(dd)d*d+ed	dd,d-d
d.d/d0g d1d2d3d4	dgZed5             Z	d6 Z
d7 Zd8S )9YoukuIEyoukuu   优酷z(?x)
        (?:
            https?://(
                (?:v|play(?:er)?)\.(?:youku|tudou)\.com/(?:v_show/id_|player\.php/sid/)|
                video\.tudou\.com/v/)|
            youku:)
        (?P<id>[A-Za-z0-9]+)(?:\.html|/v\.swf|)
    z:http://player.youku.com/player.php/sid/XNDgyMDQ2NTQw/v.swfTurlonly_matchingz/http://v.youku.com/v_show/id_XNjA1NzA2Njgw.htmlzVideo protected with passwordXNjA1NzA2Njgwmp4uH   邢義田复旦讲座之想象中的胡人—从“左衽孔子”说起g    `@zre:^https?://.*
FoxJin1006	322014285z&http://i.youku.com/u/UMTI4ODA1NzE0MA==)	idexttitleduration	thumbnailuploaderuploader_iduploader_urltagsvideopassword100600404)r   note	info_dictparamsskipz/http://v.youku.com/v_show/id_XOTUxMzg4NDMy.htmlXOTUxMzg4NDMyuB   我的世界☆明月庄主☆车震猎杀☆杀人艺术Minecraftgq=
ף@u   明月庄主moon38465621z6https://www.youku.com/profile/index/?uid=UMTUzODYyNDg0)r   r#   z4https://v.youku.com/v_show/id_XNTA2NTA0MjA1Mg==.htmlXNTA2NTA0MjA1MguO   Minecraft我的世界：建造超大巨型航空飞机，菜鸟vs高手vs黑客gףp=
@u   波哥游戏解说	156688084z6https://www.youku.com/profile/index/?uid=UNjI2NzUyMzM2z4https://v.youku.com/v_show/id_XNTE1MzczOTg4MA==.htmlXNTE1MzczOTg4MAu   国产超A特工片gQv@u   陈晓娟说历史
1640913339z:https://www.youku.com/profile/index/?uid=UNjU2MzY1MzM1Ng==z8https://play.tudou.com/v_show/id_XNjAxNjI2OTU3Ng==.html?XNjAxNjI2OTU3Ngu3   阿斯塔意识到哈里杀了人，自己被骗了z4https://m.ykimg.com/0541010164F732752794D4D7B70331D188758207z6https://www.youku.com/profile/index/?uid=UMzU1MDMyODI4u   英美剧场g
ףp=:R@)	r   r   r   r   r   r   r   r   r   c            	          d                     t          t          j                              d                    t	          j        t          j        d                              S )Nz{}{}    )k)formatinttimejoinrandomchoicesstringascii_letters     [C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/youku.py	get_ysuidzYoukuIE.get_ysuidi   sM    }}S--rwwN6/155507 07 8 8 	8r;   c                 F    ddddddddddd
}|                     |          S )Nh6h5h4h3h2h1)
3gp3gphdflvflvhdr   mp4hdmp4hd2mp4hd3hd2hd3)get)selffm_dicts      r<   get_format_namezYoukuIE.get_format_namen   s>    
 
 yy}}r;   c                                           |          }                     dd                                                                 ddd                                d|d          \  }}|j        d         dd	         }|d
d|t          j                    dz  d}                     d          }|r||d<   d|i}|                                                                 	                    d|d||          d         }	|	
                    d          }
|
r|

                    d          }|d|v rt          dd          |rd|v rt          dd          d|

                    d          z  }||dt          |          z   z  }t          |          |	d          }|d!         } fd"|	d#         D             }||||
                    d$          |
                    d%          |
                    d&          t          |
                    d'                    |	
                    d(i           
                    d)          |
                    d*          d+	S ),Nz	youku.com__ysuid	xreferrerzhttp://www.youku.comzhttps://log.mmstat.com/eg.jszRetrieving cna infoetagr   0564z192.168.1.1i  )vidccode	client_iputid	client_tsr   passwordRefererz"https://ups.youku.com/ups/get.jsonzDownloading JSON metadata)queryheadersdataerrorr"   u$   因版权原因无法观看此视频z8Youku said: Sorry, this video is available in China onlyT)expectedu   该视频被设为私密z(Youku said: Sorry, this video is privatezYouku server reported error %icodez: videor   c                 :   g | ]}|                     d           dk    |d                             |                     d                    ddt          |                     d                    |                     d          |                     d          d	S )
channel_typetailm3u8_urlstream_typer   m3u8_nativesizewidthheight)r   	format_idr   protocolfilesizern   ro   )rN   rR   r3   ).0streamrO   s     r<   
<listcomp>z)YoukuIE._real_extract.<locals>.<listcomp>   s     P P P &**^*D*D*N*N *%--fjj.G.GHH%FJJv..//ZZ((jj**
 
 +O*N*Nr;   rt   secondslogousernameuseridr   homepager   )	r   r   formatsr   r   r   r   r   r   )	_match_id_set_cookier=   _download_webpage_handlera   r4   	get_paramupdategeo_verification_headers_download_jsonrN   r   r   r
   )rO   r   video_id_urlhcnabasic_data_paramsvideo_passwordra   rb   rc   
error_notemsg
video_datar   r{   s   `               r<   _real_extractzYoukuIE._real_extract}   s   >>#&&i1A1ABBBk3IJJJ//*H6KM M4 l6"1R4( &t+
 
 88 	;,:j) s
 	t4466777""0('#W # 6 6 7=>
 !! 	*6**J%*PT^*^*^$NY]_ _ _ _ * :j H H$>O O O O 769J9JJ)4*Z"8"888C$S))) ']
7#P P P P XP P P "y11#//"z22&z~~h'?'?@@ HHZ4488DDNN6**

 

 
	
r;   N)__name__
__module____qualname__IE_NAMEIE_DESC
_VALID_URLlist_TESTSstaticmethodr=   rR   r   r:   r;   r<   r   r      s       GGJ L  A/!_+$&D

 

 X
 # ( A!Y+*%T

 

  F#f+,&T

 

  F#*+,'X

 

  J#JO%T&

 

 {JFX 8 8 \8  H
 H
 H
 H
 H
r;   r   c                   b    e Zd ZdZdZddddddd	d
dddddd	dddddddddgZd Zd ZdS )YoukuShowIEz9https?://list\.youku\.com/show/id_(?P<id>[0-9a-z]+)\.htmlz
youku:showz8http://list.youku.com/show/id_zc7c670be07ff11e48b3f.htmlzc7c670be07ff11e48b3fu   花千骨 DVD版z$md5:a1ae6f5618571bbeb5c9821f9c81b558)r   r   description2   )r   r#   playlist_countz8http://list.youku.com/show/id_zefbfbd70efbfbd780bef.htmlzefbfbd70efbfbd780befu   超级飞侠3z$md5:275715156abebe5ccc2a1992e9d56b98   z8http://list.youku.com/show/id_za7c275ecd7b411e1a19e.htmlTr   z8http://list.youku.com/show/id_zefbfbd61237fefbfbdef.htmlz8http://list.youku.com/show/id_z20eb4acaf5c211e3b2ad.htmlc                 "    d|d<                         ||||d                               d          }|d d gS t          d|          pt          d|          }|t          d          t	          j        d	|          }| fd
|D             fS )Ncbcallbackc                 :    t          t          |                     S )N)r	   r   )ss    r<   <lambda>z.YoukuShowIE._extract_entries.<locals>.<lambda>   s    z+a..'A'A r;   )r`   r"   transform_sourcehtmlzp-drama-gridzp-drama-half-rowzNo episodes foundz<a[^>]+href="([^"]+)"c                     g | ]C}                                         |d           t                                                    DS )zhttp:)
url_result_proto_relative_urlr   ie_key)rs   	video_urlrO   s     r<   ru   z0YoukuShowIE._extract_entries.<locals>.<listcomp>   sQ     ) ) ) OOD44YHH'..JZJZ[[) ) )r;   )r   rN   r   r   refindall)rO   playlist_data_urlshow_idr"   r`   playlist_data
drama_list
video_urlss   `       r<   _extract_entrieszYoukuShowIE._extract_entries   s     j++we$AA , C CCF3v;; 	  $<*>=II Q-.@-PP 	 !4555Z 8*EE
 ) ) ) )') ) ) ) 	)r;   c           	      .   |                      |          }|                     ||          }g }|                     |                     d|d          |t                    }|                     d|d|d         dd	          \  }}|                     d
|d          }t          j        d|          }	|	                    |           t          |	          D ]N\  }
}||k    r|                     d|d|
dz    |d         |d	          \  }}||	                    |           O|                     d|d          }|r|                    d          d         nd }t          d|          }|rt          d|          nd }|                     ||||          S )Nzvar\s+PageConfig\s*=\s*({.+});zpage config)r   z!http://list.youku.com/show/modulez&Downloading initial playlist data pageshowidshowInfo)r   tab)r"   r`   z<div[^>]+id="(reload_\d+)zfirst page reload idz<li[^>]+data-id="([^"]+)">z"http://list.youku.com/show/episodezDownloading playlist data page r   )r   stager   F)fatal,r   zp-introz
intro-more)r|   _download_webpage_parse_json_search_regexr	   r   _html_search_regexr   r   extend	enumerate_html_search_metasplitr   playlist_result)rO   r   r   webpageentriespage_config
first_pageinitial_entriesfirst_page_reload_id
reload_idsidx	reload_idr   new_entriesdescplaylist_title	detail_liplaylist_descriptions                     r<   r   zYoukuShowIE._real_extract   s   ..%%((g66&&t'9'9-w(G (Gj ' 2 2 '+&;&;/9!(+!  '< ' '#
O  $66(*6L N  N Z <jII
''''
33 	, 	,NC000!224g@sQw@@%h/&  3  NA{ &{+++%%mWE%JJ/3=C++(G<<	(1 <3) %  %  %7; 	 ##Wn.BD D 	Dr;   N)r   r   r   r   r   r   r   r   r:   r;   r<   r   r      s        MJG J)'A
 

   J)$A
 

 	 	 J  J  J 3F>) ) ) 'D 'D 'D 'D 'Dr;   r   )r6   r   r8   r4   commonr   utilsr   r   r   r	   r
   r   r   r   r:   r;   r<   <module>r      s    				   ! ! ! ! ! !               t
 t
 t
 t
 t
m t
 t
 t
nZD ZD ZD ZD ZD- ZD ZD ZD ZD ZDr;   