a
    h                     @   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/%sZTWz+https://www.litv.tv/drama/watch/VOD00041610Z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
noplaylistT)r   md5r   paramsz+https://www.litv.tv/drama/watch/VOD00044841Z 88322ea132f848d6e3e18b32a832b918Z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_idZforce_noplaylistT)Z
url_resultr   _URL_TEMPLATE).0r   content_typeself J/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/litv.py
<listcomp>9   s
   z,LiTVIE._extract_playlist.<locals>.<listcomp>Zseasons.Zepisodesc                 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_playlist8   s    zLiTVIE._extract_playlistc              	      s  t |i \}} |} ||} ||d d }t|dthfpJi }t|d}|r |d||r ||dS t|ddd	t	hf}|rd
}	n|d }|d }	t
 fdd}
|
rd}nt	t }
d} jd| |t||	|
d ddid}t|dthf }rvt|dt	hf}|rHd|v rH d n|rft 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propsZ	pagePropsZprogramInformationZ
seriesTreeZ	series_idr!   Zassetsr   asset_idZvodr   c                      s     dd jS )Nzhttps://www.litv.tv/ZPUID)Z_get_cookiesvaluer#   r"   r#   r$   r(   R   r)   z&LiTVIE._real_extract.<locals>.<lambda>zget-urlszget-urls-no-authzhttps://www.litv.tv/api/)ZAssetIdZ	MediaTypepuidzContent-Typezapplication/json)dataheaderserrormessageZOutsideRegionErrorz&This video is available in Taiwan onlyz said: T)expectedzUnexpected error from resultZ	AssetURLsr   Zhls)r   Zm3u8_ididentityZhttp_headerszAccept-Encodingr   Zsecondary_mark )delim	from_dict)r   formatsr   r   Zpicturez https://p-cdnstatic.svc.litv.tv/Zgenres.namer   )r   r   r   r   )r   Z	_match_idZ_download_webpageZ_search_nextjs_datar	   dictZ_yes_playlistr*   r,   strr
   uuiduuid4Z_download_jsonjsondumpsencodeZraise_geo_restrictedr   ZIE_NAMEZ_extract_m3u8_formats
setdefaultr   r   r   )r"   r   Zsmuggled_dataZvideo_idZwebpageZvod_dataZprogram_infor+   r.   
media_typer1   ZendpointZ
video_datar4   	error_msgr<   Za_formatr#   r0   r$   _real_extractA   s\    


zLiTVIE._real_extractN)	__name__
__module____qualname__Z
_VALID_URLr   Z_GEO_COUNTRIESZ_TESTSr,   rH   r#   r#   r#   r$   r      sF   #	r   )rB   r@   commonr   utilsr   r   r   r   r	   r
   r   r   r   r#   r#   r#   r$   <module>   s   (