U
    Mf                     @   sD   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 )   )InfoExtractor   )ExtractorErrortry_geturl_or_noneurlencode_postdata)traverse_objc                   @   s   e Zd ZdZdZdZdZdZdddd	d
dddddddgd
gd
ddiddddddgdddddidddd d	d!d"dd#d$d%d&d'gd(ddid)dd*dddgdddddid+dgZd,d- Z	d.d/ Z
d0d1 Zd2d3 ZdS )4DigitalConcertHallIEzDigitalConcertHall extractorz}https?://(?:www\.)?digitalconcerthall\.com/(?P<language>[a-z]+)/(?P<type>film|concert|work)/(?P<id>[0-9]+)-?(?P<part>[0-9]+)?z2https://api.digitalconcerthall.com/v2/oauth2/tokenNZ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$Z20210624i`i
  z&Members of the Berliner Philharmonikeru   Simon Rössler)
idextcomposertitle	thumbnailupload_date	timestampdurationalbum_artistsZ	composersZskip_downloadZm3u8)noteurl	info_dictparamsz+Concert with several works and an interviewz3https://www.digitalconcerthall.com/en/concert/53785Z53785zBerliner PhilharmonikerzKirill Petrenkoz5Kirill Petrenko conducts Mendelssohn and Shostakovich)r   r   r   r      )r   r   r   r   Zplaylist_countz.https://www.digitalconcerthall.com/en/film/388Z388z6The Berliner Philharmoniker and Frank Peter Zimmermannz$md5:cfe25a7044fa4be13743e5089b5b5eb2Z20220714i bz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   c                 C   s   | j | jd ddtddddddd	d
did}|d | _z8| j | jd ddtd||dddd| j dd W n  tk
r   | jdd Y nX d S )NzObtaining tokenzUnable to obtain tokennoneZdeviceunknownz
dch.webappz1.0.0z
2ySLN+2Fwb)Z	affiliate
grant_typeZdevice_vendorZapp_idZapp_versionZclient_secretContent-Typez!application/x-www-form-urlencoded)errnotedataheadersZaccess_tokenz
Logging inzUnable to loginpassword)r   usernamer!   z"https://www.digitalconcerthall.comBearer )r   ZRefererAuthorization)r   r   r   r    zLogin info incorrect)msg)_download_json
_OAUTH_URLr   _ACCESS_TOKENr   raise_login_required)selfr"   r!   Ztoken_response r+   G/tmp/pip-unpacked-wheel-zk9bgjdq/yt_dlp/extractor/digitalconcerthall.py_perform_loginF   sH        
   

z#DigitalConcertHallIE._perform_loginc                 C   s   | j s| jdd d S )Nr!   )method)r(   r)   )r*   r+   r+   r,   _real_initializec   s    z%DigitalConcertHallIE._real_initializec           
   
   k   s   |D ]}|d }| j | |d d d |dd| j |dd}g }t|d	d
dd
dthfD ]}	|| j|	|ddd q^||d|d||dt|d|dp|dd|d|dr|dkrdd |d D nd iV  qd S )Nr   _linksZstreamshrefapplication/jsonr#   )Acceptr$   Accept-Languager    Zchannel.streamr   r
   F)fatalr   Zname_composerZduration_total)dateZ	publishedZshort_description)r   r   r   formatsr   r   r   ZchaptersZ	cuepointsconcertc                 S   s.   g | ]&}| d t|dd | ddqS )timec                 S   s   | d | d  S )Nr;   r   r+   xr+   r+   r,   <lambda>       z:DigitalConcertHallIE._entries.<locals>.<listcomp>.<lambda>text)
start_timeZend_timer   )getr   ).0Zchapterr+   r+   r,   
<listcomp>~   s
   z1DigitalConcertHallIE._entries.<locals>.<listcomp>)r&   _proto_relative_urlr(   r   r   extendZ_extract_m3u8_formatsrB   )
r*   itemslanguagetype_kwargsitemvideo_idZstream_infor9   Zm3u8_urlr+   r+   r,   _entriesg   s>     
zDigitalConcertHallIE._entriesc              
   C   s   |  |dddd\}}}}|s&d}|dkr2dn|}| jd| d	| |d
|dd}t|d}|dkrp|gnt|d}	|dkr|	t|d  g}	t|dd| jhthdd htf}
d||d| j	|	|||
|d|
|dS )NrH   typer   partenZworkr:   z&https://api.digitalconcerthall.com/v2//r2   )r3   r4   r5   )r0   Zartist.nameZfilm)Z	_embedded..r   image.c                 S   s   | j dddS )N    )widthheight)formatr<   r+   r+   r,   r>      r?   z4DigitalConcertHallIE._real_extract.<locals>.<lambda>Zplaylistr   )r   r   )_typer   r   entriesr   r   )
Z_match_valid_urlgroupr&   r   intrE   r   anyrB   rM   )r*   r   rH   rI   rL   rO   Zapi_typeZvid_infor   Zvideosr   r+   r+   r,   _real_extract   sH     
        z"DigitalConcertHallIE._real_extract)__name__
__module____qualname__ZIE_DESCZ
_VALID_URLr'   r(   Z_NETRC_MACHINEZ_TESTSr-   r/   rM   r]   r+   r+   r+   r,   r	      sr   
5r	   N)
commonr   utilsr   r   r   r   Zutils.traversalr   r	   r+   r+   r+   r,   <module>   s   