U
    y^3$                     @   s   d dl mZ d dlZddlmZ ddlmZmZ ddlm	Z	m
Z
 G dd	 d	eZG d
d deZG dd deZG dd deZdS )    )unicode_literalsN   )InfoExtractor   )compat_kwargs
compat_str)ExtractorErrorint_or_nonec                   @   s   e Zd Zdd Zdd ZdS )	ViuBaseIEc                 C   s>   | j dd dddddddddd	d
	|  d}| d | _d S )Nz,https://www.viu.com/api/apps/v2/authenticatezRequesting Viu authtestviu_desktopjsonZguestdefaultdesktopz1.0)	ZacctappidfmtZiidZ
languageidplatformuseridZ
useridtypeverqueryheaders
X-VIU-AUTH)_request_webpagegeo_verification_headersinfo_auth_token)selfZviu_auth_res r   KC:\Users\TaGoRe\Desktop\beinconnect-dl\binaries\youtube_dl\extractor\viu.py_real_initialize   s"     
zViuBaseIE._real_initializec                 O   s|   |   }|d| ji ||di  ||d< | jd| f|t|d }|ddkrxtd| j|d f d	d
|S )Nr   r   zhttps://www.viu.com/api/responsestatussuccessz%s said: %smessageTexpected)r   updater   get_download_jsonr   r   IE_NAME)r   pathargskwargsr   r!   r   r   r   	_call_api"   s0      zViuBaseIE._call_apiN)__name__
__module____qualname__r    r.   r   r   r   r   r
      s   r
   c                   @   sX   e Zd ZdZdddddddd	id
ddddddddd	idddddgZdd ZdS )ViuIEz<(?:viu:|https?://[^/]+\.viu\.com/[a-z]{2}/media/)(?P<id>\d+)zEhttps://www.viu.com/en/media/1116705532?containerId=playlist-22168059Z
1116705532mp4zCitizen Khan - Ep 1z$md5:d7ea1604f49e5ba79c212c551ce2110eidexttitledescriptionskip_downloadm3u8 downloadzGeo-restricted to Indiaurl	info_dictparamsskipz'https://www.viu.com/en/media/1130599965Z
1130599965zJealousy Incarnate - Episode 1z$md5:d3d82375cab969415d2720b6894361e9Geo-restricted to Indonesiaz)https://india.viu.com/en/media/1126286865T)r<   only_matchingc              
   C   s   |  |}| jd|ddd|ddd d }|d	 }d }|d
pJ|d}|d}|d}|r||r||r|d|||f }n|d }| ||d}	| |	 i }
| D ]>\}}td|}|sq|
|	dg 
||	dd q|||d|d|t|dt|d|	|
d	S )Nz	clip/loadzDownloading video datar   r   r   r   r5   r   itemr   r7   ZurlpathdZurlpathtdirforwholeZ	jwhlsfilez%s/%s/%shrefr3   z,^subtitle_(?P<lang>[^_]+)_(?P<ext>(vtt|srt))langr6   r<   r6   r8   ZmoviealbumshownameZ	episodenoduration)	r5   r7   r8   seriesepisodeepisode_numberrI   formats	subtitles)	_match_idr.   r(   _extract_m3u8_formats_sort_formatsitemsrematch
setdefaultgroupappendr	   )r   r<   video_id
video_datar7   m3u8_urlZurl_pathrE   Zhls_filerM   rN   keyvaluemobjr   r   r   _real_extractQ   sV    
  



zViuIE._real_extractN)r/   r0   r1   
_VALID_URL_TESTSr^   r   r   r   r   r2   2   s8     r2   c                   @   s0   e Zd ZdZdZddddddd	Zd
d ZdS )ViuPlaylistIEzviu:playlistz9https?://www\.viu\.com/[^/]+/listing/playlist-(?P<id>\d+)z0https://www.viu.com/en/listing/playlist-22461380Z22461380zThe Good Wife)r5   r7      r@   )r<   r=   playlist_countr?   c                 C   s   |  |}| jd|dddd| ddd }g }|d	g D ]4}|d
}|sPq<t|}|| d| d| q<| |||dS )Nzcontainer/loadzDownloading playlist infor   r   z	playlist-rB   rC   	containerrD   r5   zviu:ZViur7   )rO   r.   r(   r   rW   
url_resultplaylist_result)r   r<   playlist_idplaylist_dataentriesrD   item_idr   r   r   r^      s8    
 
    zViuPlaylistIE._real_extractN)r/   r0   r1   r*   r_   _TESTr^   r   r   r   r   ra      s   
ra   c                   @   sb   e Zd ZdZdZddddddd	d
iddddddddd	d
iddgZdddddZdd ZdS )ViuOTTIEzviu:ottz\https?://(?:www\.)?viu\.com/ott/(?P<country_code>[a-z]{2})/[a-z]{2}-[a-z]{2}/vod/(?P<id>\d+)zIhttp://www.viu.com/ott/sg/en-us/vod/3421/The%20Prime%20Minister%20and%20IZ3421r3   zA New Beginningz$md5:1e7486a619b6399b25ba6a41c0fe5b2cr4   r9   r:   zGeo-restricted to Singaporer;   zMhttp://www.viu.com/ott/hk/zh-hk/vod/7123/%E5%A4%A7%E4%BA%BA%E5%A5%B3%E5%AD%90Z7123u   這就是我的生活之道z$md5:4eb0d8b08cf04fcdc6bbbeb16043434fzGeo-restricted to Hong Kongr   r         )HKSGTHPHc                 C   s  t | j| \}}dd|d}| j| }|r>||d< | jd| |d|dd }|d	}|srtd
dd| jd| |dd|d i|t 	d|
dddd d }|di }	g }
|di  D ]>\}}t| jd|dd d}|
|||dt|	|d q| |
 i }|dg D ]8}|d}|s@q(||dg |dd q(|d   }|||d!|d"i d|t|d#t|d$|d%|
|d&
S )'Nzvod/ajax-detailweb)rZplatform_flag_label
product_idarea_idz#http://www.viu.com/ott/%s/index.phpzDownloading video inforC   dataZcurrent_productz+This video is not available in your region.Tr%   z;https://d1k2us671qcoau.cloudfront.net/distribute_web_%s.phpzDownloading stream infoZccs_product_idzhttps?://[^/]+r   )RefererOriginr   streamsizer<   zs(\d+)pheight)r   r3   )	format_idr<   r|   r6   filesizesubtitlenamesrtrH   synopsisr8   rJ   numberrI   Zcover_image_url)
r5   r7   r8   rJ   rK   rL   rI   	thumbnailrM   rN   )rS   rT   r_   groups_AREA_IDr(   upperr)   r   searchrV   rR   r	   _search_regexrW   rQ   rU   strip)r   r<   country_coderX   r   rv   Zproduct_datarY   stream_dataZstream_sizesrM   
vid_format
stream_urlr|   rN   subsub_urlr7   r   r   r   r^      s      
  	   


zViuOTTIE._real_extractN)r/   r0   r1   r*   r_   r`   r   r^   r   r   r   r   rl      s>     rl   )
__future__r   rS   commonr   compatr   r   utilsr   r	   r
   r2   ra   rl   r   r   r   r   <module>   s   !S$