
    V|h y                        S SK r 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	  SSK
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S r " S S	5      r " S
 S5      r  " S S\5      r! " S S\5      r" " S S\5      r#g)    N   )InfoExtractor)PhantomJSwrapper   )ExtractorError
clean_htmldecode_packed_codesfloat_or_noneformat_fieldget_element_by_attributeget_element_by_idint_or_none
js_to_jsonohdave_rsa_encryptparse_age_limitparse_durationparse_iso8601parse_resolution	qualitiesremove_startstr_or_nonetraverse_objurljoinc                 f    [         R                  " U R                  5       5      R                  5       $ N)hashlibmd5encode	hexdigest)texts    P/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/iqiyi.pymd5_textr"       s     ;;t{{}%//11    c                       \ rS rSrS r\S 5       r\S 5       rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rSrg)IqiyiSDK$   c                 (    Xl         X l        X0l        g r   )targetip	timestamp)selfr(   r)   r*   s       r!   __init__IqiyiSDK.__init__%   s    "r#   c                 8    [        [        S U  5       5      5      $ )Nc              3   :   #    U  H  n[        US 5      v   M     g7f)   N)int).0ps     r!   	<genexpr>%IqiyiSDK.split_sum.<locals>.<genexpr>,   s     04as1bzz4s   )strsum)datas    r!   	split_sumIqiyiSDK.split_sum*   s    3040011r#   c                     [        U [        5      (       a  [        U 5      n [        [        [	        [        U 5      5      5      $ r   )
isinstancer1   r6   r7   map)nums    r!   	digit_sumIqiyiSDK.digit_sum.   s.    c3c(C3s3}%&&r#   c                     U R                  [        U R                  5      S S S2   5      nU R                  [        U R                  5      SS S2   5      nX4$ )Nr   r   )r?   r6   r*   r+   evenodds      r!   even_oddIqiyiSDK.even_odd4   sL    ~~c$..1#A#67nnS0A67yr#   c           	      r   [        U R                  5      U l        / n[        SU-  5       H(  nUR                  U R                  X-  XS-   -   5        M*     SU-  (       a$  UR                  U R                  SSU-  -
  S  5        U[	        [        [        U R                  R                  S5      5      5      4$ )N    r   .)	r"   r(   rangeappendlistr=   r1   r)   split)r+   	chunksizechunksis       r!   
preprocessIqiyiSDK.preprocess9   s    t{{+rY'AMM$++imIQ4GHI (	>MM$++b2	>&9&:;<tCTWW]]3%78999r#   c                 x   ^ U R                  S5      u  p#US   SR                  U4S jU 5       5      -   U l        g )NrH   r    c              3   @   >#    U  H  n[        UT-  5      v   M     g 7fr   r6   )r2   r3   moduluss     r!   r4   IqiyiSDK.mod.<locals>.<genexpr>D   s     )GBq#a'k*:*:Bs   )rQ   joinr(   )r+   rW   rO   r)   s    `  r!   modIqiyiSDK.modB   s2    __R(
Qi"'')GB)G"GGr#   c                     SSSS.nU R                  U5      u  p4Sn[        [        U5      5       H8  nUS:  a  [        XF   X!   -  5      OSnUS:X  a  XWX6   -   -  nM.  XSU   U-   -  nM:     XPl        g )N   
   d   )         rT   r`   rb   )rQ   rJ   lenr6   r(   )r+   rN   modulus_maprO   r)   retrP   ip_parts           r!   rM   IqiyiSDK.splitF   s    
 __Y/
s6{#A=>Uc"%+"889GA~**ay7** $ r#   c                     [        U R                  5      U l        U R                  U R                  S S 5      U R                  -   U R                  U R                  SS  5      -   U l        g )Nr0   r"   r(   r9   r+   s    r!   handle_input16IqiyiSDK.handle_input16W   sT    t{{+nnT[["%56Dt~~VZVaVabdbeVfGggr#   c                     [        U R                  5      U l        Sn[        S5       H1  nU R                  SU-  SUS-   -   nXR                  U5      U-   -  nM3     Xl        g )NrT   r`   rb   r   )r"   r(   rJ   r9   )r+   re   rP   parts       r!   handle_input8IqiyiSDK.handle_input8[   s^    t{{+qA;;q1uQ!a%[1D>>$'$..C  r#   c                     [        U R                  5      U l        U R                  U R                  5      U R                  -   U l        g r   ri   rj   s    r!   	handleSumIqiyiSDK.handleSumc   s/    t{{+nnT[[1DKK?r#   c                 <  ^ [        U R                  5      U l        [        R                  " U R                  5      n[        UR                  5      SUR                  -  SUR                  -  S.mU =R                  SR                  U4S jU 5       5      -  sl        g )Nz%02d)ymdrT   c              3   .   >#    U  H
  nTU   v   M     g 7fr    )r2   cstringss     r!   r4    IqiyiSDK.date.<locals>.<genexpr>o   s     :6awqz6s   )
r"   r(   time	localtimer*   r6   tm_yeartm_montm_mdayrY   )r+   schemerw   r{   s      @r!   dateIqiyiSDK.dateg   sn    t{{+NN4>>*QYY!(("!))#

 	rww:6:::r#   c                 h    U R                  5       u  pU[        U R                  5      -   U-   U l        g r   rE   r"   r(   rB   s      r!   split_time_even_oddIqiyiSDK.split_time_even_oddq   s)    MMO	HT[[11D8r#   c                 h    U R                  5       u  pU[        U R                  5      -   U-   U l        g r   r   rB   s      r!   split_time_odd_evenIqiyiSDK.split_time_odd_evenu   s)    MMO	Xdkk22S8r#   c                     U R                  S5      u  p[        [        U5      5      US   -   U R                  U R                  5      -   U l        g NrH   r   )rQ   r6   r7   r?   r*   r(   r+   rO   r)   s      r!   split_ip_time_sumIqiyiSDK.split_ip_time_sumy   s<    __R(
#b'lVAY.1OOr#   c                     U R                  S5      u  pU R                  U R                  5      US   -   [        [	        U5      5      -   U l        g r   )rQ   r?   r*   r6   r7   r(   r   s      r!   split_time_ip_sumIqiyiSDK.split_time_ip_sum}   s<    __R(
nnT^^4vay@3s2w<Or#   )r)   r(   r*   N)__name__
__module____qualname____firstlineno__r,   staticmethodr9   r?   rE   rQ   rZ   rM   rk   ro   rr   r   r   r   r   r   __static_attributes__ry   r#   r!   r%   r%   $   sp    #
 2 2 ' '

:H"h@;99PPr#   r%   c                        \ rS rSrS rS rSrg)IqiyiSDKInterpreter   c                     Xl         g r   sdk_code)r+   r   s     r!   r,   IqiyiSDKInterpreter.__init__   s     r#   c                    [        U R                  5      U l        [        R                  " SU R                  5      n[	        XU5      nUR
                  UR                  UR                  UR                  UR                  UR                  UR                  S.nU H  n[        R                  " SU5      (       a  UR                  [        USS  5      5        M>  [        R                  " SU5      (       a  UR                  USS  5        Mp  [        R                  " SU5      (       a  UR!                  [        USS  5      5        M  Xv;   a  Xg   " 5         M  [#        S	U 35      e   UR$                  $ )
Nzinput=([a-zA-Z0-9]+)\(input)rr   handleInput8handleInput16splitTimeEvenOddsplitTimeOddEvensplitIpTimeSumsplitTimeIpSumzmod\d+   zdate[ymd]{3}r`   zsplit\d+ra   zUnknown function )r	   r   refindallr%   rr   ro   rk   r   r   r   r   matchrZ   r1   r   rM   r   r(   )r+   r(   r)   r*   	functionssdkother_functionsfunctions           r!   runIqiyiSDKInterpreter.run   s&   +DMM:JJ=t}}M	v9- -- // # 7 7 # 7 7!33!33
 "Hxx	8,,HQRL)*/844!"&+x00		#hqrl+,,)+$'8
%CDD " zzr#   r   N)r   r   r   r   r,   r   r   ry   r#   r!   r   r      s    !r#   r   c            
           \ rS 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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./rS#S$S%S&S'S'S(S)S*.r	\
S+ 5       rS, rS- rS. rS/ rS0rg1)2IqiyiIE   iqiyiu	   爱奇艺z9https?://(?:(?:[^.]+\.)?iqiyi\.com|www\.pps\.tv)/.+\.htmlz&http://www.iqiyi.com/v_19rrojlavg.html 9c1fb1b99d192b21c559e5a1a2cb3c73mp4u.   美国德州空中惊现奇异云团 酷似UFO)idexttitle)url	info_dictz&http://www.iqiyi.com/v_19rrhnnclk.html b7dc800a4004b1b57749d9abae0472da e3f585b550a280af23c98b6cb2be19fbu   re:^(?:名侦探柯南 国语版：第752集 迫近灰原秘密的黑影 下篇|名偵探柯南 國語版：第752集 迫近灰原秘密的黑影 下篇)$zGeo-restricted to China)r   r   r   skipz&http://www.iqiyi.com/w_19rt6o8t9p.htmlTr   only_matchingz&http://www.iqiyi.com/a_19rrhbc6kt.htmlzhttp://yule.iqiyi.com/pcb.html 4a0af228fddb55ec96398a364248ed7fu2   第2017-04-21期 女艺人频遭极端粉丝骚扰z&http://www.iqiyi.com/v_19rrny4w8w.html f3cf468b39dddb30d676f89a91200dc1u   泰坦尼克号)r   r   r   z&http://www.iqiyi.com/a_19rrhb8ce1.html	202918101u   灌篮高手 国语版)r   r   e   )r   r   playlist_countz#http://www.pps.tv/w_19rrbav0ph.htmlr   r   r   r`   ra         )961221417518c                 "    SnSn[        XU5      $ )Nl#   o<%
Q7&ib)P.U[())v[_Na_[3<0#7L'0<:T*F76W i  )r   )r8   Nes      r!   _rsa_funIqiyiIE._rsa_fun   s     O!$1--r#   c                 <   U R                  SS SSS9nUS   n[        [        R                  " 5       5      nSU SU R                  UR	                  5       5       S3n[        U5      nUR                  XcS	   U5      nUS
US   SUUS.n	U R                  S[        R                  R                  U	5      -   S SSS9n
SSS.nU
S   nUS:w  aS  UR                  U5      nU(       d&  SU 3nU
R                  S5      (       a  USU
S   -   -  nU R                  SU-   5        gg)Nz http://kylin.iqiyi.com/get_tokenzGet token for loggingzUnable to get token for loggingnoteerrnoter   z</apis/reglogin/login.action?lang=zh_TW&area_code=null&email=z&passwd=z@&agenttype=1&from=undefined&keeplogin=0&piccode=&fromurl=&_pos=1r)    BEA3AA1908656AABCCFF76582C4C6660token f8d91d57af224da7893dd397d52d811a)r(   serverr   bird_srcsignbird_tz http://kylin.iqiyi.com/validate?zValidate credentialszUnable to validate credentialsz=please login via the web interface and enter the CAPTCHA codezbad username or password)P00107P00117codeA00000zerror msgz: zunable to log in: FT)_download_jsonr1   r}   r   r   r   r   urllibparse	urlencodegetreport_warning)r+   usernamepasswordr8   r   r*   r(   interpr   validation_paramsvalidation_resultMSG_MAPr   r   s                 r!   _perform_loginIqiyiIE._perform_login   se   "".(2S # U 5k		$	J8*t}}X__%6788xz 	 %S)zz&t*i8 8']:
 !//.1G1GHY1ZZ\`'1Q 0 S
 V0

 !(8++d#Ctfo$((//4"3E":::C 4s :;r#   c                     [        [        R                  " 5       S-  5      nSn[        [        U5      U-   U-   5      nUUSUUS.nU R	                  SU SU S3US X`R                  5       S9$ )	N   d5fb4bd9d50c4be6948c97edd7254b0e 76f90cbd92f94a2e925d83e8ccd22cb7)tvidvidsrcsctz!http://cache.m.iqiyi.com/jp/tmts//c                     [        U S5      $ )Nvar tvInfoJs=)r   )ss    r!   <lambda>&IqiyiIE.get_raw_data.<locals>.<lambda>/  s    a1Qr#   )transform_sourcequeryheaders)r1   r}   r"   r6   r   geo_verification_headers)r+   r   video_idtmkeyr   paramss          r!   get_raw_dataIqiyiIE.get_raw_data   s    t#$0c"gmd*+5
 ""/vQxjB'Q"?"?"A # C 	Cr#   c           
      0   Sn[         R                  " SU5      nU(       d  g U R                  SUS5      nU R                  SUSSS9n[        [	        U R
                  U5      5      n[        R                  " S	5       H  nU R                  S
U SU SU S3USU 3SU 3S9nU R                  [        US5      U5      n	U	S   S   n
U
 H&  nUR                  U R                  US   5      5        M(     [        U
5      U:  d  M    O   U R                  XdU5      $ )N2   zQ<a[^>]+class="site-piclist_pic_link"[^>]+href="(http://www\.iqiyi\.com/.+\.html)"zalbumId\s*:\s*(\d+),zalbum IDzdata-share-title="([^"]+)"zalbum titleFfatalr   z&http://cache.video.qiyi.com/jp/avlist/r   zDownload playlist page z!Failed to download playlist page r   r   r8   vlistvurl)r   r   _search_regexrL   r=   
url_result	itertoolscount_download_webpage_parse_jsonr   rK   rc   playlist_result)r+   webpage	PAGE_SIZElinksalbum_idalbum_titleentriespage_numpagelist_pagepagelistr  items               r!   _extract_playlistIqiyiIE._extract_playlist2  s@   	

` %%#Wj:(()7M ) P s4??E23 "*H 228
!H:QykYZ[.xj9;H:F	 3 HM
 '']O<hHHV$W-EttF|<= 5zI% + ##G{CCr#   c                    U R                  USSS9nU R                  SUSS S9nUc%  U R                  U5      nU(       a  U$ [        S5      eU R                  SUS	5      n/ n[	        S
5       H  nU R                  X55      nUS   S:w  a*  US   S:X  a  U R                  5         [        SUS   -   5      eUS   n	U	S    HM  n
SU
;  a  M  [        U
S   5      nUR                  U
S   USU R                  R                  US5      SS.5        MO     U(       a    OU R                  S
U5        M     [        SU5      =(       d0    [        [        SSU5      5      =(       d    U R                  SUS5      nUUUS.$ )Ntemp_idzdownload video page)r   z6data-(?:player|shareplattrigger)-tvid\s*=\s*[\'"](\d+)r   defaultzCan't find any videoz>data-(?:player|shareplattrigger)-videoid\s*=\s*[\'"]([a-f\d]+)r  ra   r   r   A00111z!Unable to load data. Error code: r8   vidlm3utxvdr   m3u8_native)r   	format_idr   qualityprotocolzwidget-videotitleclasszmod-play-titz<<span[^>]+data-videochanged-title="word"[^>]*>([^<]+)</span>r   )r   r   formats)r  r  r$  r   rJ   r  raise_geo_restrictedr6   rK   _FORMATS_MAPr   _sleepr   r   r   _html_search_regex)r+   r   r  r   r  r  r4  _raw_datar8   streamr-  r   s                r!   _real_extractIqiyiIE._real_extractS  s   ((!6 ) 8 !!EwPV`d " f<"44W=O&& !899%%MwXbd qA((8H8+F#x/--/$%H8TZK[%[\\F#Dv,&(&!'?!# #0044R< -  	 ' KK8$3 6 ##6@ 7QXYZ++,kmtv}~ 	
 
 	
r#   ry   N)r   r   r   r   IE_NAMEIE_DESC
_VALID_URL_NETRC_MACHINE_TESTSr6  r   r   r   r  r$  r<  r   ry   r#   r!   r   r      s   GGMJN 8 5E
 814 s	
 *
 8 8 04I
 84&

 *
 8-
  5a3Fl 	L . .)VC$DB6
r#   r   c                       \ 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./rSSSSSSS S!S".r	S#S$S%S&S'S(S)S*S+S,S-S.S/.r
S0rS1 rS2 rS3 rS8S5 jrS6 rS7rg4)9IqIEi  ziq.comzInternational version of iQiyiz8https?://(?:www\.)?iq\.com/play/(?:[\w%-]*-)?(?P<id>\w+)z:https://www.iq.com/play/one-piece-episode-1000-1ma1i6ferf4 2d7caf6eeca8a32b407094b33b757d39r   1ma1i6ferf4u   航海王 第1000集,   Subtitle available on Sunday 4PM（GMT+8）.i  iKa20211121r   zEpisode 1000	One Piece   )r   r   r   descriptiondurationr*   upload_dateepisode_numberepisodeseries	age_limitaverage_ratingformat500format is restricted)r   r   r   r
  expected_warningsz:https://www.iq.com/play/mermaid-in-the-fog-2021-gbdpx13bs4Tr   240P360P480P720P1080P1080P502K4K)100200300rT  600610700800zh_CNzh_TWenkojathmyvir   esptar)r   r   3r   r   r   r   2324262728a  
        console.log(page.evaluate(function() {
            var tvid = "%(tvid)s"; var vid = "%(vid)s"; var src = "%(src)s";
            var uid = "%(uid)s"; var dfp = "%(dfp)s"; var mode = "%(mode)s"; var lang = "%(lang)s";
            var bid_list = %(bid_list)s; var ut_list = %(ut_list)s; var tm = new Date().getTime();
            var cmd5x_func = %(cmd5x_func)s; var cmd5x_exporter = {}; cmd5x_func({}, cmd5x_exporter, {}); var cmd5x = cmd5x_exporter.cmd5x;
            var authKey = cmd5x(cmd5x('') + tm + '' + tvid);
            var k_uid = Array.apply(null, Array(32)).map(function() {return Math.floor(Math.random() * 15).toString(16)}).join('');
            var dash_paths = {};
            bid_list.forEach(function(bid) {
                var query = {
                    'tvid': tvid,
                    'bid': bid,
                    'ds': 1,
                    'vid': vid,
                    'src': src,
                    'vt': 0,
                    'rs': 1,
                    'uid': uid,
                    'ori': 'pcw',
                    'ps': 1,
                    'k_uid': k_uid,
                    'pt': 0,
                    'd': 0,
                    's': '',
                    'lid': '',
                    'slid': 0,
                    'cf': '',
                    'ct': '',
                    'authKey': authKey,
                    'k_tag': 1,
                    'ost': 0,
                    'ppt': 0,
                    'dfp': dfp,
                    'prio': JSON.stringify({
                        'ff': 'f4v',
                        'code': 2
                    }),
                    'k_err_retries': 0,
                    'up': '',
                    'su': 2,
                    'applang': lang,
                    'sver': 2,
                    'X-USER-MODE': mode,
                    'qd_v': 2,
                    'tm': tm,
                    'qdy': 'a',
                    'qds': 0,
                    'k_ft1': '143486267424900',
                    'k_ft4': '1572868',
                    'k_ft7': '4',
                    'k_ft5': '1',
                    'bop': JSON.stringify({
                        'version': '10.0',
                        'dfp': dfp
                    }),
                };
                var enc_params = [];
                for (var prop in query) {
                    enc_params.push(encodeURIComponent(prop) + '=' + encodeURIComponent(query[prop]));
                }
                ut_list.forEach(function(ut) {
                    enc_params.push('ut=' + ut);
                })
                var dash_path = '/dash?' + enc_params.join('&'); dash_path += '&vf=' + cmd5x(dash_path);
                dash_paths[bid] = dash_path;
            });
            return JSON.stringify(dash_paths);
        }));
        saveAndExit();
    c                 8   U R                   R                  SS5      nU(       a  U$ U R                  U R                  SUS5      5      nU R	                  XBSSS9nU R                  SUS	US
S[        S9nU R                  SUSUSS[        SS9=(       d    0 n[        U5       Hm  nUR                  U5      =(       d    Un	U R	                  SU	 SXh    S3USU S3SSS9=(       d    Sn
SU
;   d  MN  U R                   R                  SSU
5        U
s  $    [        S5      e)Niq	player_jszT<script src="((?:https?:)?//stc\.iqiyipic\.com/_next/static/chunks/webpack-\w+\.js)"zwebpack URLzDownloading webpack JSzUnable to download webpack JSr   z["\']\s*\+\s*zJS locationsz.{\s*(?:\d+\s*:\s*["\'][\da-f]+["\']\s*,?\s*)+}z\[\w+\]\+["\']\.js)contains_patternend_patternr  z["\']\s*\+\(\s*zreplacement mapz-{\s*(?:\d+\s*:\s*["\'][\w.-]+["\']\s*,?\s*)+}z\[\w+\]\|\|\w+\)\+["\']\.F)rz  r{  r  r  z-https://stc.iqiyipic.com/_next/static/chunks/rI   z.jszDownloading #z
 module JSzUnable to download module JSr   r   r  rT   zvms requestzUnable to extract player JS)cacheload_proto_relative_urlr  r  _search_jsonr   reversedr   storer   )r+   r  r  player_js_cachewebpack_js_url
webpack_jswebpack_mapreplacement_mapmodule_indexreal_module	module_jss              r!   _extract_vms_player_jsIqIE._extract_vms_player_js  sr   **//$<""11$2D2Dceln{3} ~++NKc  nM+  N
''j.(N-
 ( L
 ++
,=xM4z	 ,   	 	 %[1L)--l;K|K..?}AkNgMhhkl|nJGQow| / ~ D BD  	)

  {I>   2 :;;r#   c                 F    U R                  SU R                  X5      S5      $ )Nz<,\s*(function\s*\([^\)]*\)\s*{\s*var _qda.+_qdc\(\)\s*})\s*,zsignature function)r  r  )r+   r  r  s      r!   _extract_cmd5x_functionIqIE._extract_cmd5x_function(  s+    !!"a"&"="=g"PRfh 	hr#   c                     U R                  SU R                  X5      SUSSS[        S9nU(       d  g U Vs0 s H.  nU[        X4S4[        U R
                  R                  U5      S9_M0     snU l        g s  snf )	Nz:function\s*\([^)]*\)\s*\{\s*"use strict";?\s*var \w\s*=\s*z
video tagsz"{\s*\d+\s*:\s*\{\s*nbid\s*:.+}\s*}z\s*,\s*\w\s*=\s*\{\s*getNewVdF)rz  r{  r  r  valueexpected_typer)  )r  r  r   r   r6   	_BID_TAGSr   )r+   r  r  extracted_bid_tagsbids        r!   _update_bid_tagsIqIE._update_bid_tags,  s    !..I'':L(B8Xb	 / d
 " *
) 0.PS]a]k]k]o]ops]tuu)
 
s   5A4Nc                 l    U R                  S5      R                  U5      nU(       a  UR                  $ U$ )Nzhttps://iq.com/)_get_cookiesr   r  )r+   namer)  cookies       r!   _get_cookieIqIE._get_cookie9  s/    ""#4599$?%v||272r#   c                 p  ^ U R                  U5      nU R                  X5      nU R                  X25        U R                  X25      S   nUS   S   nUS   n[	        U R                  U R                  SS5      U[        R                  R                  SS9S	S
S9nU(       aZ  U R                  SUSSSSU R                  SS5      U R                  SS5      U R                  SS5      S.SS9n[	        US[        S9n	OS/n	U R                  [        U SS9R                  USSX R                  US    US!   [	        US"[        S#S$9UU R                  S%S5      U R                  SS5      U R                  SS5      S&S'R!                  S/U R"                  R%                  5       Q5      -   S(-   S&S'R!                  U	5      -   S(-   U R'                  X25      S).
-  S*9S   R)                  5       U5      n
/ 0 pU R                  [+        S+U
S   5      US,S-S.9S/   n[	        US0[,        SS19n[	        US2[.        S9(       a+  U R1                  S3R3                  [5        US S45      5      5        [7        [	        US5[        S95       GH  mU
R                  T5      nU(       d  U R1                  S6T S735        M3  [	        U R                  [+        S+U5      US8U R"                  T    3S9SS:9S/[8        S9n[	        US;S<U4S= j4[8        SS19=(       d    0 n/ nUR                  S>5      (       a>  UR;                  U R=                  [+        UR                  S?S@5      US>   5      SATSSB95        UR                  SC5      (       a=  UR;                  U R?                  [+        UR                  S?S@5      USC   5      TSSD95        UR                  SE5      (       a  UR                  SFSG5      nUSG:X  a*  U RA                  USE   SATSSH9u  nnUR;                  U5        O}USI:X  ac  [	        U R                  USE   USSJ9SK[        S9nU(       d  GM  U RC                  UTUR                  S?S@5      5      u  nnUR;                  U5        OU R1                  U SL35        U(       dZ  UR                  SM5      (       a"  U R1                  U R"                  T    SN35        O"U R1                  SOU R"                  T    SP35        U Hn  nURE                  [G        [I        U R"                  R%                  5       5      5      " T5      U R"                  T   SQ.[K        UR                  SR5      5      E5        Mp     UR;                  U5        GM     [	        USS[8        S9 H  nU RL                  R                  [        UR                  ST5      5      UR                  SU5      5      nURO                  U/ 5      R;                  SV VVs/ s H@  u  nnUR                  U5      (       d  M  U[+        UR                  SWSX5      UU   5      SY.PMB     snn5        M     UR                  SZ5      (       a'  UR                  S[5      (       a  UR                  S[5      OUnUUS\   UUUR                  S]5      [Q        UR                  S^5      5      [S        UR                  S_5      5      [	        US`[,        S9[U        UR                  Sa5      5      [	        USb[        S9[	        USc[        S9[/        UR                  Sd5      5      =(       d    S UR                  Se5      Sf.$ s  snnf )gNpropsinitialStateplaycurVideoInfoI00002z{}F)r  r  )r8   uidr   r(  z https://pcw-api.iq.com/api/vtypezDownloading VIP datazUnable to download VIP datar   r   rZ   intllangen_usQC005rT   )batch
platformIdmodeCodelangCodedeviceId)r   r   r  r  )r8   all_vip.vipType)r  0i )timeoutz9Executing signature code (this may take a couple minutes)z<!DOCTYPE html>tvIdr   )initialProps	pagePropsptid04022001010011000000r  dfp[,])
r   r   r   r  r  moder  bid_listut_list
cmd5x_func)note2htmlr  jscodezhttps://cache-video.iq.comz%Downloading initial video format infoz,Unable to download initial video format infor   r8   )boss_ts)Nr8   )previewTimertime)r  get_all)r  r8   prvzThis preview video is limited{}z to %s seconds)programvideo.r  zUnknown format id: z%. It is currently not being extractedzDownloading format data for zUnable to download format datar|  r  r  c                 &   > [        US   5      T:H  $ )Nr  rV   )r9  vr  s     r!   r  $IqIE._real_extract.<locals>.<lambda>~  s    WZ[\]b[cWdhkWkr#   m3u8Urldm3u8zhttps://cache-m.iq.com/dc/dt/r   )m3u8_idr  mpdUrl)mpd_idr  m3u8ffts)r   r  r  m4sr  )payload.r8   z$ formats are currently not supportedr   z format is restrictedzUnable to extract z format)r1  format_notescrsz)r  stl.lid_name))srtr  )webvttvttdstlzhttp://meta.video.iqiyi.com)r   r   albumId	albumInfor  	mergeDescrc   rating)playScoreInfoscoreisoUploadDate)videoTagMap..r  )actorArr.r  order	albumName)r   r   r4  	subtitlesrK  rL  rQ  rR  r*   
categoriescastrN  rP  )+	_match_idr  r  _search_nextjs_datar   r  r  r   r   unquoter   r   r   r   _DASH_JSr6   rY   r  keysr  stripr   r
   r   r   rS  r   setdictextend_extract_m3u8_formats_extract_mpd_formats!_parse_m3u8_formats_and_subtitles _parse_mpd_formats_and_subtitlesupdater   rL   r   	_LID_TAGS
setdefaultr   r   r   )r+   r   r  r  
next_props	page_data
video_infor  vip_datar  
dash_pathsr4  r  initial_format_datapreview_time	dash_pathformat_datavideo_formatextracted_formatsr  m3u8_formatsr9  mpd_datampd_formatsf
sub_formatr  
format_key
format_extextra_metadatar  s                                 @r!   r<  IqIE._real_extract=  s   >>#&((7g0--g@I
~.v6	~.
  40(V\\MaMain  pQ(
 **2HCY  dA"# $ 0 0 ? $ 0 0 A $ 0 0" =I  +  H #8-P`klGeG %%&6tW&M&Q&QR"Xmm"6*!%(#J0U25?UW''r2((7((9#((C+H$..2E2E2G+H"IICO'!22S8"::7MO ? 'R ' ' %'8%
   "110*S/BH8Bp 2 rrxz $!Vfs  ~CD+-GWbc A H HVbdhjzI{ |} |$79YituvC"s+I##&9#>c$de&t':':4i@(3DNN34G3HISs (; ( %D:K
 (iJk5l6:EK QNP  "	**!(()C)CKOOG5TUWcdmWno3e *D *5 6 ))!(()B)BKOOG5TUWcdlWmne *C *- . ''!%%dD1:&*&L&L$V,%E 'M 'SOL!%,,\:5[+((f)=xu(UWo  @C DH# %)%J%J #{w@_'`&bNK%,,[9''2$.R(ST$##C((''4>>#+>*??T(UV''*<T^^C=P<QQX(YZ&(dnn.A.A.C)DEcJ#'>>##6 '|'7'7'@A  ' NN,-e wh '':<ScghJ>>%%k*..2G&H*..Y`JabD  r*11 -P3o -P(*jS]SaSablSm4!266v?\]_ijt_uv4 -P3o p i 8B~~i7P7PU^UbUbcnUoUo{3u'"%>>+6&z~~e'<=()AB*96P`mn&z~~o'FG&~7Xhkl 1JZ]^)*..*ABJd nn[1
 	
3os   \2 &\2)r  r   )r   r   r   r   r>  r?  r@  floatrB  r  r  r  r  r  r  r  r<  r   ry   r#   r!   rD  rD    s    G.GLJK1+I#%"%!#
 e
 55). L+F6 	I IFHP<:h
3A
r#   rD  c                   j    \ 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QS\S.S/S./rSS jrS r	Sr
g)	IqAlbumIEi  ziq.com:albumz9https?://(?:www\.)?iq\.com/album/(?:[\w%-]*-)?(?P<id>\w+)z3https://www.iq.com/album/one-piece-1999-1bk9icvr3311bk9icvr331rI  rG  )r   r   rK     )r   r   playlist_mincountu6   https://www.iq.com/album/九龙城寨-2021-22yjnij099kr   22yjnij099ku   九龙城寨z$md5:8a09f50b8ba0db4dc69bc7c844228044i  iKa20220111)zShi Yan NengzYu Langz	Peter  lvz
Sun Zi JunzYang Xiao BorJ  )r   r   r   rK  rL  r*   rM  rP  r  rQ  rR  rU  )r   r   rV  Nc              #   n  #    U H  nU R                  SU 3USUR                  SS5       3SSUUUS   US   S	.S
9nUS   S    Hg  nU R                  SUR                  S5      =(       d    US   -  [        R	                  5       UR                  S5      UR                  S5      5      v   Mi     M     g 7f)Nz-https://pcw-api.iq.com/api/episodeListSource/z Downloading video list episodes r   rT   zUnable to download video listr   tofrom)r  r  r  endOrder
startOrder)r   r   r  r8   epgzhttps://www.iq.com/play/%splayLocSuffix	qipuIdStrr  )r   r   r  rD  ie_key)	r+   album_id_numpage_rangesr  	mode_code	lang_code
page_rangepager  s	            r!   _entriesIqAlbumIE._entries  s     %J&&?~NPX7
ub8Q7RS7"# ) ) *4 0",V"4@ ' 	D fe,oo&BeiiP_F`Fvdijudv&w&*kkmUYY{5KUYYW]M^` ` - &s   B3B5c                    U R                  U5      nU R                  X5      nU R                  X25      nUS   S   S   S   nUR                  S5      S:X  a'  U R	                  SU 3[
        R                  5       5      $ U R                  U R                  US   US	   U[        US
5      [        US5      5      X%R                  S5      UR                  S5      5      $ )Nr  r  albumvideoAlbumInfo	videoTypesingleVideozhttps://www.iq.com/play/r  totalPageRange)r  r  r  r  )r  r  r  r  r  desc)
r  r  r  r   r  rD  r"  r  r)  r   )r+   r   r  r  	next_data
album_datas         r!   r<  IqAlbumIE._real_extract  s    >>#&((7,,W?	w'7@AQR
>>+&-7??%=hZ#H$++-XX##MM*Y/<L1Mx&y2de&y2deg nnV,jnnV.D	F 	Fr#   ry   )Nr  r  )r   r   r   r   r>  r@  r  rB  r)  r<  r   ry   r#   r!   r  r    ss    GMJD I

 ! H#A#%$Z#
 55!F6` Fr#   r  )$r   r  r   r}   urllib.parser   commonr   openloadr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r%   r   r   rD  r  ry   r#   r!   <module>r9     s      	   ! &     .2[P [P|   Fd
m d
Nr
= r
j	:F :Fr#   