
    V|h1                     j    S SK r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJr  SSKJr   " S S	\5      rg)
    N   )InfoExtractor   )	HTTPError)ExtractorErrordetermine_extjwt_decode_hs256parse_codecstry_geturl_or_noneurlencode_postdata)traverse_objc                   &   \ rS rSrSrSrSrSSSSS	S
SSSSSS/S	/S.
SS0S.SSSSS/SSS.SS0SS.SSSS S!SS"S#/ S$QS%.SS0S&.SS'SSS/SSS.SS0S(S./rS)rS*r	S+r
S,rS-rS.rS/S0S1S2\S3.rS4rS5rS4r\S6 5       rS7 rS8 rS?S9 jrS: rS; rS< rS= rS>rg4)@DigitalConcertHallIE   zDigitalConcertHall extractorz}https?://(?:www\.)?digitalconcerthall\.com/(?P<language>[a-z]+)/(?P<type>film|concert|work)/(?P<id>[0-9]+)-?(?P<part>[0-9]+)?digitalconcerthallzPlaylist with only one videoz3https://www.digitalconcerthall.com/en/concert/53201z53201-1mp4z
Kurt Weillz[Magic Night]zAre:^https?://images.digitalconcerthall.com/cms/thumbnails.*\.jpg$20210624i`i
  z&Members of the Berliner Philharmonikeru   Simon Rössler)
idextcomposertitle	thumbnailupload_date	timestampdurationalbum_artists	composersskip_downloadm3u8)noteurl	info_dictparamsz+Concert with several works and an interviewz3https://www.digitalconcerthall.com/en/concert/5378553785zBerliner PhilharmonikerzKirill Petrenkoz5Kirill Petrenko conducts Mendelssohn and Shostakovich)r   r   r   r      )r!   r"   r#   r$   playlist_countz.https://www.digitalconcerthall.com/en/film/388388z6The Berliner Philharmoniker and Frank Peter Zimmermannz$md5:cfe25a7044fa4be13743e5089b5b5eb220220714i b)zFrank Peter ZimmermannzBenedikt von BernstorffzJakob von Bernstorff)r   r   r   descriptionr   r   r   r   )r"   r#   r$   z2https://www.digitalconcerthall.com/en/work/53785-1r   zUse  --username token --password ACCESS_TOKEN  where ACCESS_TOKEN is the "access_token_production" from your browser local storagezOor else use a "refresh_token" with  --username refresh --password REFRESH_TOKENz2https://api.digitalconcerthall.com/v2/oauth2/tokenz
dch.webappz
2ySLN+2FwbzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15application/jsonz/application/x-www-form-urlencoded;charset=UTF-8z"https://www.digitalconcerthall.comz#https://www.digitalconcerthall.com/)AcceptzContent-TypeOriginReferer
User-AgentNr   c                 ^    U R                   S-
  [        [        R                  " 5       5      :*  $ )N   )_access_token_expiryinttimeselfs    ]/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/digitalconcerthall.py_access_token_is_expired-DigitalConcertHallIE._access_token_is_expired[   s#    ((2-TYY[1AAA    c                 ^    Xl         [        U[        1S[        145      =(       d    SU l        g )Nexpr   )_access_tokenr   r	   r3   r2   )r6   values     r7   _set_access_token&DigitalConcertHallIE._set_access_token_   s,    "$0:J9KUUXTY8Z$[$`_`!r:   c                    U R                   R                  U R                  SU R                  U R                  S.5        g )Ntokens)access_tokenrefresh_token)cachestore_NETRC_MACHINEr=   _refresh_tokenr5   s    r7   _cache_tokens"DigitalConcertHallIE._cache_tokensc   s5    

,,h ..!009
 	r:   c                 6   U(       a"  U R                  S5        U R                  S 5        U R                  (       d  g U R                  (       d8  U R                  S 5        U R	                  5         [        SU R                   3SS9eU R                  =(       dQ    U R                  U R                  S SS[        SSS	S	U R                  S
SU R                  S.5      U R                  S9S   n U R                  U R                  S SS[        SU R                  U R                  U R                  S.5      0 U R                  ESSU 30ES9nU R                  US   5        [%        US[&        145      =n(       a  U R)                  S5        XPl        U R	                  5         g ! [
         aq  n[        UR                  [         5      (       aL  UR                  R"                  S:X  a2  U R                  S 5        S U l        U R	                  5         [        SSS9ee S nAff = f)Nz!Access token has been invalidatedzyAccess token has expired or been invalidated. Get a new "access_token_production" value from your browser and try again, TexpectedzObtaining initial tokenzUnable to obtain initial tokennonedeviceunknown
berlinphilz1.95.0)	affiliate
grant_typedevice_vendordevice_modelapp_idapp_distributorapp_versionclient_secret)dataheadersrC   zRefreshing tokenzUnable to refresh tokenrD   )rS   rD   	client_idrY   AuthorizationBearer   z!Your tokens have been invalidatedzNew refresh token granted)report_warningr?   r8   rH   rI   r   _REFRESH_HINTr=   _download_json
_OAUTH_URLr   
_CLIENT_ID_CLIENT_SECRET_OAUTH_HEADERS
isinstancecauser   statusr   strwrite_debug)r6   
invalidatebearer_tokenresponseerD   s         r7   _fetch_new_tokens&DigitalConcertHallIE._fetch_new_tokensi   s    CD""4(,,""""4(  ""&"4"4!57AEG G )) =T-@-@OOT#<>^##&!* !*//#/'!%!4!4%  ++ .A .- .<.=	**'9;T'"1%)%8%8!%%)%8%8	) 
))#w|n%= + 
H& 	x78(OcU3KLL=L89"/  	!''9--!''..C2G&&t,&*#""$$%HSWXX	s   *AF 
H'A,HHc                    U R                  5         US:X  a  X l        U R                  5         US:X  aN  [        U[        15      (       d  [        SU R                   3SS9eU R                  U5        U R                  5         US;   a4  U R                  S5      SLa  US:X  a  S	OSnU R                  S
U S35        g US:w  a$  [        SU R                   SU R                   3SS9eU R                  R                  U R                  S0 S9nU R                  UR                  S5      5        UR                  S5      U l        U R                   (       d  g U R                  SS9  g )Nrefreshtokenz0The access token passed to yt-dlp is not valid. TrL   )rs   rt   cachedirFaccesszYour zr token has been cached to disk. To use the cached token next time, pass  --username cache  along with any passwordrE   zGLogin with username and password is no longer supported for this site. , rB   )defaultrC   rD   rl   )report_loginrH   rp   r   r	   r   _LOGIN_HINTr?   rI   	get_param	to_screenra   rE   loadrG   getr8   )r6   usernamepassword
token_typecached_tokenss        r7   _perform_login#DigitalConcertHallIE._perform_login   sq   y "*""$w+;*<==$FtGWGWFXYdhj j""8, ++~~j)6)1W)<X)
zl 3b  b cw ""&"2"2!32d6H6H5IKUY[ [
 

(;(;XrR}00@A+//@,, 	$/r:   c                 |    U R                   (       d+  U R                  SU R                   SU R                   3S S9  g g )NzAAll content on this site is only available for registered users. rw   )method)r=   raise_login_requiredr{   ra   r5   s    r7   _real_initialize%DigitalConcertHallIE._real_initialize   sH    !!%%S##$Bt'9'9&:<DH & J "r:   c              +     #    U GH#  nUS   nS H]  nU R                  U(       + S9   U R                  U R                  US   S   S   5      USSU R                   3UU R                  S	.S
9n  O   / n
[        WSSSSS[        145       H  n[        U5      nUS:X  az  U R                  XSSSS9nU HO  nUR                  S5      (       d  M  UR                  S5      S:X  d  M2  UR                  [!        US   5      5        MQ     U
R#                  U5        M  US:X  a"  U
R#                  U R%                  XSSS95        M  U R'                  SU S35        M     UUR                  S5      UR                  S5      U
UR                  S5      [        US 5      UR                  S!5      =(       d    UR                  S!5      S".UES#UR                  S$5      (       aI  US%:X  aC  US$    Vs/ s H2  nUR                  S&5      [)        US' 5      UR                  S(5      S).PM4     snOS 0Ev   GM&     g ! [
         aM  n	U(       a@  [        U	R                  [        5      (       a!  U	R                  R                  S:X  a   S n	A	GMo  e S n	A	ff = fs  snf 7f)*Nr   )TFry   _linksstreamshrefr+   r^   )r,   r]   Accept-Languager/   r[   r_   channel.streamr"   r    r   hlsF)m3u8_idfatalformat_notevcodecrN   mpddash)mpd_idr   z'Skipping unsupported format extension ""r   name_composerduration_total)date	publishedshort_description)r   r   r   formatsr   r   r*   chapters	cuepointsconcertr4   c                     U S   U S   -   $ )Nr4   r    xs    r7   <lambda>/DigitalConcertHallIE._entries.<locals>.<lambda>   s    1V9q};Tr:   text)
start_timeend_timer   )rp   rb   _proto_relative_urlr=   _USER_AGENTr   rg   rh   r   ri   r   r   r   _extract_m3u8_formatsr   updater
   extend_extract_mpd_formatsr`   r   )r6   itemslanguagetype_kwargsitemvideo_idshould_retrystream_infoerrorr   fmt_urlr   fmtsfmtchapters                   r7   _entriesDigitalConcertHallIE._entries   s    DDzH -&&l2B&C"&"5"500h	1J61RSU]&8/6t7I7I6J-K/7*.*:*:	h #6 #K  !.  G'ihPSUZ]h\i5jk#G,&=55gX]ej5kD#77=11cggh6G66QJJ|C4F'GH  $ NN4(E\NN4#<#<WW]ej#<#kl''*QRUQVVW(XY l '* HH_5" HH%56)$0EF#xx(;<dPc@d   8<xx7L7LQVZcQck!2	4 "3g #*++f"5 '1T U$[[0 "3	4 jn C  & #
5;;	(J(Ju{{OaOaehOh 84sP   %JAH.-AJJ$DJ&9J
J.
J8A J 8J?J  JJc                    U R                  U5      R                  SSSS5      u  p#pEU(       d  SnUS:X  a  SOUnU R                  SU S	U 3US
UU R                  S.S9nUS:X  a  U/O[	        US5      nUS:X  a  U[        U5      S-
     /n[	        USSSS[        145      n	[	        USSU R                  1[        1S 1[        45      n
SUUR                  S5      U R                  XX:U	S9U
U	S.$ )Nr   typer   partenworkr   z&https://api.digitalconcerthall.com/v2//r+   )r,   r   r/   r   film)	_embedded..r   r   artist.nameimagec                 "    U R                  SSS9$ )Nr   )widthheight)formatr   s    r7   r   4DigitalConcertHallIE._real_extract.<locals>.<lambda>  s    qxxax2r:   playlistr   )r   r   )_typer   r   entriesr   r   )_match_valid_urlgrouprb   r   r   r3   rj   r   r   anyr   r   )r6   r"   r   r   r   r   api_typevid_infovideosr   r   s              r7   _real_extract"DigitalConcertHallIE._real_extract   s6   *.*?*?*D*J*J:W]_cek*l'H %9U&&4XJazJH,#+".._ '   %(LKb4cF?SY]+,F$X(CRUQV/WX S4334{m23S,: ;	
  \\'*}}%M % ["*
 	
r:   )r=   r2   rH   )F)__name__
__module____qualname____firstlineno__IE_DESC
_VALID_URLrG   _TESTSr{   ra   rc   rd   re   r   rf   r=   r2   rH   propertyr8   r?   rI   rp   r   r   r   r   __static_attributes__r   r:   r7   r   r      sy   ,G RJ)N.D$$]%#FHXY&
 #F+" >D79JKL]	
 #F+ @MA]%#j	
 #F+ >C79JKL]	
 #F+Q3FhVKeMEJJ!N JK$I68!N MNB Ba8t"0HJ0d
r:   r   )r4   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   utils.traversalr   r   r   r:   r7   <module>r      s0     ! -   +L
= L
r:   