o
    i                     @   sX   d dl Z d dl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 G dd deZdS )    N   )InfoExtractor   )ExtractorErrorint_or_nonejoin_nonemptysmuggle_urltraverse_objtry_callunsmuggle_urlurljoinc                   @   sz   e Zd ZdZdZdg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gZdd  Zd!d" Zd#S )$LiTVIEzahttps?://(?:www\.)?litv\.tv/(?:[^/?#]+/watch/|vod/[^/?#]+/content\.do\?content_id=)(?P<id>[\w-]+)zhttps://www.litv.tv/%s/watch/%sTWz+https://www.litv.tv/drama/watch/VOD00041610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
noplaylistT)r   md5r   paramsz+https://www.litv.tv/drama/watch/VOD00044841 88322ea132f848d6e3e18b32a832b918VOD00044841u+   芈月傳第1集　霸星芈月降世楚國u  楚威王二年，太史令唐昧夜觀星象，發現霸星即將現世。王后得知霸星的預言後，想盡辦法不讓孩子順利出生，幸得莒姬相護化解危機。沒想到眾人期待下出生的霸星卻是位公主，楚威王對此失望至極。楚王后命人將女嬰丟棄河中，居然奇蹟似的被少司命像攔下，楚威王認為此女非同凡響，為她取名芈月。)r   r   r   r   zNo longer exists)r   r    r   skipc                    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 )
content_idforce_noplaylistT)
url_resultr   _URL_TEMPLATE).0r   content_typeself I/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/litv.py
<listcomp>9   s    z,LiTVIE._extract_playlist.<locals>.<listcomp>seasons.episodesc                 S   s   |d S )Nr%   r-   )_vr-   r-   r.   <lambda>=   s    z*LiTVIE._extract_playlist.<locals>.<lambda>r%   r   )r	   playlist_resultget)r,   playlist_datar+   all_episodesr-   r*   r.   _extract_playlist8   s   zLiTVIE._extract_playlistc              	      s  t |i \}} |} ||} ||d d }t|dthfp%i }t|d}|r@ |d||r@ ||dS t|ddd	t	hf}|rOd
}	n|d }|d }	t
 fdd}
|
rdd}nt	t }
d} jd| |t||	|
d ddid}t|dthf }rt|dt	hf}|rd|v r d n|rt j d| ddtd j  j|d d d |dd d!}|D ]
}d"|d#i d$< q||td%d&d'|d(d)t|d*t	hfd+td,hfd-d.d/t	hfd0thfd1S )2Nprops	pagePropsprogramInformation
seriesTree	series_idr+   assetsr   asset_idvodr%   c                      s     dd jS )Nzhttps://www.litv.tv/PUID)_get_cookiesvaluer-   r,   r-   r.   r4   R   s    z&LiTVIE._real_extract.<locals>.<lambda>zget-urlszget-urls-no-authzhttps://www.litv.tv/api/)AssetId	MediaTypepuidzContent-Typezapplication/json)dataheaderserrormessageOutsideRegionErrorz&This video is available in Taiwan onlyz said: T)expectedzUnexpected error from result	AssetURLsr   hls)r   m3u8_ididentityhttp_headerszAccept-Encodingr   secondary_mark )delim	from_dict)r   formatsr   r   picturez https://p-cdnstatic.svc.litv.tv/genres.namer   )r   r   r   r   )r   	_match_id_download_webpage_search_nextjs_datar	   dict_yes_playlistr6   r9   strr
   uuiduuid4_download_jsonjsondumpsencoderaise_geo_restrictedr   IE_NAME_extract_m3u8_formats
setdefaultr   r   r   )r,   r   smuggled_datavideo_idwebpagevod_dataprogram_infor7   r@   
media_typerH   endpoint
video_datarK   	error_msgrY   a_formatr-   rE   r.   _real_extractA   s\   


zLiTVIE._real_extractN)	__name__
__module____qualname__
_VALID_URLr(   _GEO_COUNTRIES_TESTSr9   rw   r-   r-   r-   r.   r      sH    #	r   )rf   rc   commonr   utilsr   r   r   r   r	   r
   r   r   r   r-   r-   r-   r.   <module>   s
    (