
    V|h*                     |    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   " S S\5      r " S S	\5      rg)
    N   )InfoExtractor   )ExtractorError
clean_htmlget_element_by_class
js_to_jsonstr_or_nonestrip_jsonpc                       \ 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0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/S0S1/ S2S3S4S5.	S./r\	S6 5       r
S7 rS8 rS9rg:);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            
          SR                  [        [        R                  " 5       5      SR                  [        R
                  " [        R                  SS95      5      $ )Nz{}{}    )k)formatinttimejoinrandomchoicesstringascii_letters     P/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/youku.py	get_ysuidYoukuIE.get_ysuidi   s?    }}S-rwwNN6//1507 8 	8r<   c                 >    SSSSSSSSSSS.
nUR                  U5      $ )Nh6h5h4h3h2h1)
3gp3gphdflvflvhdr   mp4hdmp4hd2mp4hd3hd2hd3)get)selffm_dicts      r=   get_format_nameYoukuIE.get_format_namen   s7    
 yy}r<   c                    U R                  U5      nU R                  SSU R                  5       5        U R                  SSS5        U R                  SUS5      u  p4UR                  S   SS	 nUS
SU[
        R
                  " 5       S-  S.nU R                  S5      nU(       a  XvS'   SU0nUR                  U R                  5       5        U R                  SUSXhS9S   n	U	R                  S5      n
U
(       an  U
R                  S5      nUb  SU;   a
  [        SSS9eU(       a  SU;   a
  [        SSS9eSU
R                  S5      -  nUb  US[        U5      -   -  n[        U5      eU	S    nUS!   nU	S"    Vs/ s Hz  oR                  S#5      S$:w  d  M  US%   U R                  UR                  S&5      5      S'S([        UR                  S)5      5      UR                  S*5      UR                  S+5      S,.PM|     nnUUUUR                  S-5      UR                  S.5      UR                  S/5      [        UR                  S05      5      U	R                  S10 5      R                  S25      UR                  S35      S4.	$ s  snf )5Nz	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   streamchannel_typetailm3u8_urlstream_typer   m3u8_nativesizewidthheight)r   	format_idr   protocolfilesizerq   rr   secondslogousernameuseridr   homepager   )	r   r   formatsr   r   r   r   r   r   )	_match_id_set_cookier>   _download_webpage_handlerd   r5   	get_paramupdategeo_verification_headers_download_jsonrP   r   r   rT   r4   r
   )rQ   r   video_id_urlhcnabasic_data_paramsvideo_passwordrd   re   rf   
error_notemsg
video_datar   rj   r{   s                    r=   _real_extractYoukuIE._real_extract}   s   >>#&i1ABk3IJ//*H6KM ll6"1R( &t+
 8,:j) s
 	t4467""0('# # 6 7=>
 !6*J%*PT^*^$NY]_ _ :j H$>O O 769JJ)4*Z"888C$S)) ']
7# XP 'f**^*D*N
*%--fjj.GH%FJJv./ZZ(jj*
 ' 	 P "y1#/"z2&z~~h'?@ HHZ488DNN6*

 
	
Ps   6I8A%I8r;   N)__name__
__module____qualname____firstlineno__IE_NAMEIE_DESC
_VALID_URLlist_TESTSstaticmethodr>   rT   r   __static_attributes__r;   r<   r=   r   r      s5   GGJ L A/!_+$&D

 X
 #( A!Y+*%T

 F#f+,&T

 F#*+,'X

 J#JO%T&

{JFX 8 8H
r<   r   c                   h    \ 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./rS rS rSr	g)YoukuShowIE   z9https?://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           
      |   SUS'   U R                  XXCS S9R                  S5      nUc  S S /$ [        SU5      =(       d    [        SU5      nUc  [        S5      e[        R
                  " S	U5      nUU Vs/ s H7  nU R                  U R                  US
5      [        R                  5       5      PM9     sn4$ s  snf )Ncbcallbackc                 *    [        [        U 5      5      $ )N)r	   r   )ss    r=   <lambda>.YoukuShowIE._extract_entries.<locals>.<lambda>   s    z+a.'Ar<   )rc   r#   transform_sourcehtmlzp-drama-gridzp-drama-half-rowzNo episodes foundz<a[^>]+href="([^"]+)"zhttp:)
r   rP   r   r   refindall
url_result_proto_relative_urlr   ie_key)	rQ   playlist_data_urlshow_idr#   rc   playlist_data
drama_list
video_urls	video_urls	            r=   _extract_entriesYoukuShowIE._extract_entries   s     j++eA , CCF3v; 	  $<*>=I Q-.@-P 	 !455ZZ 8*E
')'	 OOD44YH'..JZ[') ) 	) )s   7>B9c           	         U R                  U5      nU R                  X5      n/ nU R                  U R                  SUS5      U[        S9nU R                  SUSUS   SS.S	9u  pgU R                  S
US5      n[        R                  " SU5      n	UR                  U5        [        U	5       HB  u  pX:X  a  M  U R                  SUSU
S-    3US   US.S	9u  pUc  M1  UR                  U5        MD     U R                  SUSS9nU(       a  UR                  S5      S   OS n[        SU5      nU(       a  [        SU5      OS nU R                  XBUU5      $ )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#   rc   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)rQ   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   YoukuShowIE._real_extract   s   ..%((6&&t'9'9-w(Gj ' 2 '+&;&;/9!(+! '< '#
  $66(*6L N ZZ <jI
''
3NC0!224g6sQwi@%h/& 3 NA &{+ 4 %%mWE%J/3C+(G<	(1  4) %7; 	 ##n.BD 	Dr<   r;   N)
r   r   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r<   r   )r7   r   r9   r5   commonr   utilsr   r   r   r	   r
   r   r   r   r;   r<   r=   <module>r      s=     	   ! t
m t
nZD- ZDr<   