
    Ği                     b    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e          ZdS )	    N   )InfoExtractor   )ExtractorErrorparse_iso8601update_url_queryurl_or_none)traverse_objc                   x    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 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           
         |                      |                              ddd          \  }}}|                     ||p|          }|sq|                     d|d|          }t	          |dt
          hf          pi }|                    d          dk    rt          d	d
          t          |d                   }|                     d|d|          d         }| 	                    d| d|dt          j        d|gi                                          d|d|z   d          |         d         }	d| d| }
| 	                    d|z   |dd|	z   d|
z   ddd d!i"          }|d#         }|	|
d$}g }t	          |d%d&d' d(d)t          hf          D ]}}t          |                    d*d+          |          }|                     ||          }|D ])}t"          j                            |          j        |d,<   *|                    |           ~|                    d-          pi }||||                    d.          pd |                    d#          t-          |                    d/                    |                    d          d0S )1N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                     |d         dk    S )Nrepresentationdash )_vs     YC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/box.py<lambda>z%BoxIE._real_extract.<locals>.<lambda>c   s    q9I7Jf7T     contenturl_templatez{+asset_path}zmanifest.mpdextra_param_to_segment_url
created_bydescription
created_at)r   r   formatsrG   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urlparser4   extendr   )selfr   r&   file_idr'   webpagepost_stream_datashared_itemrequest_tokenr6   r7   fr   r4   rI   url_tmplmanifest_urlfmtsfmtcreators                       r@   _real_extractzBoxIE._real_extract7   s=   (,(=(=c(B(B(H(HX\^g(h(h%Wg((g.DEE 	1#00*G5K[ Z  Z& #Dtf"MO O URT z**f44$%KVZ[[[[+h/00G))w@ @@NP**KwKKKW-Y	233::<< 2#0%2[%@G G +      CBB[BB,w6,!*\!9(;6'7 7
   S     &	 )&
 

 $Qy*T*T~})
   	! 	!H ,H,<,<_n,],]_deeL,,\7CCD ^ ^4:L4I4I,4W4W4]011NN4    %%%%+ 55//74F++&quu\':':;;";;t,,
 
 	
rB   N)__name__
__module____qualname__
_VALID_URL_TESTSrg   r=   rB   r@   r   r      s        xJc1 N#%&
 
 #$=>  O <)#%&
 
 #$=>  p!(':#%
 
 #$=> 3%FN?
 ?
 ?
 ?
 ?
rB   r   )rR   urllib.parserW   commonr   utilsr   r   r   r	   utils.traversalr
   r   r=   rB   r@   <module>rq      s         ! ! ! ! ! !            + * * * * *h
 h
 h
 h
 h
M h
 h
 h
 h
 h
rB   