
    VGh y                        d dl 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	 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)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                 d    t        j                  | j                               j                         S N)hashlibmd5encode	hexdigest)texts    _/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/iqiyi.pymd5_textr"       s     ;;t{{}%//11    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 r   )targetip	timestamp)selfr'   r(   r)   s       r!   __init__zIqiyiSDK.__init__%   s    "r#   c                 8    t        t        d | D                    S )Nc              3   4   K   | ]  }t        |d         yw)   N)int).0ps     r!   	<genexpr>z%IqiyiSDK.split_sum.<locals>.<genexpr>,   s     0as1bz0s   )strsum)datas    r!   	split_sumzIqiyiSDK.split_sum*   s    3040011r#   c                 |    t        | t              rt        |       } t        t        t	        t        |                   S r   )
isinstancer/   r3   r4   map)nums    r!   	digit_sumzIqiyiSDK.digit_sum.   s+    c3c(C3s3}%&&r#   c                     | j                  t        | j                        d d d         }| j                  t        | j                        dd d         }||fS )Nr   r   )r;   r3   r)   r*   evenodds      r!   even_oddzIqiyiSDK.even_odd4   sN    ~~c$..1#A#67nnS0A67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appendlistr9   r/   r(   split)r*   	chunksizechunksis       r!   
preprocesszIqiyiSDK.preprocess9   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                 x    | j                  d      \  }}|d   dj                  fd|D              z   | _        y )NrB   r    c              3   :   K   | ]  }t        |z          y wr   r3   )r0   r1   moduluss     r!   r2   zIqiyiSDK.mod.<locals>.<genexpr>D   s     )Gq#a'k*:)Gs   )rK   joinr'   )r*   rP   rI   r(   s    `  r!   modzIqiyiSDK.modB   s4    __R(
Qi"'')GB)G"GG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   )         rM   rW   rY   )rK   rD   lenr3   r'   )r*   rH   modulus_maprI   r(   retrJ   ip_parts           r!   rG   zIqiyiSDK.splitF   s    
 __Y/
s6{# 	+A=>Uc"Q%+i"889GA~w**vay7**	+ r#   c                     t        | j                        | _        | j                  | j                  d d       | j                  z   | j                  | j                  dd        z   | _        y )Nr.   r"   r'   r6   r*   s    r!   handle_input16zIqiyiSDK.handle_input16W   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 )NrM   rW   rY   r   )r"   r'   rD   r6   )r*   r\   rJ   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   r_   r`   s    r!   	handleSumzIqiyiSDK.handleSumc   s/    t{{+nnT[[1DKK?r#   c                 8   t        | j                        | _        t        j                  | j                        }t        |j                        d|j                  z  d|j                  z  d| xj                  dj                  fd|D              z  c_        y )Nz%02d)ymdrM   c              3   (   K   | ]	  }|     y wr    )r0   cstringss     r!   r2   z IqiyiSDK.date.<locals>.<genexpr>o   s     :awqz:s   )
r"   r'   time	localtimer)   r3   tm_yeartm_montm_mdayrQ   )r*   schemerj   rn   s      @r!   datezIqiyiSDK.dateg   sn    t{{+NN4>>*QYY!(("!))#

 	rww:6:::r#   c                 j    | j                         \  }}|t        | j                        z   |z   | _        y r   r@   r"   r'   r=   s      r!   split_time_even_oddzIqiyiSDK.split_time_even_oddq   s+    MMO	cHT[[11D8r#   c                 j    | j                         \  }}|t        | j                        z   |z   | _        y r   rw   r=   s      r!   split_time_odd_evenzIqiyiSDK.split_time_odd_evenu   s+    MMO	cXdkk22S8r#   c                     | j                  d      \  }}t        t        |            |d   z   | j                  | j                        z   | _        y NrB   r   )rK   r3   r4   r;   r)   r'   r*   rI   r(   s      r!   split_ip_time_sumzIqiyiSDK.split_ip_time_sumy   s>    __R(
#b'lVAY.1OOr#   c                     | j                  d      \  }}| j                  | j                        |d   z   t        t	        |            z   | _        y r|   )rK   r;   r)   r3   r4   r'   r}   s      r!   split_time_ip_sumzIqiyiSDK.split_time_ip_sum}   s>    __R(
nnT^^4vay@3s2w<Or#   N)__name__
__module____qualname__r+   staticmethodr6   r;   r@   rK   rR   rG   ra   rd   rf   ru   rx   rz   r~   r   rl   r#   r!   r%   r%   $   sp    #
 2 2 ' '

:H"h@;99PP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	|        |j$                  S )
Nzinput=([a-zA-Z0-9]+)\(input)rf   handleInput8handleInput16splitTimeEvenOddsplitTimeOddEvensplitIpTimeSumsplitTimeIpSumzmod\d+   zdate[ymd]{3}rW   zsplit\d+rX   zUnknown function )r	   r   refindallr%   rf   rd   ra   rx   rz   r~   r   matchrR   r/   ru   rG   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
 " 
	EHxx	8,HQRL)*/84!"&+x0		#hqrl+,_,))+$'8
%CDD
	E zzr#   N)r   r   r   r+   r   rl   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   rW   rX         )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   )r5   Nes      r!   _rsa_funzIqiyiIE._rsa_fun   s     O!$1--r#   c                 2   | j                  dd dd      }|d   }t        t        j                               }d| d| j                  |j	                                d}t        |      }|j                  ||d	   |      }|d
|d   d||d}	| j                  dt        j                  j                  |	      z   d dd      }
ddd}|
d   }|dk7  rI|j                  |      }|s!d| }|
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=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_jsonr/   ro   r   r   r   r   urllibparse	urlencodegetreport_warning)r*   usernamepasswordr5   r   r)   r'   interpr   validation_paramsvalidation_resultMSG_MAPr   r   s                 r!   _perform_loginzIqiyiIE._perform_login   sd   "".(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                     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!   <lambda>z&IqiyiIE.get_raw_data.<locals>.<lambda>/  s    a1Q r#   )transform_sourcequeryheaders)r/   ro   r"   r3   r   geo_verification_headers)r*   r   video_idtmkeyr   paramss          r!   get_raw_datazIqiyiIE.get_raw_data   s    t#$0c"gmd*+5
 ""/vQxjB'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
| d| d| d|d| d|       }| 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/r   zDownload playlist page z!Failed to download playlist page r   r   r5   vlistvurl)r   r   _search_regexrF   r9   
url_result	itertoolscount_download_webpage_parse_jsonr   rE   rZ   playlist_result)r*   webpage	PAGE_SIZElinksalbum_idalbum_titleentriespage_numpagelist_pagepagelistr   items               r!   _extract_playlistzIqiyiIE._extract_playlist2  sL   	

` %%#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%	 ##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   rX   r   r   A00111z!Unable to load data. Error code: r5   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   rD   r   raise_geo_restrictedr3   rE   _FORMATS_MAPr   _sleepr   r   r   _html_search_regex)r*   r   r   r   r   r   r  _raw_datar5   streamr  r   s                r!   _real_extractzIqiyiIE._real_extractS  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, 
&(&!'?!# #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  rl   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                       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300r4  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)rZ  r[  r   r   z-https://stc.iqiyipic.com/_next/static/chunks/rC   z.jszDownloading #z
 module JSzUnable to download module JSr   r   r   rM   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   rk  )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 |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)rZ  r[  r   r   valueexpected_typer
  )r`  rk  r   r   r3   	_BID_TAGSr   )r*   r   r   extracted_bid_tagsbids        r!   _update_bid_tagszIqIE._update_bid_tags,  s    !..I'':L(B8Xb	 / d
 " *
 03.PS]a]k]k]o]ops]tuu
 
s   6A4Nc                 b    | j                  d      j                  |      }|r|j                  S |S )Nzhttps://iq.com/)_get_cookiesr   ro  )r*   namer
  cookies       r!   _get_cookiezIqIE._get_cookie9  s/    ""#4599$?%v||272r#   c                 Z   | j                  |      }| j                  ||      }| j                  ||       | j                  ||      d   }|d   d   }|d   }t	        | j                  | j                  dd      |t        j                  j                  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+| j1                  d3j3                  t5        |d d4                   t7        t	        |d5t                    D ]  |
j                        }|s| j1                  d6 d7       -t	        | j                  t+        d+|      |d8| j"                      d9d:      d/t8              }t	        |d;d<fd=ft8        d1      xs i }g }|j                  d>      rA|j;                  | j=                  t+        |j                  d?d@      |d>         dAdB             |j                  dC      r@|j;                  | j?                  t+        |j                  d?d@      |dC         dD             |j                  dE      r|j                  dFdG      }|dGk(  r-| jA                  |dE   dAdH      \  }}|j;                  |       n||dIk(  rct	        | j                  |dE   |dJ      dKt              }|s| jC                  ||j                  d?d@            \  }}|j;                  |       n| j1                  | dL       |sU|j                  dM      r"| j1                  | j"                      dN       n"| j1                  dO| j"                      dP       |D ]m  }|jE                   tG        tI        | j"                  j%                                           | j"                     dQtK        |j                  dR                   o |j;                  |        t	        |dSt8              D ]  }| jL                  j                  t        |j                  dT            |j                  dU            }|jO                  |g       j;                  dVD cg c]8  \  }}|j                  |      r"|t+        |j                  dWdX      ||         dY: c}}        |j                  dZ      r"|j                  d[      r|j                  d[      n|}||d\   |||j                  d]      tQ        |j                  d^            tS        |j                  d_            t	        |d`t,              tU        |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   )r5   uidr   r	  z https://pcw-api.iq.com/api/vtypezDownloading VIP datazUnable to download VIP datar   r   rR   intllangen_usQC005rM   )batch
platformIdmodeCodelangCodedeviceId)r   r   r   r   )r5   all_vip.vipType)rq  0i )timeoutz9Executing signature code (this may take a couple minutes)z<!DOCTYPE html>tvIdr   )initialProps	pagePropsptid04022001010011000000rp  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   r5   )boss_ts)Nr5   )previewTimertime)rq  get_all)r  r5   prvzThis preview video is limited{}z 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 datar\  r  r  c                 &    t        |d         k(  S )Nrt  rO   )r  vrt  s     r!   r   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.r5   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  	mergeDescrZ   rating)playScoreInfoscoreisoUploadDate)videoTagMap..rx  )actorArr.rx  order	albumName)r   r   r  	subtitlesr+  r,  r1  r2  r)   
categoriescastr.  r0  )+	_match_idr   ru  _search_nextjs_datar   r   rz  r   r   unquoter   r   r   r   _DASH_JSr3   rQ   rr  keysrm  stripr   r
   r   r   r3  r   setdictextend_extract_m3u8_formats_extract_mpd_formats!_parse_m3u8_formats_and_subtitles _parse_mpd_formats_and_subtitlesupdater   rF   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=  s   >>#&((h7gx0--gx@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"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 A H HVbdhjzI{ |} |$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  rk  rm  ru  rz  r  rl   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-  r0  r  r1  r2  r5  )r   r   r6  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   rM   zUnable to download video listr   tofrom)r  r  r  endOrder
startOrder)r   r   r   r5   epgz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| t
        j                               S | j                  | j                  |d   |d	   |t        |d
      t        |d            ||j                  d      |j                  d            S )Nr|  r}  albumvideoAlbumInfo	videoTypesingleVideozhttps://www.iq.com/play/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??%=hZ#H$++-XX##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  rl   r#   r!   r  r    ss    GMJD I

 ! H#A#%$Z#
 55!F6` Fr#   r  )$r   r   r   ro   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   r$  r  rl   r#   r!   <module>r     s      	   ! &     .2[P [P|   Fd
m d
Nr
= r
j	:F :Fr#   