3
b`                 @   sX   d dl m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 G dd	 d	eZdS )
    )unicode_literalsN   )InfoExtractor)	KalturaIE   )HEADRequestsanitized_Requestsmuggle_urlurlencode_postdatac               @   s   e Zd ZdZdZddddddd	d
dddddd	ddidddddddd	ddddddddddd d!d
d"d#dd$d%d&d'd(d)dd*d	d&d+d,dd-d.d/d0d1d2d3idgZd4d5 Zd6d7 Zd8S )9
GDCVaultIEzGhttps?://(?:www\.)?gdcvault\.com/play/(?P<id>\d+)(?:/(?P<name>[\w-]+))?gdcvaultzDhttp://www.gdcvault.com/play/1019721/Doki-Doki-Universe-Sweet-SimpleZ 7ce8388f544c88b7ac11c7ab1b593704Z201311826596_AWNYzDoki-Doki-Universe-Sweet-Simplemp4z;Doki-Doki Universe: Sweet, Simple and Genuine (GDC Next 10))id
display_idexttitle)urlmd5	info_dictz>http://www.gdcvault.com/play/1015683/Embracing-the-Dark-Art-ofZ201203272_1330951438328RSXRzEmbracing-the-Dark-Art-offlvz5Embracing the Dark Art of Mathematical Modeling in AIskip_downloadT)r   r   paramsz@http://www.gdcvault.com/play/1015301/Thexder-Meets-Windows-95-orZ a5eb77996ef82118afbbe8e48731b98eZ1015301zThexder-Meets-Windows-95-orzNThexder Meets Windows 95, or Writing Great Games in the Windows 95 EnvironmentzRequires login)r   r   r   skipz!http://gdcvault.com/play/1020791/)r   only_matchingzChttp://gdcvault.com/play/1023460/Tenacious-Design-and-The-Interface a8efb6c31ed06ca8739294960b2dbabd840376_BQRCz"Tenacious-Design-and-The-Interfacez/Tenacious Design and The Interface of 'Destiny')r   r   r   r   z@http://www.gdcvault.com/play/1014631/Classic-Game-Postmortem-PACZ12396_1299111843500GMPXzCHow to Create a Good Game - From My Experience of Designing Pac-Man)r   r   r   )r   r   z=http://www.gdcvault.com/play/1435/An-American-engine-in-TokyoZ9350_1238021887562UHXBzAn-American-engine-in-TokyozdAn American Engine in Tokyo:/nThe collaboration of Epic Games and Square Enix/nFor THE LAST REMINANTzChttps://www.gdcvault.com/play/1026180/Mastering-the-Apex-of-ScalingZ
0_h1fg8j3pzCMastering the Apex of Scaling Game Servers (Presented by Multiplay)iJ\Z20190404zjoe@blazestreaming.com)r   r   r   	timestampupload_dateuploader_idformatzmp4-408c             C   s   | j  \}}|d ks|d kr2| jd| d  d S tjd|}|jdd }|jdd }||d}t|t|}	|	jdd	 | j|	|d
 | j||d}
| j||d |
S )NzIt looks like zH requires a login. Try specifying a username and password and try again.z(?P<root_url>https?://.*?/).*Zroot_urlzapi/login.phpZlogout)emailpasswordzContent-Typez!application/x-www-form-urlencodedz
Logging inz Getting authenticated video pagezLogging out)	_get_login_inforeport_warningrematchgroupr   r
   
add_header_download_webpage)selfwebpage_urlr   usernamer!   mobj	login_urlZ
logout_url
login_formrequest
start_page r1   IC:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\extractor\gdcvault.py_logink   s    zGDCVaultIE._loginc             C   s   t j| j|j \}}|p|}d| }| j||}| jd|dd d}|r| jd|d}d| }	| jt|	|j	 }	|||	|dS t
j|}
|
rt|
d	|i}
d
}nnd}| j||dd d}|d kr| j||}|d kr| jd n|}| j||d}| jd|d}d||f }
d}d|||
|dS )Nzhttp://www.gdcvault.com/play/z>s1\.addVariable\("file",\s*encodeURIComponent\("(/[^"]+)"\)\);r   )defaultz9<td><strong>Session Name:?</strong></td>\s*<td>(.*?)</td>r   zhttp://www.gdcvault.com)r   r   r   r   
source_urlKalturazG<iframe src="(?P<xml_root>.+?)/(?:gdc-)?player.*?\.html.*?".*?</iframe>zxml rootzCould not login.z=<iframe src=".*?\?xml(?:=|URL=xml/)(.+?\.xml).*?".*?</iframe>zxml filenamez	%s/xml/%sZDigitallySpeakingurl_transparent)_typer   r   r   ie_key)r$   r%   
_VALID_URLgroupsr(   _search_regex_html_search_regex_request_webpager   geturlr   _extract_urlr	   r3   r#   )r)   r   video_idnamer   r*   r0   Z
direct_urlr   	video_url	embed_urlr9   ZPLAYER_REGEXZxml_root	login_resZxml_namer1   r1   r2   _real_extract   sT    

zGDCVaultIE._real_extractN)__name__
__module____qualname__r:   _NETRC_MACHINE_TESTSr3   rF   r1   r1   r1   r2   r      s`   



	
r   )
__future__r   r$   commonr   kalturar   utilsr   r   r	   r
   r   r1   r1   r1   r2   <module>   s
   