o
    ib                     @   sT   d dl Z d dlZddlmZ ddlmZmZmZm	Z	 ddl
mZ G dd deZdS )	    N   )InfoExtractor   )ExtractorErrormake_archive_idunified_timestampurljoin)traverse_objc                   @   s   e Zd ZdZdddddddd	d
dgd	ddddddddddgddd	ddi dddddededd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6gd7d8d9g d:ed;d<d=ed>d9d?d@
dgZdAdB ZdCdD ZdES )F
NintendoIEzdhttps?://(?:www\.)?nintendo\.com/(?:(?P<locale>\w{2}(?:-\w{2})?)/)?nintendo-direct/(?P<slug>[^/?#]+)z4https://www.nintendo.com/nintendo-direct/09-04-2019/mp42oPmiviVePUA1IqAZzjuVhz
09-04-2019zNintendo Direct 9.4.2019i`o]z$md5:8aac2780361d8cb772b6d1de66d7d6f420190904   z)nintendo J2bXdmaTE6fe3dWJTPcc7m23FNbc_A1V)	extid
display_idtitle	timestampdescriptionupload_date	age_limit_old_archive_ids)url	info_dictz:https://www.nintendo.com/en-ca/nintendo-direct/08-31-2023/2TB2w2rJhNYF84qQ9E57hUz
08-31-2023z)Super Mario Bros. Wonder Direct 8.31.2023ip:dz$md5:3067c5b824bcfdae9090a7f38ab2d200zMild Fantasy ViolencezIn-Game Purchases20230831   )	r   r   r   r   r   r   tagsr   r   zAhttps://www.nintendo.com/us/nintendo-direct/50-fact-extravaganza/r   r   j0BBGzfw0pQchannel_follower_count
view_countr   zSLearn new details about Super Smash Bros. for Wii U, which launches on November 21.durationiK  availabilitypublic	thumbnailz:https://i.ytimg.com/vi_webp/j0BBGzfw0pQ/maxresdefault.webpr   ipHT
channel_idzUCGIY_O-8vW4rfX98KlMkvRgchapterszcount:53heatmapz	count:100r   20141023uploader_idz@NintendoAmericaplayable_in_embedT
categoriesGamingr   z50-fact-extravaganzazNintendo of America)zComic MischiefzCartoon ViolencezMild Suggestive Themesz8https://www.youtube.com/channel/UCGIY_O-8vW4rfX98KlMkvRg
   z(https://www.youtube.com/@NintendoAmericanot_livez50-FACT Extravaganza)
channelr   
like_countchannel_urlr   uploader_urlcomment_countlive_statusuploaderr   c                 C   s   t dtj|S )Nzhttps://assets.nintendo.com/)r   urllibparsequote)selfpath r;   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/nintendo.py_create_asset_urlK   s   zNintendoIE._create_asset_urlc                 C   s  |  |dd\}}|pdd\}}}| pd d|  }| jd| d| d	d
d | jd|dtj||dddtjddddidddd}t	|ddt
hf}	|	sctd| dd
ddt	|d}
|
rvtd|
prd t	|	d thfd!thfd"thfd#d$thfd%d&thfd'd(d)thfd*| jhfd+}||d,< t	|	d-d.thf}|st	|	d/thf}|s| jd0|d1 | j|fi |d2d
iS |d3rt| |d4d  g|d5< | | d6| d7||d8< |S )9NlocaleslugUS-en_zUsing locale z (from )T)	only_oncezhttps://graph.nintendo.com/NintendoDirect)r>   r?   ),:)
separatorspersistedQueryr   @969b16fe9f08b686fa37bc44d1fd913b6188e65794bb5e341c54fa683a8004cb)version
sha256Hash)operationName	variables
extensions)querydatadirectzNo Nintendo Direct with id z exists)expectedz, )errors.messagezGraphQL API error: zUnknown errorr   name	startDater   textcontentRatingordercontentDescriptors.labelr$   )r   r   r   r   r   r   r$   r   videopublicId
liveStreamz Could not find any video formats)video_idurl_transparentzLegacy Videos/   r   z/video/upload/sp_full_hd/v1/z.m3u8formats)_match_valid_urlgroup
rpartitionlowerupperwrite_debug_download_jsonjsondumpsr	   dictr   joinstrr   intr=   raise_no_formats
url_result
startswithr   _extract_m3u8_formats)r9   r   r>   r?   languagerC   countryparsed_localeresponsedirect_inforU   resultasset_id
youtube_idr;   r;   r<   _real_extractN   sb   



	
zNintendoIE._real_extractN)__name__
__module____qualname__
_VALID_URLrq   _TESTSr=   r~   r;   r;   r;   r<   r
      s    	
;r
   )rl   urllib.parser6   commonr   utilsr   r   r   r   utils.traversalr	   r
   r;   r;   r;   r<   <module>   s    