
    VGh                     ^    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e      Zy)    N   )InfoExtractor   )ExtractorErrorint_or_nonejoin_nonemptysmuggle_urltraverse_objtry_callunsmuggle_urlurljoinc                   v    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 Zd  Zy!)"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                     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.episodesc                     |d   S )N
content_id )_vs     ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/litv.py<lambda>z*LiTVIE._extract_playlist.<locals>.<lambda>=   s    abcoap     r+   force_noplaylistTr   )r
   
url_resultr	   _URL_TEMPLATEplaylist_resultget)selfplaylist_datacontent_typer   all_episodess        r/   _extract_playlistzLiTVIE._extract_playlist8   s    
 (	3
Tp7qr	t  OOK""lGL4I%JJ#T*, -t t ##L-2M}O`O`ahOijjts   6A1c           
          t        |i       \  }} j                  |      } j                  ||      } j                  ||      d   d   }t	        |dt
        hf      xs i }t	        |d      }|rC j                  |j                  d      ||      r! j                  ||j                  d            S t	        |ddd	t        hf      }|rd
}	n
|d   }|d   }	t         fd      }
|
rd}nt        t        j                               }
d} j                  d| |t        j                  ||	|
d      j!                         ddi      }t	        |dt
        hf      x}rat	        |dt        hf      }|rd|v r j#                  d       n|rt%         j&                   d| d      t%        d j&                          j)                  |d   d   d   |dd       }|D ]  }d!|j+                  d"i       d#<    ||t-        d$d%d&|'      d(t	        |d)t        hfd*t/        d+      hfd,d-d.t        hfd/t0        hfd0      S )1Nprops	pagePropsprogramInformation
seriesTree	series_idr9   assetsr   asset_idvodr+   c                  @     j                  d      d   j                  S )Nzhttps://www.litv.tv/PUID)_get_cookiesvalue)r7   s   r/   r0   z&LiTVIE._real_extract.<locals>.<lambda>R   s     1 12H I& Q W W r1   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   r;   strr   uuiduuid4_download_jsonjsondumpsencoderaise_geo_restrictedr   IE_NAME_extract_m3u8_formats
setdefaultr   r   r   )r7   r   smuggled_datavideo_idwebpagevod_dataprogram_infor8   rC   
media_typerK   endpoint
video_datarN   	error_msgr\   a_formats   `                r/   _real_extractzLiTVIE._real_extractA   s   *33]>>#&((h7++GX>wGT#H/CdV.LMSQS$X>T//0@0@0MxYfg))-9I9I.9YZZxJ.NOJ#L1H%n5JWX!Htzz|$D)H((&xj18zSWXY``b#%78 ) :

 !gv->??5?$UY,>?I1Y>))*RS$~WYK%HSWXX #9$,,!HII,,x -a0(u - V 	THISH34EF	T
 "7,<BR^_

 < -u5''2T*U)VW'fse<#,{m"<	* 	

 
	
r1   N)	__name__
__module____qualname__
_VALID_URLr4   _GEO_COUNTRIES_TESTSr;   rz   r,   r1   r/   r   r      s    uJ5MVN< 
  =1'0 nB"	
 $
" =1B s	
 #
/!FFk4
r1   r   )ri   rf   commonr   utilsr   r   r   r	   r
   r   r   r   r   r,   r1   r/   <module>r      s+      !	 	 	d
] d
r1   