U
    $Pfn                     @   sL   d dl mZ d dlZddlmZ ddlmZmZmZm	Z	 G dd deZ
dS )	    )unicode_literalsN   )InfoExtractor   )ExtractorErrorint_or_nonesmuggle_urlunsmuggle_urlc                
   @   sp   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idddddddddddgZd!ddZdd Zd S )"LiTVIEzdhttps?://(?:www\.)?litv\.tv/(?:vod|promo)/[^/]+/(?:content\.do)?\?.*?\b(?:content_)?id=(?P<id>[^&]+)z+https://www.litv.tv/vod/%s/content.do?id=%sz_https://www.litv.tv/vod/drama/content.do?brc_id=root&id=VOD00041610&isUHEnabled=true&autoPlay=1ZVOD00041606u	   花千骨)idtitle2   )url	info_dictZplaylist_countZ 969e343d9244778cb29acec608e53640ZVOD00041610mp4u   花千骨第1集zre:https?://.*\.jpg$z$md5:c7017aa144c87467c4fb2909c4b05d6fr   )r   extr   	thumbnaildescriptionepisode_number
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   )r   r   r   r   c                    sL    d }|d }|r& d||f   fdd|d D }|||S )Nr   	contentIdzEDownloading playlist %s - add --no-playlist to just download video %sc              	      s2   g | ]*} tj d  |d f ddiqS )contentTyper   force_noplaylistT)Z
url_resultr   _URL_TEMPLATE).0episodeprogram_infoself =/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/litv.py
<listcomp>=   s
   z,LiTVIE._extract_playlist.<locals>.<listcomp>r   )	to_screenZplaylist_result)r!   season_listvideo_idr    promptZepisode_titleZ
content_idZall_episodesr"   r   r#   _extract_playlist6   s    zLiTVIE._extract_playlistc                 C   s  t |i \}}| |}| jjd}d}d|kr>|d }d}| ||}| | jd|ddd|}t|d	i 	 }|r|s| j
|d
 |||dS |r| d|  d|kr| jd|d|iddid}| | jd|ddd|}	|	s$|d |d |d d}
| jd|t|
dddid}	|	dsx|	d}|dkrN| d |rjtd | j|f dd!td"| j | j|	d |d#d$d%d&}|D ]}d|d'i d(< q|d) |d*d+ }|d,}|d-}d.d/ |d0g D }t|d1}|||||||d2S )3Nr   Tr   Fzvar\s+programInfo\s*=\s*([^;]+)zVOD dataz{})defaultZ
seasonListr   )r(   z2Downloading just video %s because of --no-playlistassetIdz+https://www.litv.tv/vod/ajax/getProgramInfor   Acceptzapplication/json)queryheadersz*uiHlsUrl\s*=\s*testBackendData\(([^;]+)\);z
video datawatchDevicesr   )r+   r/   r   z"https://www.litv.tv/vod/getMainUrlzutf-8zContent-Type)datar.   fullpathZerrorMessagezvod.error.outsideregionerrorz&This video is available in Taiwan onlyz%s said: %s)expectedzUnexpected result from %sr   Zm3u8_nativeZhls)r   Zentry_protocolZm3u8_idZhttp_headerszYoutubedl-no-compressionr   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   
categoriesr   )r	   Z	_match_idZ_downloaderr   getZ_download_webpageZ_parse_jsonZ_search_regexlistvaluesr)   r%   Z_download_jsonjsondumpsencodeZraise_geo_restrictedr   ZIE_NAMEZ_extract_m3u8_formats
setdefaultr   )r!   r   r0   r'   r   Znoplaylist_promptZwebpager    r&   Z
video_datapayload	error_msgr7   Za_formatr   r   r   r8   r   r"   r"   r#   _real_extractE   s    
         


   

zLiTVIE._real_extractN)T)__name__
__module____qualname__Z
_VALID_URLr   Z_TESTSr)   rB   r"   r"   r"   r#   r
      sD   	 "
r
   )
__future__r   r<   commonr   utilsr   r   r   r	   r
   r"   r"   r"   r#   <module>   s   