
    yfz                        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	 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mZmZmZmZmZmZmZ d Z  G d	 d
      Z! G d d      Z" G d de      Z# G d de      Z$ G d de      Z%y)    N   )InfoExtractor   )
compat_strcompat_urllib_parse_urlencodecompat_urllib_parse_unquote)PhantomJSwrapper)
clean_htmldecode_packed_codesExtractorErrorfloat_or_noneformat_fieldget_element_by_idget_element_by_attribute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    t        j                  | j                  d            j                         S )Nutf-8)hashlibmd5encode	hexdigest)texts    8/usr/lib/python3/dist-packages/yt_dlp/extractor/iqiyi.pymd5_textr%   $   s#    ;;t{{7+,6688    c                   z    e Zd Zd Zed        Zed        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zy)IqiyiSDKc                 .    || _         || _        || _        y N)targetip	timestamp)selfr+   r,   r-   s       r$   __init__zIqiyiSDK.__init__)   s    "r&   c           
      R    t        t        t        d t        |                         S )Nc                     t        | d      S N   )int)ps    r$   <lambda>z$IqiyiSDK.split_sum.<locals>.<lambda>0   s    C2J r&   )r   summaplist)datas    r$   	split_sumzIqiyiSDK.split_sum.   s    #c"6T
CDEEr&   c                 |    t        | t              rt        |       } t        t        t	        t        |                   S r*   )
isinstancer4   r   r7   r8   )nums    r$   	digit_sumzIqiyiSDK.digit_sum2   s+    c3S/C#c#sm,--r&   c                     | j                  t        | j                        d d d         }| j                  t        | j                        dd d         }||fS )Nr   r   )r?   r   r-   r.   evenodds      r$   even_oddzIqiyiSDK.even_odd8   sN    ~~j81=>nnZ71=>Syr&   c           	      h   t        | j                        | _        g }t        d|z        D ])  }|j                  | j                  ||z  ||dz   z          + d|z  r$|j                  | j                  dd|z  z
  d         |t	        t        t        | j                  j                  d                  fS )N    r   .)	r%   r+   rangeappendr9   r8   r4   r,   split)r.   	chunksizechunksis       r$   
preprocesszIqiyiSDK.preprocess=   s    t{{+rY' 	JAMM$++i!mIQ4GHI	J	>MM$++b2	>&9&:;<tCTWW]]3%78999r&   c                     | j                  d      \  }}|d   dj                  t        fd|            z   | _        y )NrF   r    c                      t        | z        S r*   )r   )r5   moduluss    r$   r6   zIqiyiSDK.mod.<locals>.<lambda>H   s    
1w;8O r&   )rN   joinr8   r+   )r.   rR   rL   r,   s    `  r$   modzIqiyiSDK.modF   s7    __R(
Qi"''#.OQS*T"UUr&   c                     dddd}| j                  |      \  }}d}t        t        |            D ]9  }|dk  rt        ||   ||   z        nd}|dk(  r||||   z   z  }/|||   |z   z  }; || _        y )N   
   d   )         rP   rY   r[   )rN   rH   lenr   r+   )r.   rK   modulus_maprL   r,   retrM   ip_parts           r$   rJ   zIqiyiSDK.splitJ   s    
 __Y/
s6{# 	+ADEEjAY)?!?@rGA~w**vay7**	+ r&   c                     t        | j                        | _        | j                  | j                  d d       | j                  z   | j                  | j                  dd        z   | _        y r2   r%   r+   r;   r.   s    r$   handle_input16zIqiyiSDK.handle_input16[   sT    t{{+nnT[["%56Dt~~VZVaVabdbeVfGggr&   c                     t        | j                        | _        d}t        d      D ]1  }| j                  d|z  d|dz   z   }|| j                  |      |z   z  }3 || _        y )NrP   rY   r[   r   )r%   r+   rH   r;   )r.   r^   rM   parts       r$   handle_input8zIqiyiSDK.handle_input8_   sg    t{{+q 	/A;;q1uQ!a%[1D4>>$'$..C	/ r&   c                     t        | j                        | _        | j                  | j                        | j                  z   | _        y r*   ra   rb   s    r$   	handleSumzIqiyiSDK.handleSumg   s/    t{{+nnT[[1DKK?r&   c           
      R   t        | j                        | _        t        j                  | j                        }t        |j                        d|j                  z  d|j                  z  d| xj                  dj                  t        fdt        |                  z  c_        y )Nz%02d)ymdrP   c                     |    S r*    )cstringss    r$   r6   zIqiyiSDK.date.<locals>.<lambda>s   s    WQZ r&   )r%   r+   time	localtimer-   r   tm_yeartm_montm_mdayrS   r8   r9   )r.   schemerl   rp   s      @r$   datezIqiyiSDK.datek   su    t{{+NN4>>*AII&!(("!))#

 	rwws#7fFGGr&   c                 j    | j                         \  }}|t        | j                        z   |z   | _        y r*   rD   r%   r+   rA   s      r$   split_time_even_oddzIqiyiSDK.split_time_even_oddu   s+    MMO	cHT[[11D8r&   c                 j    | j                         \  }}|t        | j                        z   |z   | _        y r*   ry   rA   s      r$   split_time_odd_evenzIqiyiSDK.split_time_odd_eveny   s+    MMO	cXdkk22S8r&   c                     | j                  d      \  }}t        t        |            |d   z   | j                  | j                        z   | _        y NrF   r   )rN   r   r7   r?   r-   r+   r.   rL   r,   s      r$   split_ip_time_sumzIqiyiSDK.split_ip_time_sum}   s?    __R(
 R)F1I5t~~8VVr&   c                     | j                  d      \  }}| j                  | j                        |d   z   t        t	        |            z   | _        y r~   )rN   r?   r-   r   r7   r+   r   s      r$   split_time_ip_sumzIqiyiSDK.split_time_ip_sum   s@    __R(
nnT^^4vay@:cRTgCVVr&   N)__name__
__module____qualname__r/   staticmethodr;   r?   rD   rN   rT   rJ   rc   rf   rh   rw   rz   r|   r   r   rn   r&   r$   r(   r(   (   ss    #
 F F . .

:V"h@H99WWr&   r(   c                       e Zd Zd Zd Zy)IqiyiSDKInterpreterc                     || _         y r*   )sdk_code)r.   r   s     r$   r/   zIqiyiSDKInterpreter.__init__   s	     r&   c                    t        | j                        | _        t        j                  d| j                        }t	        |||      }|j
                  |j                  |j                  |j                  |j                  |j                  |j                  d}|D ]  }t        j                  d|      r|j                  t        |dd               7t        j                  d|      r|j                  |dd         bt        j                  d|      r|j!                  t        |dd               ||v r ||           t#        d	|z         |j$                  S )
Nzinput=([a-zA-Z0-9]+)\(input)rh   handleInput8handleInput16splitTimeEvenOddsplitTimeOddEvensplitIpTimeSumsplitTimeIpSumzmod\d+   zdate[ymd]{3}rY   zsplit\d+rZ   zUnknown function %s)r   r   refindallr(   rh   rf   rc   rz   r|   r   r   matchrT   r4   rw   rJ   r   r+   )r.   r+   r,   r-   	functionssdkother_functionsfunctions           r$   runzIqiyiSDKInterpreter.run   s*   +DMM:JJ=t}}M	vr9- -- // # 7 7 # 7 7!33!33
 " 
	GHxx	8,HQRL)*/84!"&+x0		#hqrl+,_,))+$%:X%EFF
	G zzr&   N)r   r   r   r/   r   rn   r&   r$   r   r      s    !r&   r   c            
           e Zd Zd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ddd	ddddddddddddd d!ddgZd"d#d$d%d&d&d'd(d)Ze	d*        Z
d+ Zd, Zd- Zd. Zy/)0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   rY   rZ         )961221417518c                 $    d}d}t        | ||      S )Nl#   o<%
Q7&ib)P.U[())v[_Na_[3<0#7L'0<:T*F76W i  )r   )r:   Nes      r$   _rsa_funzIqiyiIE._rsa_fun   s     O!$1--r&   c                    | j                  dd dd      }|d   }t        t        j                               }d|d| j                  |j	                  d            d	}t        |      }|j                  ||d
   |      }|d|d   d||d}	| j                  dt        |	      z   d dd      }
ddd}|
d   }|dk7  rI|j                  |      }|s!d|z  }|
j                  d      r|d|
d   z   z  }| j                  d|z          yy)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=r   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 %smsgz: zunable to log in: FT)
_download_jsonr4   rq   r   r!   r   r   r   getreport_warning)r.   usernamepasswordr:   r   r-   r+   interpr   validation_paramsvalidation_resultMSG_MAPr   r   s                 r$   _perform_loginzIqiyiIE._perform_login   sK   "".(2S # U 5k		$	dmmHOOG$<=? %S)zz&$t*i8 8']:
 !//.1NO`1aacg'1Q 0 S
 V0

 !(8++d#C 4'$((/4"3E":::C 4s :;r&   c                     t        t        j                         dz        }d}t        t        |      |z   |z         }||d||d}| j	                  d|d|d|d || j                               S )	N   d5fb4bd9d50c4be6948c97edd7254b0e 76f90cbd92f94a2e925d83e8ccd22cb7)tvidvidsrcsctz!http://cache.m.iqiyi.com/jp/tmts//c                     t        | d      S )Nvar tvInfoJs=)r   )ss    r$   r6   z&IqiyiIE.get_raw_data.<locals>.<lambda>2  s    a1Q r&   )transform_sourcequeryheaders)r4   rq   r%   r   r   geo_verification_headers)r.   r   video_idtmkeyr   paramss          r$   get_raw_datazIqiyiIE.get_raw_data#  s    t#$0jns*T125
 ""9=xH'Q$"?"?"A # C 	Cr&   c                    d}t        j                  d|      }|sy | j                  d|d      }| j                  d|dd      }t        t	        | j
                  |            }t        j                  d	      D ]  }| j                  d
|||fz  |d|z  d|z        }| j                  t        |d      |      }	|	d   d   }
|
D ]%  }|j                  | j                  |d                ' t        |
      |k  s n | j                  |||      S )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/%s/%d/%d/zDownload playlist page %dz#Failed to download playlist page %dr   r   r:   vlistvurl)r   r   _search_regexr9   r8   
url_result	itertoolscount_download_webpage_parse_jsonr   rI   r\   playlist_result)r.   webpage	PAGE_SIZElinksalbum_idalbum_titleentriespage_numpagelist_pagepagelistr   items               r$   _extract_playlistzIqiyiIE._extract_playlist5  s?   	

` %%#Wj:(()7M ) P s4??E23 "* 	H 22AXxYbDcc08;=H	 3 JM
 '']O<hHHV$W-E >ttF|<=>5zI%	 ##GX{CCr&   c                    | j                  |dd      }| j                  d|dd       }| | j                  |      }|r|S t        d      | j                  d|d	      }g }t	        d
      D ]  }| j                  ||      }|d   dk7  r)|d   dk(  r| j                          t        d|d   z         |d   }	|	d   D ]I  }
d|
vrt        |
d         }|j                  |
d   |d| j                  j                  |d      dd       K |r n| j                  d
|        t        d|      xs+ t        t        dd|            xs | j                  d|d      }|||d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   rZ   r   r   A00111z!Unable to load data. Error code: r:   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   rH   r   raise_geo_restrictedr   rI   _FORMATS_MAPr   _sleepr   r
   r   _html_search_regex)r.   r   r   r   r   r   r  _raw_datar:   streamr  r   s                r$   _real_extractzIqiyiIE._real_extractV  s   ((!6 ) 8 !!EwPV`d " f<"44W=O&& !899%%MwXbd q 	%A((x8H8+F#x/--/$%H8TZK[%[\\F#Dv, 
&(t-!'?!# #0044R< -  	
 KK8$3	%6 ##6@ 7QXYZ++,kmtv}~ 	
 
 	
r&   N)r   r   r   IE_NAMEIE_DESC
_VALID_URL_NETRC_MACHINE_TESTSr  r   r   r   r   r  r  rn   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 . .(TC$DB6
r&   r   c                       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gddddgZdddddddd d!Zd"d#d$d%d&d'd(d)d*d+d,d-d.Z	d/Z
d0 Zd1 Zd2 Zd6d4Zd5 Zy3)7IqIEz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300r2  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           
      $   | j                   j                  dd      }|r|S | j                  | j                  d|d            }| j	                  ||dd      }| j                  d|d	|d
dt              }| j                  d|d|ddt        d      xs i }t        |      D ]d  }|j                  |      xs |}	| j	                  d|	 d||    d|d| ddd      xs d}
d|
v sE| j                   j                  dd|
       |
c S  t        d      )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)rX  rY  r   r   z-https://stc.iqiyipic.com/_next/static/chunks/rG   z.jszDownloading #z
 module JSzUnable to download module JSr   r   r   rP   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_jszIqIE._extract_vms_player_js  s|   **//$<""11$2D2Dceln{3} ~++NHKc  nM+  N
''j.(N-
 ( L
 ++
,=xM4z	 ,   	 	 %[1 	!L)--l;K|K..?}AkZfNgMhhkl|nJGQow| / ~ D BD  	)

  {I>  	! :;;r&   c                 H    | j                  d| j                  ||      d      S )Nz<,\s*(function\s*\([^\)]*\)\s*{\s*var _qda.+_qdc\(\)\s*})\s*,zsignature function)r   ri  )r.   r   r   s      r$   _extract_cmd5x_functionzIqIE._extract_cmd5x_function+  s-    !!"a"&"="=gx"PRfh 	hr&   c                    | j                  d| j                  ||      d|dddt              }|sy |j                         D ci c]1  }|t	        ||dft
        | j                  j                  |            3 c}| _        y c c}w )	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)rX  rY  r   r   valueexpected_typer  )r^  ri  r   keysr   str	_BID_TAGSr   )r.   r   r   extracted_bid_tagsbids        r$   _update_bid_tagszIqIE._update_bid_tags/  s    !..I'':L(B8Xb	 / d
 " *..0
 03.PS]a]k]k]o]ops]tuu
 
s   6BNc                 b    | j                  d      j                  |      }|r|j                  S |S )Nzhttps://iq.com/)_get_cookiesr   rm  )r.   namer  cookies       r$   _get_cookiezIqIE._get_cookie<  s/    ""#4599$?%v||272r&   c                    | j                  |      }| j                  ||      }| j                  ||       | j                  ||      d   }|d   d   }|d   }t	        | j                  | j                  dd      |t        d      d	d
      }|r`| j                  d|dddd| j                  dd      | j                  dd      | j                  dd      dd      }t	        |dt              }	ndg}	| j                  t        | d      j                  |dd|| j                  |d    |d!   t	        |d"t        d#$      || j                  d%d      | j                  dd      | j                  dd      d&d'j                  dg| j                  j!                               z   d(z   d&d'j                  |	      z   d(z   | j#                  ||      d)
z  *      d   j%                         |      }
g i }}| j                  t'        d+|
d         |d,d-.      d/   }t	        |d0t(        d1      }t	        |d2t*              r| j-                  d3t/        |d d4      z         t1        t	        |d5t                    D ]  |
j                        }|s| j-                  d6 d7       -t	        | j                  t'        d+|      |d8| j                      d9d:      d/t2              }t	        |d;d<fd=ft2        d1      xs i }g }|j                  d>      rA|j5                  | j7                  t'        |j                  d?d@      |d>         dAdB             |j                  dC      r@|j5                  | j9                  t'        |j                  d?d@      |dC         dD             |j                  dE      r|j                  dFdG      }|dGk(  r-| j;                  |dE   dAdH      \  }}|j5                  |       n||dIk(  rct	        | j                  |dE   |dJ      dKt              }|s| j=                  ||j                  d?d@            \  }}|j5                  |       n| j-                  | dL       |sU|j                  dM      r"| j-                  | j                      dN       n"| j-                  dO| j                      dP       |D ]m  }|j?                   tA        tC        | j                  j!                                           | j                     dQtE        |j                  dR                   o |j5                  |        t	        |dSt2              D ]  }| jF                  j                  t        |j                  dT            |j                  dU            }|jI                  |g       j5                  dVD cg c]8  \  }}|j                  |      r"|t'        |j                  dWdX      ||         dY: c}}        |j                  dZ      r"|j                  d[      r|j                  d[      n|}||d\   |||j                  d]      tK        |j                  d^            tM        |j                  d_            t	        |d`t(              tO        |j                  da            t	        |dbt              t	        |dct              t+        |j                  dd            xs d |j                  de      dfS c c}}w )gNpropsinitialStateplaycurVideoInfoI00002z{}F)r   r   )r:   uidr   r  z https://pcw-api.iq.com/api/vtypezDownloading VIP datazUnable to download VIP datar   r   rT   intllangen_usQC005rP   )batch
platformIdmodeCodelangCodedeviceId)r   r   r   r   )r:   all_vip.vipType)ro  0i )timeoutz9Executing signature code (this may take a couple minutes)z<!DOCTYPE html>tvIdr   )initialProps	pagePropsptid04022001010011000000rn  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   r:   )boss_ts)Nr:   )previewTimertime)ro  get_all)r  r:   prvzThis preview video is limited%sz to %s seconds)programvideo.rt  zUnknown format id: z%. It is currently not being extractedzDownloading format data for zUnable to download format datarZ  r  r  c                 &    t        |d         k(  S )Nrt  )rq  )r  vrt  s     r$   r6   z$IqIE._real_extract.<locals>.<lambda>  s    WZ[\]b[cWdhkWk r&   m3u8Urldm3u8zhttps://cache-m.iq.com/dc/dt/r   )m3u8_idr   mpdUrl)mpd_idr   m3u8ffts)r   r  r   m4sr   )payload.r:   z$ formats are currently not supportedr   z format is restrictedzUnable to extract z format)r  format_notescrsz)r  stl.lid_name))srtr  )webvttvttdstlzhttp://meta.video.iqiyi.com)r   r   albumId	albumInforx  	mergeDescr\   rating)playScoreInfoscoreisoUploadDate)videoTagMap..rx  )actorArr.rx  order	albumName)r   r   r  	subtitlesr)  r*  r/  r0  r-   
categoriescastr,  r.  )(	_match_idr   ru  _search_nextjs_datar   r   rz  r   r   r   r	   r   _DASH_JSrq  rS   rr  rp  rk  stripr   r   r   r   r   setdictextend_extract_m3u8_formats_extract_mpd_formats!_parse_m3u8_formats_and_subtitles _parse_mpd_formats_and_subtitlesupdater   r9   r   	_LID_TAGS
setdefaultr   r   r   )r.   r   r   r   
next_props	page_data
video_infor  vip_datar  
dash_pathsr  r  initial_format_datapreview_time	dash_pathformat_datavideo_formatextracted_formatsr  m3u8_formatsr  mpd_datampd_formatsf
sub_formatr  
format_key
format_extextra_metadatart  s                                 @r$   r  zIqIE._real_extract@  sp   >>#&((h7gx0--gx@I
~.v6	~.
  40(Mhpu  wQ(
 **2HCY  dA"# $ 0 0 ? $ 0 0 A $ 0 0" =I  +  H #8-P`klGeG %%&6tW&M&Q&QR"Xdmm"6*!%(#J0U25?UW''r2((7((9#((C+H$..2E2E2G+H"IICO'!22S8"::7HMO ? 'R ' ' %'8%
   "110*S/BH8Bp 2 rrxz $!Vfs  ~CD+-GWbc ALQ]_ceuDv vw |$79Yituv 2	.C"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& Eydnn.A.A.C)DEcJ#'>>##6 '|'7'7'@A  NN,-e2	.h '':<Scgh 	pJ>>%%k*..2G&H*..Y`JabD  r*11 -P3o )*jS]SaSablSm "266v?\]_ijt_uv4 3o p	p 8B~~i7PU^UbUbcnUo{3u'"%>>+6&z~~e'<=()AB*96P`mn&z~~o'FG&~7Xhkl 1JZ]^)*..*ABJd nn[1
 	
3os   =\r*   )r   r   r   r  r  r  floatr   rr  r  r  ri  rk  ru  rz  r  rn   r&   r$   r"  r"    s    G.GLJK1+I#%"%!#
 e
 55). L+F6 	I IFHP<:h
3A
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g ddeddgdgZddZd Zy)	IqAlbumIEziq.com:albumz9https?://(?:www\.)?iq\.com/album/(?:[\w%-]*-)?(?P<id>\w+)z3https://www.iq.com/album/one-piece-1999-1bk9icvr3311bk9icvr331r'  r%  )r   r   r)     )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 Bor(  )r   r   r   r)  r*  r-   r+  r.  r  r/  r0  r3  )r   r   r4  Nc              #   b  K   |D ]  }| j                  d| |d|j                  dd       dd|||d   |d   d	
      }|d   d   D ]a  }| j                  d|j                  d      xs |d   z  t        j	                         |j                  d      |j                  d             c  y w)Nz-https://pcw-api.iq.com/api/episodeListSource/z Downloading video list episodes r   rP   zUnable to download video listr   tofrom)r  r  r  endOrder
startOrder)r   r   r   r:   epghttps://www.iq.com/play/%splayLocSuffix	qipuIdStrrx  )r   r   r   r"  ie_key)	r.   album_id_numpage_rangesr   	mode_code	lang_code
page_rangepager  s	            r$   _entriesz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   B-B/c                    | j                  |      }| j                  ||      }| j                  ||      }|d   d   d   d   }|j                  d      dk(  r'| j	                  d|z  t
        j                               S | j                  | j                  |d   |d	   |t        |d
      t        |d            ||j                  d      |j                  d            S )Nr|  r}  albumvideoAlbumInfo	videoTypesingleVideor  r  totalPageRange)r|  r  r  r  )r|  r  r  r  rx  desc)
r  r   r  r   r   r"  r  r   r  r   )r.   r   r   r   	next_data
album_datas         r$   r  zIqAlbumIE._real_extract  s    >>#&((h7,,Wh?	w'7@AQR
>>+&-7??#?(#JDKKMZZ##MM*Y/<L1Mx&y2de&y2deg jnnV,jnnV.D	F 	Fr&   )Nr  r  )	r   r   r   r  r  r  r   r  r  rn   r&   r$   r  r    ss    GMJD I

 ! H#A#%$Z#
 55!F6` Fr&   r  )&r   r   r   rq   commonr   compatr   r   r   openloadr	   utilsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r(   r   r   r"  r  rn   r&   r$   <module>r     s      	  ! 
 '     .9[W [W|   Fc
m c
Lr
= r
j	:F :Fr&   