o
    i                     @   s\   d dl mZ ddlmZ ddlmZmZmZmZm	Z	m
Z
mZ ddlmZ G dd deZdS )	   )InfoExtractor   )	HTTPError)ExtractorErrorUserNotLiveint_or_nonejoin_nonemptyparse_iso8601str_or_noneurl_or_none)traverse_objc                   @   sJ   e Zd ZdZdZdZdddddd	ed
ddd	dddddgZdd ZdS )FlexTVIE	ttingliveu   띵라이브 (formerly FlexTV)zNhttps?://(?:www\.)?(?:ttinglive\.com|flextv\.co\.kr)/channels/(?P<id>\d+)/livez-https://www.flextv.co.kr/channels/231638/live231638mp4u   re:^214하나만\.\.\. zre:^https?://.+\.jpgzre:\d{8}is_liveu   Hi별244396)	idexttitle	thumbnailupload_date	timestamplive_statuschannel
channel_idzThe channel is offline)url	info_dictskipz*https://www.flextv.co.kr/channels/746/liveT)r   only_matchingc           	      C   sz  |  |}z| jd| d|ddid}W n ty3 } zt|jtr.|jjdkr.t|d d }~ww g }t|dd	t	hfD ]Y}|
d
dkr_t|
dr_|| j|d |ddddd dD ]6}t|d|ddd fD ](}|t||
ddd|d t|
d|dkrdnd|dkrdndd qnqaq?||ddt|dd thfdd!thfd"thfd#d$thfd#d%thfd&S )'Nz'https://api.ttinglive.com/api/channels/z/streamoptionall)queryi  )video_idsources.formativsr   r   TF)livefatalm3u8_id)hlsflv	urlDetail
resolutionc                 S   s   t |d S )Nr   )r   )_v r0   K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/flextv.py<lambda>9   s    z(FlexTVIE._real_extract.<locals>.<lambda>
suffixName )delimr*   r+   m3u8_nativehttp)	format_idr   heightr   protocol)r   formatsr   streamr   	createdAtthumbUrlownernamer   )r   r   r   r   r   )	_match_id_download_jsonr   
isinstancecauser   statusr   r   dictgetr   extend_extract_m3u8_formatsappendr   r   strr	   r
   )	selfr   r   stream_dataer;   r<   format_typedatar0   r0   r1   _real_extract&   sV   









zFlexTVIE._real_extractN)	__name__
__module____qualname__IE_NAMEIE_DESC
_VALID_URLint_TESTSrQ   r0   r0   r0   r1   r      s,    r   N)commonr   networking.exceptionsr   utilsr   r   r   r   r	   r
   r   utils.traversalr   r   r0   r0   r0   r1   <module>   s
    $	