a
    h                     @   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 )FlexTVIEZ	ttingliveu   띵라이브 (formerly FlexTV)zNhttps?://(?:www\.)?(?:ttinglive\.com|flextv\.co\.kr)/channels/(?P<id>\d+)/livez-https://www.flextv.co.kr/channels/231638/liveZ231638mp4u   re:^214하나만\.\.\. zre:^https?://.+\.jpgzre:\d{8}is_liveu   Hi별Z244396)	idexttitle	thumbnailZupload_date	timestampZlive_statuschannel
channel_idzThe channel is offline)urlZ	info_dictskipz*https://www.flextv.co.kr/channels/746/liveT)r   Zonly_matchingc           	      C   s  |  |}z | jd| d|ddid}W nH tyr } z0t|jtr\|jjdkr\t|d W Y d }~n
d }~0 0 g }t|dd	t	hfD ]}|
d
dkrt|
dr|| j|d |ddddd dD ]p}t|d|ddd fD ]T}|t||
ddd|d t|
d|dkr"dnd|dkr2dndd qqq||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  )Zvideo_idsources.formatZivsr   r   TF)ZlivefatalZm3u8_id)hlsflvZ	urlDetail
resolutionc                 S   s   t |d S )Nr   )r   )_v r$   L/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/flextv.py<lambda>9       z(FlexTVIE._real_extract.<locals>.<lambda>Z
suffixName )delimr   r    Zm3u8_nativehttp)Z	format_idr   heightr   protocol)r   formatsr   streamr   Z	createdAtZthumbUrlownernamer   )r   r   r   r   r   )Z	_match_idZ_download_jsonr   
isinstancecauser   statusr   r   dictgetr   extendZ_extract_m3u8_formatsappendr   r   strr	   r
   )	selfr   r   Zstream_dataer-   r.   Zformat_typedatar$   r$   r%   _real_extract&   sN    




	



zFlexTVIE._real_extractN)	__name__
__module____qualname__ZIE_NAMEZIE_DESCZ
_VALID_URLintZ_TESTSr<   r$   r$   r$   r%   r      s*   r   N)commonr   Znetworking.exceptionsr   utilsr   r   r   r   r	   r
   r   Zutils.traversalr   r   r$   r$   r$   r%   <module>   s   $	