U
    $Pf!                     @   s\   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mZ G dd	 d	eZdS )
    )unicode_literalsN   )InfoExtractor)	KalturaIE   )HEADRequestremove_start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d4d5dd6d7d0d8d9ddidd:ddg
Zd;d< Zd=d> Zd?S )@
GDCVaultIEzGhttps?://(?: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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Content-Typez!application/x-www-form-urlencodedz
Logging inz Getting authenticated video pagezLogging out)	Z_get_login_inforeport_warningrematchgroupr	   r   
add_header_download_webpage)selfwebpage_urlr   usernamer   ZmobjZ	login_urlZ
logout_urlZ
login_formrequest
start_page r'   A/tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/gdcvault.py_login   s     zGDCVaultIE._loginc              	   C   sv  t | j| \}}|p|}d| }| ||}| jd|dd d}|r| d|d}d| }	| t|	|	 }	|||	|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}|sV| |||d }|t| jd|dd dpB| j|d dd||d |S 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_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	%s/xml/%sZDigitallySpeakingZurl_transparent)_typer   r   r   ie_key)r   r   
_VALID_URLgroupsr!   Z_search_regexZ_html_search_regexZ_request_webpager   geturlr   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__r.   Z_NETRC_MACHINEZ_TESTSr)   r4   r'   r'   r'   r(   r      s    	 	 mr   )
__future__r   r   commonr   Zkalturar   utilsr   r   r	   r
   r   r   r'   r'   r'   r(   <module>   s
   	