U
    g^!                     @   sX   d dl Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZ G dd	 d	eZdS )
    N   )InfoExtractor)	KalturaIE   )HEADRequestRequest)remove_startsmuggle_urlurlencode_postdatac                   @   s   e Zd 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/d0d1d2d3d4idd5d6dd7d8d1d9d:ddidd;ddg
Zd<d= Zd>d? Zd@S )A
GDCVaultIEFzGhttps?://(?:www\.)?gdcvault\.com/play/(?P<id>\d+)(?:/(?P<name>[\w-]+))?ZgdcvaultzDhttp://www.gdcvault.com/play/1019721/Doki-Doki-Universe-Sweet-SimpleZ 7ce8388f544c88b7ac11c7ab1b593704Z201311826596_AWNYzDoki-Doki-Universe-Sweet-SimpleZ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-ofZflvz5Embracing the Dark Art of Mathematical Modeling in AIZ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   Zonly_matchingzChttp://gdcvault.com/play/1023460/Tenacious-Design-and-The-InterfaceZ a8efb6c31ed06ca8739294960b2dbabdZ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-408z%https://www.gdcvault.com/play/1025699Z
0_zagynv0azTech ToolboxZ20190408iUӫ\)r   r   r   r   r   r   z?http://www.gdcvault.com/play/1014846/Conference-Keynote-Shigeruc                 C   s   |   \}}|d ks|d kr2| d| d  d S td|}|dd }|dd }||d}t|t|}	d|	jd	< | |	|d
 | ||d}
| ||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!application/x-www-form-urlencodedzContent-Typez
Logging inz Getting authenticated video pagezLogging out)	Z_get_login_inforeport_warningrematchgroupr   r
   headers_download_webpage)selfwebpage_urlr   usernamer   ZmobjZ	login_urlZ
logout_urlZ
login_formrequest
start_page r&   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/gdcvault.py_loginz   s     
zGDCVaultIE._loginc              	   C   sr  |  | \}}|p|}d| }| ||}| jd|dd d}|rz| d|d}d| }	| t|	|j}	|||	|dS t	|}
|
rt
|
d	|i}
d
}nd}| j||dd d}|d kr| ||}|d kr| d n|}| ||d}| jd|dd d}|sP| |||d }|t| jd|dd dp<| j|d dd||d |S | d| }
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_urlZ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 filenamer   z'>Session Name:\s*<.*?>\s*<td>(.+?)</td>zGDC Vault - )r   r   r   z/xml/ZDigitallySpeakingZurl_transparent)_typer   r   r   ie_key)Z_match_valid_urlgroupsr    Z_search_regexZ_html_search_regexZ_request_webpager   r   r   Z_extract_urlr	   r(   r   Z_parse_html5_media_entriesupdater   Z_og_search_title)r!   r   Zvideo_idnamer   r"   r%   Z
direct_urlr   Z	video_urlZ	embed_urlr,   ZPLAYER_REGEXZxml_rootZ	login_resZxml_nameinfor&   r&   r'   _real_extract   s        
          zGDCVaultIE._real_extractN)	__name__
__module____qualname__Z_WORKINGZ
_VALID_URLZ_NETRC_MACHINEZ_TESTSr(   r1   r&   r&   r&   r'   r   	   s    	 	 mr   )r   commonr   Zkalturar   Z
networkingr   r   utilsr   r	   r
   r   r&   r&   r&   r'   <module>   s
   