U
    g
                     @   sD   d dl mZ ddlmZ ddlmZmZmZmZ G dd deZ	dS )   )InfoExtractor   )	HTTPError)ExtractorErrorextract_attributestry_geturlencode_postdatac                   @   s0   e Zd ZdZdddddddid	Zd
d ZdS )
TVPlayerIEz6https?://(?:www\.)?tvplayer\.com/watch/(?P<id>[^/?#]+)z http://tvplayer.com/watch/bbconeZ89mp4z9re:^BBC One [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$)idexttitleZskip_downloadT)urlZ	info_dictparamsc                 C   sB  |  |}| ||}t| d|d}|d }|d }| jd|ddd}| jd|d	||d
d}|d }	t|dd tp|d}
z2| jd|dddit|d|
|	ddd d }W nn tk
r } zNt	|j
tr| |j
j  |d d }td| j|d dd W 5 d }~X Y nX | |d |d}||||ddS ) Nz2(<div[^>]+class="[^"]*current-channel[^"]*"[^>]*>)zchannel elementz	data-namezdata-idz'data-token=(["\'])(?P<token>(?!\1).+)\1token)groupz"https://tvplayer.com/watch/contextzDownloading JSON context)resourcegen)queryvalidatec                 S   s   | d d S )Nplatformkey )xr   r   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/tvplayer.py<lambda>2       z*TVPlayerIE._real_extract.<locals>.<lambda>Zfirefoxz*http://api.tvplayer.com/api/v2/stream/livezDownloading JSON streamzContent-Typez0application/x-www-form-urlencoded; charset=UTF-8r   )r   Zservicer   r   )headersdataZtvplayerresponsez{} said: {}errorT)expectedstreamr
   )r   
display_idr   formatsZis_live)Z	_match_idZ_download_webpager   Z_search_regexZ_download_jsonr   strr   r   
isinstancecauser   Z_parse_jsonr   readdecodeformatZIE_NAMEZ_extract_m3u8_formats)selfr   r#   ZwebpageZcurrent_channelr   Zresource_idr   contextr   r   r   er$   r   r   r   _real_extract   s    
        		
  zTVPlayerIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTr.   r   r   r   r   r	      s    r	   N)
commonr   Znetworking.exceptionsr   utilsr   r   r   r   r	   r   r   r   r   <module>   s   