o
    i                     @   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parse_iso8601update_url_queryurl_or_none)traverse_objc                   @   sx   e Zd ZdZ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iddddddddddddidgZdd  Zd!S )"BoxIEzdhttps?://(?:[^.]+\.)?(?P<service>app|ent)\.box\.com/s/(?P<shared_name>[^/?#]+)(?:/file/(?P<id>\d+))?zRhttps://mlssoccer.app.box.com/s/0evd2o3e08l60lr4ygukepvnkord1o1x/file/510727257538 1f81b2fd3960f38a40a3b8823e5fcd43510727257538mp4z7Garber   St. Louis will be 28th MLS team  +scarving.mp4 i&\]20190820	235196876)idexttitleuploader	timestampupload_dateuploader_idskip_downloadzdash fragment too small)urlmd5	info_dictparamsz=https://utexas.app.box.com/s/2x6vanv85fdl8j2eqlcxmv0gp1wvps6e787379022466z%Webinar recording: Take the Leap!.mp4zPatricia MoseleiO`20210315	239068974)r   r   r   z^https://thejacksonlaboratory.ent.box.com/s/2x09dm6vcg6y28o0oox1so4l0t8wzt6l/file/1536173056065153617305606518523128264zLexi Henniganz#iPSC Symposium recording part 1.mp4iKf20240520)r   r   r   r   r   r   r   c              	   C   s  |  |ddd\}}}| ||p|}|s<| d|d|}t|dthfp(i }|ddkr6td	d
dt|d }| d|d|d }| j	d| d|dt
d|gi d|d| dd| d }	d| d| }
| j	d| |dd|	 d|
 ddd d!id"}|d# }|	|
d$}g }t|d%d&d'd( d)d*thfD ]$}t|d+d,|}| ||}|D ]}tj|j|d-< q|| q|d.pi }||||d/pd |d#t|d0|dd1S )2Nshared_namer   servicezBox\.postStreamData\s*=zBox post-stream dataz/app-api/enduserapp/shared-itemitemTypefilez$The requested resource is not a fileT)expecteditemIDzBox\.config\s*=z
Box configrequestTokenzhttps://z+.box.com/app-api/enduserapp/elements/tokenszDownloading token JSON metadatafileIDszapplication/jsonzsharedName=)zContent-TypezX-Request-TokenzX-Box-EndUser-API)dataheadersreadz.box.com/s/zhttps://api.box.com/2.0/files/zDownloading file JSON metadatazBearer zshared_link=z[dash])AuthorizationBoxApizX-Rep-Hintsfieldszvauthenticated_download_url,created_at,created_by,description,extension,is_download_available,name,representations,size)r,   queryname)access_tokenshared_linkrepresentationsentriesc                 S   s   |d dkS )Nrepresentationdash )_vr9   r9   H/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/box.py<lambda>c   s    z%BoxIE._real_extract.<locals>.<lambda>contenturl_templatez{+asset_path}zmanifest.mpdextra_param_to_segment_url
created_bydescription
created_at)r   r   formatsrB   r   r   r   )_match_valid_urlgroup_download_webpage_search_jsonr	   dictgetr   str_download_jsonjsondumpsencoder   r   replace_extract_mpd_formatsurllibparseurlparser1   extendr   )selfr   r#   file_idr$   webpagepost_stream_datashared_itemrequest_tokenr3   r4   fr   r1   rD   url_tmplmanifest_urlfmtsfmtcreatorr9   r9   r<   _real_extract7   s   
	

zBoxIE._real_extractN)__name__
__module____qualname__
_VALID_URL_TESTSrb   r9   r9   r9   r<   r
      sL    			'r
   )rM   urllib.parserR   commonr   utilsr   r   r   r   utils.traversalr	   r
   r9   r9   r9   r<   <module>   s    