U
    g                     @   sH   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 deZ
dS )    N   )InfoExtractor   )ExtractorErrorint_or_nonesmuggle_urltraverse_objtry_callunsmuggle_urlc                   @   sz   e Zd ZdZdZdddddddd	d
ddddddddgdddddidddddddddd d!gZd"d# Zd$d% Zd&S )'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=1ZVOD00041606u	   花千骨)idtitle3   )url	info_dictZplaylist_countZ b90ff1e9f1d8f5cfcd0a44c3e2b34c7aZVOD00041610mp4u   花千骨第1集zre:https?://.*\.jpg$uP  《花千骨》陸劇線上看。十六年前，平靜的村莊內，一名女嬰隨異相出生，途徑此地的蜀山掌門清虛道長算出此女命運非同一般，她體內散發的異香易招惹妖魔。一念慈悲下，他在村莊周邊設下結界阻擋妖魔入侵，讓其年滿十六後去蜀山，並賜名花千骨。u   奇幻u   愛情u   中國u   仙俠z	Episode 1r   )r   extr   	thumbnaildescription
categoriesepisodeepisode_numberZ
noplaylistTzGeorestricted to Taiwan)r   md5r   paramsskipz=https://www.litv.tv/promo/miyuezhuan/?content_id=VOD00044841&Z 88322ea132f848d6e3e18b32a832b918ZVOD00044841u+   芈月傳第1集　霸星芈月降世楚國u  楚威王二年，太史令唐昧夜觀星象，發現霸星即將現世。王后得知霸星的預言後，想盡辦法不讓孩子順利出生，幸得莒姬相護化解危機。沒想到眾人期待下出生的霸星卻是位公主，楚威王對此失望至極。楚王后命人將女嬰丟棄河中，居然奇蹟似的被少司命像攔下，楚威王認為此女非同凡響，為她取名芈月。)r   r   r   r   zNo longer exists)r   r   r   r   c                    s>    fddt |ddddd fD }||d |d	S )
Nc              	      s.   g | ]&} tj |d  f ddiqS )	contentIdZforce_noplaylistT)Z
url_resultr   _URL_TEMPLATE).0r   content_typeself 9/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/litv.py
<listcomp>8   s
   z,LiTVIE._extract_playlist.<locals>.<listcomp>Zseasons.r   c                 S   s   |d S )Nr   r!   )_vr!   r!   r"   <lambda><       z*LiTVIE._extract_playlist.<locals>.<lambda>r   r   )r   Zplaylist_resultget)r    playlist_datar   Zall_episodesr!   r   r"   _extract_playlist7   s    zLiTVIE._extract_playlistc                    sF  t |i \}} |} ||} jd|ddddrDtddd  jd	|d
dd|}d|kr jd|d|iddid}|d } |||r jd|d|iddid} ||d S   jd|ddd|}|sZd|d i}	t	 fdd}
|
r|	
d|
d d}n|	
|d |d d d} jd | |t|	 d!did"}|d#s|d$}|d%kr d& |rt j d'| ddtd( j  j|d# |d)d*d+d,}|D ]}d-|d.i d/< q|d0 |d1d2 }|d3}|d4}d5d6 |d7g D }t|d8}|||||||d9S ):NzY(?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{})r+   ZassetIdz+https://www.litv.tv/vod/ajax/getProgramInfor   Acceptzapplication/json)queryheadersZseriesIdz*https://www.litv.tv/vod/ajax/getSeriesTreecontentTypez*uiHlsUrl\s*=\s*testBackendData\(([^;]+)\);z
video datac                      s     dd jS )Nzhttps://www.litv.tv/ZPUID)Z_get_cookiesvaluer!   r    r!   r"   r&   e   r'   z&LiTVIE._real_extract.<locals>.<lambda>auth)typepuidZgetUrlwatchDevices)r7   r1   ZgetMainUrlNoAuthzhttps://www.litv.tv/vod/ajax/zContent-Type)datar0   fullpathZerrorMessagezvod.error.outsideregionerrorz&This video is available in Taiwan onlyz said: zUnexpected result from r   Zm3u8_nativeZhls)r   Zentry_protocolZm3u8_ididentityZhttp_headerszAccept-Encodingr   ZsecondaryMark r   Z	imageFilec                 S   s   g | ]}|d  qS )namer!   )r   itemr!   r!   r"   r#      s     z(LiTVIE._real_extract.<locals>.<listcomp>categoryr   )r   formatsr   r   r   r   r   )r
   Z	_match_idZ_download_webpageZ_search_regexr   Z_parse_jsonZ_download_jsonZ_yes_playlistr*   r	   updatejsondumpsencoder(   Zraise_geo_restrictedZIE_NAMEZ_extract_m3u8_formats
setdefaultr   )r    r   Zsmuggled_dataZvideo_idZwebpageZprogram_infoZ	series_idr)   Z
video_datapayloadr6   Zendpoint	error_msgr?   Za_formatr   r   r   r   r   r!   r3   r"   _real_extract@   s    
            


   

zLiTVIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLr   Z_TESTSr*   rG   r!   r!   r!   r"   r      sH   
 $	r   )rA   commonr   utilsr   r   r   r   r	   r
   r   r!   r!   r!   r"   <module>   s    
