
    yf                     N    d dl Z ddlmZ ddlmZmZmZmZmZm	Z	  G d de      Z
y)    N   )InfoExtractor   )ExtractorErrorint_or_nonesmuggle_urltraverse_objtry_callunsmuggle_urlc                   r    e Zd ZdZdZdddddddd	d
ddddg ddddddidddddddddddgZd Zd  Zy!)"LiTVIEzdhttps?://(?:www\.)?litv\.tv/(?:vod|promo)/[^/]+/(?:content\.do)?\?.*?\b(?:content_)?id=(?P<id>[^&]+)z3https://www.litv.tv/vod/%s/content.do?content_id=%sz_https://www.litv.tv/vod/drama/content.do?brc_id=root&id=VOD00041610&isUHEnabled=true&autoPlay=1VOD00041606u	   花千骨)idtitle3   )url	info_dictplaylist_count b90ff1e9f1d8f5cfcd0a44c3e2b34c7aVOD00041610mp4u   花千骨第1集zre:https?://.*\.jpg$uP  《花千骨》陸劇線上看。十六年前，平靜的村莊內，一名女嬰隨異相出生，途徑此地的蜀山掌門清虛道長算出此女命運非同一般，她體內散發的異香易招惹妖魔。一念慈悲下，他在村莊周邊設下結界阻擋妖魔入侵，讓其年滿十六後去蜀山，並賜名花千骨。)u   奇幻u   愛情u   中國u   仙俠z	Episode 1r   )r   extr   	thumbnaildescription
categoriesepisodeepisode_number
noplaylistTzGeorestricted to Taiwan)r   md5r   paramsskipz=https://www.litv.tv/promo/miyuezhuan/?content_id=VOD00044841& 88322ea132f848d6e3e18b32a832b918VOD00044841u+   芈月傳第1集　霸星芈月降世楚國u  楚威王二年，太史令唐昧夜觀星象，發現霸星即將現世。王后得知霸星的預言後，想盡辦法不讓孩子順利出生，幸得莒姬相護化解危機。沒想到眾人期待下出生的霸星卻是位公主，楚威王對此失望至極。楚王后命人將女嬰丟棄河中，居然奇蹟似的被少司命像攔下，楚威王認為此女非同凡響，為她取名芈月。)r   r   r   r   zNo longer exists)r   r   r   r!   c                     t        |dddd f      D cg c]1  }| j                  t        | j                  ||d   fz  ddi            3 }}| j	                  ||d   |j                  d            S c c}w )	Nseasons.r   c                     |d   S )N	contentId )_vs     7/usr/lib/python3/dist-packages/yt_dlp/extractor/litv.py<lambda>z*LiTVIE._extract_playlist.<locals>.<lambda><   s    `abm`n     r'   force_noplaylistTr   )r	   
url_resultr   _URL_TEMPLATEplaylist_resultget)selfplaylist_datacontent_typer   all_episodess        r+   _extract_playlistzLiTVIE._extract_playlist7   s    
 (	3	Sn7op	r  OOK""lGK4H%II#T*, -r r ##L-2LmN_N_`gNhiirs   6A1c                 h    t        |i       \  }} j                  |      } j                  ||      } j                  d|ddd      rt	        dd       j                   j                  d	|d
d      |      }d|vr j                  d|d|iddi      }|d   } j                  |||      r. j                  d|d|iddi      } j                  ||d         S  j                   j                  d|dd      |      }|sd|d   i}	t         fd      }
|
r|	j                  d|
d       d}n|	j                  |d   |d   d       d} j                  d| |t        j                  |	      j                  d       d!di"      }|j                  d#      s]|j                  d$      }|d%k(  r j                  d&       |rt	         j                   d'|d      t	        d( j                   z         j#                  |d#   |d)d*d+,      }|D ]  }d-|j%                  d.i       d/<    |d0   |j                  d1d2      z   }|j                  d3      }|j                  d4      }|j                  d5g       D cg c]  }|d6   	 }}t'        |j                  d7            }|||||||d8S c c}w )9NzY(?i)<meta\s[^>]*http-equiv="refresh"\s[^>]*content="[0-9]+;\s*url=https://www\.litv\.tv/"zmeta refresh redirectFr   )defaultgroupzNo such content foundT)expectedzvar\s+programInfo\s*=\s*([^;]+)zVOD dataz{})r9   assetIdz+https://www.litv.tv/vod/ajax/getProgramInfor'   Acceptzapplication/json)queryheadersseriesIdz*https://www.litv.tv/vod/ajax/getSeriesTreecontentTypez*uiHlsUrl\s*=\s*testBackendData\(([^;]+)\);z
video datac                  @     j                  d      d   j                  S )Nzhttps://www.litv.tv/PUID)_get_cookiesvalue)r3   s   r+   r,   z&LiTVIE._real_extract.<locals>.<lambda>e   s    D$5$56L$Mf$U$[$[ r-   auth)typepuidgetUrlwatchDevices)rJ   rA   getMainUrlNoAuthzhttps://www.litv.tv/vod/ajax/zutf-8zContent-Type)datar?   fullpatherrorMessagezvod.error.outsideregionerrorz&This video is available in Taiwan onlyz said: zUnexpected result from %sr   m3u8_nativehls)r   entry_protocolm3u8_ididentityhttp_headerszAccept-Encodingr   secondaryMark r   	imageFilecategorynamer   )r   formatsr   r   r   r   r   )r   	_match_id_download_webpage_search_regexr   _parse_json_download_json_yes_playlistr7   r
   updatejsondumpsencoder2   raise_geo_restrictedIE_NAME_extract_m3u8_formats
setdefaultr   )r3   r   smuggled_datavideo_idwebpageprogram_info	series_idr4   
video_datapayloadrH   endpoint	error_msgrZ   a_formatr   r   r   itemr   r   s   `                    r+   _real_extractzLiTVIE._real_extract@   sV   *33]>>#&((h7l0%q  J !!84HH''(:(:.T ); )S L(..=x"H-!#56 / 8L
 !,	i=A //<h!9-BT7U 0 WM ))-m9TUU%%d&8&89\4 '9 '12:<
  ,y"9:G[\D"    $$0$@#/#>   .,,/z:HZZ(//8');< - >J
 ~~j)"~6I::))*RS$dllI%NY]^^ !<t||!KLL,,z"H%(% - 9   	THISH34EF	T W%(8(8"(MM"&&}5 $$[1	/;/?/?
B/OPtd6lP
Pl..y9: &"$%
 	
 Qs   =J/N)__name__
__module____qualname__
_VALID_URLr0   _TESTSr7   rt   r(   r-   r+   r   r      s    xJIM q 
  q1'0 nB"	
 $
 *!$ O1B s	
 #
1"FHjT
r-   r   )rb   commonr   utilsr   r   r   r	   r
   r   r   r(   r-   r+   <module>r|      s#     ! F
] F
r-   