Ë
    š„j¯*  ã                   ó|   — 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y)
é    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y8)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ç‰¹å·¥ç‰‡gìQ¸…¯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j                  t        t        j                  «       «      dj                  t	        j
                  t        j                  d¬«      «      «      S )Nz{}{}Ú é   )Úk)ÚformatÚintÚtimeÚjoinÚrandomÚchoicesÚstringÚascii_letters© ó    úM/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/youku.pyÚ	get_ysuidzYoukuIE.get_ysuidi   s?   € à�}‰}œS¤§¡£Ó-¨r¯w©wÜ�N‰Nœ6×/Ñ/°1Ô5ó07ó 8ð 	8r;   c                 ó>   — dddddddddddœ
}|j                  |«      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   s7   € àØØØØØØØØØñ
ˆð �y‰y˜‹}Ðr;   c                 óÜ  — | j                  |«      }| j                  dd| j                  «       «       | j                  ddd«       | j                  d|d«      \  }}|j                  d   dd	 }|d
d|t        j
                  «       dz  dœ}| j                  d«      }|r||d<   d|i}|j                  | j                  «       «       | j                  d|d||¬«      d   }	|	j                  d«      }
|
ri|
j                  d«      }|�d|v rt        dd¬«      ‚|rd|v rt        dd¬«      ‚d|
j                  d«      z  }|�|dt        |«      z   z  }t        |«      ‚|	d    }|d!   }|	d"   D �cg c]w  }|j                  d#«      d$k7  ra|d%   | j                  |j                  d&«      «      d'd(t        |j                  d)«      «      |j                  d*«      |j                  d+«      d,œ‘Œy }}||||j                  d-«      |j                  d.«      |j                  d/«      t        |j                  d0«      «      |	j                  d1i «      j                  d2«      |j                  d3«      d4œ	S c c}w )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Úfilesizern   ro   Ú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   rR   r3   r
   )rO   r   Úvideo_idÚ_ÚurlhÚcnaÚbasic_data_paramsÚvideo_passwordra   rb   rc   Ú
error_noteÚmsgÚ
video_datar   rg   rx   s                    r<   Ú_real_extractzYoukuIE._real_extract}   s³  € Ø—>‘> #Ó&ˆà×Ñ˜ i°·±Ó1AÔBØ×Ñ˜ kÐ3IÔJà×/Ñ/Ø*¨HÐ6KóM‰ˆˆ4ð �l‰l˜6Ñ" 1 RÐ(ˆð ØØ&ØÜŸ™› tÑ+ñ
Ðð Ÿ™¨Ó8ˆÙØ,:Ð˜jÑ)ð �sð
ˆð 	�‰�t×4Ñ4Ó6Ô7Ø×"Ñ"Ø0°(Ø'Ø#¨Wð #ó 6ð 7=ñ>ˆð
 —‘˜Ó!ˆÙØŸ™ 6Ó*ˆJØÐ%Ð*PÐT^Ñ*^Ü$ØNÐY]ô_ð _áÐ :¸jÑ HÜ$Ø>ÈôOð Oð 7¸¿¹À6Ó9JÑJ�ØÐ)Ø˜4¤*¨ZÓ"8Ñ8Ñ8�CÜ$ SÓ)Ð)ð ˜'‘]ˆ
Ø˜7Ñ#ˆð ˜X™öPð ¨&¯*©*°^Ó*DÈÒ*Nð ˜*Ñ%Ø×-Ñ-¨f¯j©j¸Ó.GÓHØØ%Ü˜FŸJ™J vÓ.Ó/Ø—Z‘Z Ó(Ø—j‘j Ó*ó
ð Pˆð Pð ØØØ"Ÿ™ yÓ1Ø#Ÿ™¨Ó/Ø"Ÿ™ zÓ2Ü& z§~¡~°hÓ'?Ó@Ø ŸH™H Z°Ó4×8Ñ8¸ÓDØ—N‘N 6Ó*ñ

ð 
	
ùòPs   Å,A<I)N)Ú__name__Ú
__module__Ú__qualname__ÚIE_NAMEÚIE_DESCÚ
_VALID_URLÚlistÚ_TESTSÚstaticmethodr=   rR   r‰   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€FðX ñ8ó ð8òóH
r;   r   c                   ó`   — 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y)Ú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   Údescriptioné2   )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           
      óp  — d|d<   | j                  ||||d„ ¬«      j                  d«      }|€d d gS t        d|«      xs t        d|«      }|€t        d«      ‚t	        j
                  d	|«      }||D �cg c]6  }| j                  | j                  |d
«      t        j                  «       «      ‘Œ8 c}fS c c}w )NÚcbÚcallbackc                 ó*   — t        t        | «      «      S )N)r	   r   )Úss    r<   ú<lambda>z.YoukuShowIE._extract_entries.<locals>.<lambda>ï   s   € ¤z´+¸a³.Ó'A€ r;   )r`   r"   Útransform_sourceÚhtmlzp-drama-gridzp-drama-half-rowzNo episodes foundz<a[^>]+href="([^"]+)"zhttp:)
r   rN   r   r   ÚreÚfindallÚ
url_resultÚ_proto_relative_urlr   Úie_key)	rO   Úplaylist_data_urlÚshow_idr"   r`   Úplaylist_dataÚ
drama_listÚ
video_urlsÚ	video_urls	            r<   Ú_extract_entrieszYoukuShowIE._extract_entriesë   sÖ   € Ø ˆˆjÑØ×+Ñ+Ø˜w¨e¸$ÙAð ,ó CçCFÁ3ÀvÃ;ð 	ð Ð Ø˜$�<ÐÜ*¨>¸=ÓIò QÜ-Ð.@À-ÓPð 	àÐÜ Ð!4Ó5Ð5Ü—Z‘ZÐ 8¸*ÓEˆ
Øà'ö)àð �O‰O˜D×4Ñ4°YÀÓHÌ'Ï.É.ÓJZÕ[ò)ð )ð 	)ùò )s   Á4;B3c           	      ó¨  — | j                  |«      }| j                  ||«      }g }| j                  | j                  d|d«      |t        ¬«      }| j                  d|d|d   ddœ¬	«      \  }}| j                  d
|d«      }t        j                  d|«      }	|j                  |«       t        |	«      D ]C  \  }
}||k(  rŒ| j                  d|d|
dz   › �|d   |dœ¬	«      \  }}|€Œ3|j                  |«       ŒE | j                  d|d¬«      }|r|j                  d«      d   nd }t        d|«      }|rt        d|«      nd }| j                  ||||«      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)ry   Ú_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ˆàˆØ×&Ñ& t×'9Ñ'9Ø-¨w¸ó(Gà¤jð 'ó 2ˆð '+×&;Ñ&;Ø/°Ø9à! (Ñ+Ø!ñð '<ó 'Ñ#ˆ
�Oð  $×6Ñ6Ø(¨*Ð6Ló NÐô —Z‘ZÐ <¸jÓIˆ
Ø�‰�Ô'Ü'¨
Ó3ò 	,‰NˆC�ØÐ0Ò0ØØ!×2Ñ2Ø4°gØ6°s¸Q±w°iÐ@à% hÑ/Ø&ñð 3ó ‰NˆAˆ{ð Ñ&Ø—‘˜{Õ+ð	,ð ×%Ñ% m°WÀEÐ%ÓJˆÙ/3˜Ÿ™ C›¨Ò+¸ˆÜ(¨°GÓ<ˆ	á(1ô  4Ø˜)ô %Ø7;ð 	ð ×#Ñ#Ø�W˜nÐ.BóDð 	Dr;   N)rŠ   r‹   rŒ   r�   r�   r‘   r®   r‰   r:   r;   r<   r”   r”   È   s„   „ ØM€JØ€Gð Jà)Ø'ØAñ
ð
 ñð Jà)Ø$ØAñ
ð
 ñ	ð JØñð JØñð JØñð3€Fò>)ó 'Dr;   r”   )r6   r£   r8   r4   Úcommonr   Úutilsr   r   r   r	   r
   r   r   r”   r:   r;   r<   ú<module>rÏ      s=   ðÛ Û 	Û Û å !÷÷ ôt
ˆmô t
ônZD�-õ ZDr;   