Ë
    š„jÀ  ã                   óZ   — 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y)	é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚparse_iso8601Úupdate_url_queryÚurl_or_none)Útraverse_objc                   óv   — 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y )!Ú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 Moseleià‡O`Ú20210315Ú	239068974)r   r   r   z^https://thejacksonlaboratory.ent.box.com/s/2x09dm6vcg6y28o0oox1so4l0t8wzt6l/file/1536173056065Ú1536173056065Ú18523128264zLexi Henniganz#iPSC Symposium recording part 1.mp4i÷�KfÚ20240520)r   r   r   r   r   r   r   c           
      óV  — | j                  |«      j                  ddd«      \  }}}| j                  ||xs |«      }|sZ| j                  d|d|«      }t	        |dt
        hf«      xs i }|j                  d«      dk7  rt        d	d
¬«      ‚t        |d   «      }| j                  d|d|«      d   }| j                  d|› d�|dt        j                  d|gi«      j                  «       d|d|z   dœ¬«      |   d   }	d|› d|› �}
| j                  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  }t        |j                  d*d+«      |«      }| j!                  ||«      }|D ].  }t"        j$                  j'                  |«      j(                  |d,<   Œ0 |j+                  |«       Œv |j                  d-«      xs i }||||j                  d.«      xs d |j                  d#«      t-        |j                  d/«      «      |j                  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     úK/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/box.pyú<lambda>z%BoxIE._real_extract.<locals>.<lambda>c   s   € °qÐ9IÑ7JÈfÑ7T€ ó    Ú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×(HÑ(HÈÐX\Ð^gÓ(hÑ%ˆ�W˜gØ×(Ñ(¨¨gÒ.D¸ÓEˆáØ#×0Ñ0Ø*¨GÐ5KÈ[ó ZÐä&Ø Ð#DÄtÀfÐ"MóOò UØRTð à�‰˜zÓ*¨fÒ4Ü$Ð%KÐVZÔ[Ð[ä˜+ hÑ/Ó0ˆGà×)Ñ)Ø ¨°wó@Ø@NñPˆà×*Ñ*Ø�w�iÐJÐKÈWØ-Ü—‘˜Y¨¨	Ð2Ó3×:Ñ:Ó<Ø 2Ø#0Ø%2°[Ñ%@ñGð +ó ð ñð ñ ˆð !  	¨°[°MÐBˆØ×ÑØ,¨wÑ6¸Ø,Ø!*¨\Ñ!9Ø(¨;Ñ6Ø'ñ7ð
 ð  Sðð  ó ˆð �&‘	ˆð )Ø&ñ
ˆð
 ˆä$ QØ˜yÑ*TØ�~¬ }ð)
ó ò 	!ˆHô ,¨H×,<Ñ,<¸_ÈnÓ,]Ð_dÓeˆLØ×,Ñ,¨\¸7ÓCˆDØò ^�Ü4:·L±L×4IÑ4IÈ,Ó4W×4]Ñ4]�Ð0Ò1ð^à�N‰N˜4Õ ð	!ð —%‘%˜Ó%Ò+¨ˆð ØØØŸ5™5 Ó/Ò7°4ØŸ™ FÓ+Ü& q§u¡u¨\Ó':Ó;Ø"Ÿ;™; tÓ,ñ
ð 	
rB   N)Ú__name__Ú
__module__Ú__qualname__Ú
_VALID_URLÚ_TESTSrg   r=   rB   r@   r   r      s¤   „ Øx€JàcØ1à ØØNØØ#Ø%Ø&ñ
ð #Ð$=Ð>ñð Oà ØØ<Ø)Ø#Ø%Ø&ñ
ð #Ð$=Ð>ñð pà!ØØ(Ø'Ø:Ø#Ø%ñ
ð #Ð$=Ð>ñð3%€FóN?
rB   r   )rR   Úurllib.parserW   Úcommonr   Úutilsr   r   r   r	   Úutils.traversalr
   r   r=   rB   r@   ú<module>rq      s+   ðÛ Û å !÷ó õ +ôh
ˆMõ h
rB   