U
    gM                     @   s<   d dl mZ ddlmZmZmZmZmZ G dd deZdS )   )InfoExtractor   )ExtractorErrorint_or_nonetry_geturl_or_noneurlencode_postdatac                   @   sZ   e Zd ZdZdZdZdZdddddd	d	d
ddiddgZdd Zi fddZ	dd Z
dS )HiDiveIEzPhttps?://(?:www\.)?hidive\.com/stream/(?P<id>(?P<title>[^/]+)/(?P<key>[^/?#&]+))FZhidivez$https://www.hidive.com/account/loginzIhttps://www.hidive.com/stream/the-comic-artist-and-his-assistants/s01e001z+the-comic-artist-and-his-assistants/s01e001mp4z#the-comic-artist-and-his-assistantsr   )idexttitleseriesseason_numberepisode_numberZskip_downloadTzRequires Authentication)urlZ	info_dictparamsskipc              
   C   s   |  | jd }| jd|dd d}|s(d S | |}|||d | j | jd dt|d}| jd|dd d}|d krxd S | jd	d t|| d
|dddd d S )Nz7(?s)<form[^>]+action="/account/login"[^>]*>(.+?)</form>z
login formdefault)ZEmailZPasswordz
Logging in)dataz%<button [^>]+?data-profile-id="(\w+)"z
profile idz)https://www.hidive.com/ajax/chooseprofilez \<button [^>]+?data-hash="(\w+)"zprofile id hashz
/dashboard)Z	profileIdhashZ	returnUrl)Z_download_webpage
_LOGIN_URL_search_regexZ_hidden_inputsupdater   Z_request_webpage)selfusernamepasswordZwebpageformr   Zlogin_webpageZ
profile_id r   ;/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/hidive.py_perform_login#   sR      
         zHiDiveIE._perform_loginc                 K   s0   |||dd}| j d|fdt|i|p.i S )NZ(f4f895ce1ca713ba263b91caeb1daa2d08904783)ZTitleZKeyZPlayerIdz$https://www.hidive.com/play/settingsr   )Z_download_jsonr   )r   video_idr   keyr   kwargsr   r   r    	_call_api?   s     zHiDiveIE._call_apic                 C   s  |  |ddd\}}}| |||}|d}|dkrB|   |rf|dkrft| j d| dd	g d h }}|d
  D ]\}	}
|	d\}}}t	t
|
dd }||kr~|| | j||dd|	dd}|D ]}||d< | d| |d< q|| q~i }|d
  D ]\}	}
|	d\}}}|
dp6g D ]`}t	t
|dd }t
|dd dd ft}||kr8|r8|| ||g d|i q8q|||||t| jd|dd dt| jd|dd dd|id S )!Nr   r   r#   ZrestrictionReasonZRegionRestrictedNonez said: T)expectedZ
renditions_c                 S   s   | d d S )NZbitratesZhlsr   xr   r   r    <lambda>X       z(HiDiveIE._real_extract.<locals>.<lambda>r
   Zm3u8_nativeF)Zentry_protocolZm3u8_idfatallanguagez, Zformat_noteZccFilesc                 S   s   | d S )Nr   r   r)   r   r   r    r+   f   r,   c                 S   s   | d  dd S )Nr    -)replacelowerr)   r   r   r    r+   g   r,   c                 S   s   | d S )N    r   r)   r   r   r    r+   g   r,   r   zs(\d+)zseason numberr   ze(\d+)zepisode numberZReferer)r   r   	subtitlesformatsr   r   r   Zhttp_headers)Z_match_valid_urlgroupr%   getZraise_geo_restrictedr   ZIE_NAMEitemssplitr   r   addZ_extract_m3u8_formatsextendstr
setdefaultappendr   r   )r   r   r"   r   r#   settingsZrestrictionr5   Zparsed_urlsZrendition_idZ	renditionaudioversionextraZm3u8_urlZfrmtfr4   Zcc_fileZcc_urlZcc_langr   r   r    _real_extractJ   sd    
 
     
zHiDiveIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_GEO_BYPASSZ_NETRC_MACHINEr   Z_TESTSr!   r%   rD   r   r   r   r    r	      s(   	 r	   N)	commonr   utilsr   r   r   r   r   r	   r   r   r   r    <module>   s   	