
    i                     v    S SK r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJrJr  SSKJrJrJr   " S S\5      rg)	    N   )InfoExtractor   )ExtractorErrorextract_attributesfloat_or_nonejwt_decode_hs256
jwt_encodeparse_resolution	qualitiesunified_strdate
update_urlurl_or_noneurljoin)find_elementrequiretraverse_objc            
           \ rS rSrSrSrSrSSSSSSS	.rS
rSSSSSSSSS.S.SSSSSSSSS.S./r	Sr
\S 5       rS rS rSrg)AppleConnectIE   zapple:music:connectzApple Music Connectzhttps://music.apple.comNi  i  i8  )provisionalUploadVideosdVideosdVideoWithPlusAudiosd480pVideo720pHdVideo1080pHdVideoz2https?://music\.apple\.com/[\w-]+/post/(?P<id>\d+)z*https://music.apple.com/us/post/1018290019
1018290019m4vEnergygx&=f@zre:https?://.+\.png20150710Drake)idexttitleduration	thumbnailupload_dateuploader)url	info_dictz*https://music.apple.com/us/post/1016746627
1016746627z4Body Shop (Madonna) - Chellous Lima (Acoustic Cover)g7A`Hj@20150706zChellous Limac                 P    [        U 5      S   [        R                  " 5       -
  S:  $ )Nexpx   )r	   time)tokens    J/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/appleconnect.py_jwt_is_expiredAppleConnectIE._jwt_is_expired@   s"    &u-		;cAA    c           
         U R                   (       a,  U R                  U R                   5      (       d  U R                   $ [        U[        SSSSS91[        1S[        U R                  5      1[        S5      145      nU R                  X2SS	5      n[        0 SS
SS.S9R                  S5      S   nU R                  SU S3USSS9U l         U R                  U R                   5      (       a  [        S5      eU R                   $ )Nscriptcrossorigin T)tagattrvaluehtmlsrczJS URLzDownloading token JSzUnable to download token JSES256
WebPlayKid)algkid)headers.r   z(["\'])(?P<jwt>z(?:\.[\w-]+){2})\1zJSON Web Tokenjwt)groupz$The fetched token is already expired)_jwtr3   r   r   r   r   	_BASE_URLr   _download_webpager
   split_search_regexr   )selfwebpagevideo_idjs_urljsheaders         r2   
_get_tokenAppleConnectIE._get_tokenD   s   99T11$))<<99gh]"4PQ %'$..*A)BWXEVDW(Y Z ##46SU BGL,QRXXY\]^_`&&vh&:;RAQY^ ' `			** !GHHyyr5   c                    U R                  U5      nU R                  X5      nU R                  SUSU R                  X25       3U R                  S.USS.S9n[        USSS	[        [        S
5      145      n/ n[        [        U R                  R                  5       5      5      n[        US[        R                  1S 45       HM  u  pUR                  SUU R                  R                  U5      U" U5      U	S.[!        [#        U	S S9SS9E5        MO     UUU R%                  / SQU5      S.[        US[&        14S[)        SS914S[*        14S[&        1[        4S[,        14S.5      E$ )Nz=https://amp-api.music.apple.com/v1/catalog/us/uploaded-videoszBearer )AuthorizationOriginzen-US)idsl)rC   querydata.
attributeszvideo informationassetTokensc                     [        US   5      $ )Nr   )r   )_vs     r2   <lambda>.AppleConnectIE._real_extract.<locals>.<lambda>f   s    k!A$6Gr5   r   )r#   	format_idheightqualityr)   )rY   T)lenient)zog:imagezog:image:secure_urlztwitter:image)r"   formatsr&   namedurationInMillisecondsi  )scale
uploadDate)
artistNameuploadingArtistNamepostUrl)r$   r%   r'   r(   webpage_url)	_match_idrI   _download_jsonrR   rH   r   anyr   r   list
_QUALITIESkeysdictitemsappendgetr   r   _html_search_metastrr   r   r   )
rL   r)   rN   rM   videosr[   rf   rd   rb   src_urls
             r2   _real_extractAppleConnectIE._real_extractV   s   >>#&((7$$K#*4??7+M*N!O.. &G4 % 6 "&CsW5H-I,J+L M
 D!5!5!789".zDJJ<)G<
 #I NN&//--i8"9- #:gT#BDQ # //DgO

 : 3%5D8Q7RS ,.?@BSE3O )K=9( 
 	
r5   )rG   )__name__
__module____qualname____firstlineno__IE_NAMEIE_DESCrH   rs   
_VALID_URL_TESTSrG   staticmethodr3   rR   r}   __static_attributes__ r5   r2   r   r      s    #G#G)I"& #J GJ;/%
 <K/%'
F0 DB B$'
r5   r   )r0   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r   r5   r2   <module>r      s7     !    e
] e
r5   