3
b`.                 @   sd   d dl mZ d dlZd dlZddlmZ 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 )
    )unicode_literalsN   )InfoExtractor   )compat_HTTPError)determine_extint_or_none
js_to_jsonExtractorErrorurlencode_postdatac               @   sr   e Zd ZdZdZdZdddddd	d
dddiddddddddddiddddgZdd Zdd Zdd Z	dS )FunimationIEzKhttps?://(?:www\.)?funimation(?:\.com|now\.uk)/shows/[^/]+/(?P<id>[^/?#&]+)
funimationNz4https://www.funimation.com/shows/hacksign/role-play/Z91144z	role-playmp4z.hack//SIGN - Role Playz$md5:b602bdc15eef4c9bbb201bb6e6a4a2ddzre:https?://.*\.jpg)id
display_idexttitledescription	thumbnailskip_downloadT)url	info_dictparamszShttps://www.funimation.com/shows/attack-on-titan-junior-high/broadcast-dub-preview/Z210051zbroadcast-dub-previewz4Attack on Titan: Junior High - Broadcast Dub Previewzre:https?://.*\.(?:jpg|png))r   r   r   r   r   zJhttps://www.funimationnow.uk/shows/puzzle-dragons-x/drop-impact/simulcast/)r   only_matchingc             C   s   | j  \}}|d krd S y*| jdd dt||dd}|d | _W nb tk
r } zFt|jtr|jjdkr| j	|jj
 j d d }t|dd	 W Y d d }~X nX d S )
Nz>https://prod-api-funimationnow.dadcdigital.com/api/auth/login/z
Logging in)usernamepassword)datatokeni  errorT)expected)_get_login_info_download_jsonr   _TOKENr
   
isinstancecauser   code_parse_jsonreaddecode)selfr   r   r   er    r+   KC:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\extractor\funimation.py_login8   s    zFunimationIE._loginc             C   s   | j   d S )N)r-   )r)   r+   r+   r,   _real_initializeJ   s    zFunimationIE._real_initializec                sr   j |} j|| fdd} j jdddd|tddpFi }|jd	pf jd
dgdd d}|s jdddgdd} jd|d}|jdp|dp j }}|d}	|	rd|	|f } jddgdd}
yNi } jrd j |d<  j	d| ||ddj
dd tdD id d! }W n tk
r } zft|jtr|jjd"kr j|jj |d# d$ }td% j|jd&p|jdf dd' W Y d d }~X nX g }xl|D ]d}|jd(}|sҐq|jd)pt|}|d*kr|j j||d+d,dd- n|j||d. qW  j| ||||
 j|	t|jd/pR|d0t|jd1||jd2|d3S )4Nc                s    j d|  | d dS )Nz*KANE_customdimensions\.%s\s*=\s*'([^']+)';)default)_search_regex)name)r)   webpager+   r,   _search_kaneQ   s    z0FunimationIE._real_extract.<locals>._search_kanezTITLE_DATA\s*=\s*({[^}]+})z
title data )r/   F)fatalr   z,KANE_customdimensions.videoID\s*=\s*'(\d+)';z<iframe[^>]+src="/player/(\d+)video_idz
al:web:urlzog:video:urlzog:video:secure_urlTz/player/(\d+)zvideo idr   
videoTitleshowNamez%s - %sr   zog:descriptionzToken %sAuthorizationz1https://www.funimation.com/api/showexperience/%s/Zpinst_idc             S   s   g | ]}t jtjtj qS r+   )randomchoicestringdigitsascii_letters).0_r+   r+   r,   
<listcomp>t   s    z.FunimationIE._real_extract.<locals>.<listcomp>   )headersqueryitemsi  errorsr   z%s said: %sdetail)r   srcZ	videoTypem3u8r   hls)m3u8_idr5   )	format_idr   Z	seasonNumseasonZ
episodeNumZseriesId)r   r   r   r   r   seriesseason_numberepisode_numberepisode	season_idformats)	_match_id_download_webpager&   r0   r	   get_html_search_meta_og_search_titler"   r!   joinranger
   r#   r$   r   r%   r'   IE_NAMEr   extend_extract_m3u8_formatsappend_sort_formats_og_search_thumbnailr   )r)   r   r   r3   Z
title_datar6   
player_urlr   rQ   rN   r   rC   sourcesr*   r   rS   source
source_urlsource_typer+   )r)   r2   r,   _real_extractM   s~    


 
$



zFunimationIE._real_extract)
__name__
__module____qualname__
_VALID_URL_NETRC_MACHINEr"   _TESTSr-   r.   rf   r+   r+   r+   r,   r      s.   


r   )
__future__r   r:   r<   commonr   compatr   utilsr   r   r	   r
   r   r   r+   r+   r+   r,   <module>   s   	