o
    i                     @   st   d dl Z d dlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZ G dd	 d	eZdS )
    N   )InfoExtractor   )	HTTPError)	ExtractorError
clean_htmlint_or_noneparse_qsstr_or_nonestrftime_or_none
update_urlupdate_url_queryurl_or_none)traverse_objc                   @   s   e Zd ZdZdZdZde diZdZdZddd	d
ddddddddddddddddddddddd d!ddd"d#dd$d%d&d'd(d)d*d+gZ	e
d,d- Zd.d/ Zd0d1 Zd2S )3OnsenIEonsenu<   インターネットラジオステーション＜音泉＞zhttps://www.onsen.agReferer/z=https?://(?:(?:share|www)\.)onsen\.ag/program/(?P<id>[^/?#]+)z7https://share.onsen.ag/program/onsenking?p=90&c=MTA0NjI10462m4au   第SP回zcount:3z$md5:de62c80a41c4c8d84da53a1ee681ad18zMTA0NjI=soundr   uj   音泉キング「下野紘」のラジオ きみはもちろん、＜音泉＞ファミリーだよね？	onsenkingzcount:2zTre:https?://d3bzklg4lms4gh\.cloudfront\.net/program_info/image/default/production/.+20220627z1https://www.onsen.ag/program/onsenking?c=MTA0NjI=)idexttitlecastdescription
display_id
media_typesection_startseries	series_idtags	thumbnailupload_datewebpage_url)url	info_dictzChttps://share.onsen.ag/program/girls-band-cry-radio?p=370&c=MTgwMDE18001mp4u   第4回zcount:5z$md5:bbca8a389d99c90cbbce8f383c85feddzMTgwMDE=movieu   TVアニメ『ガールズバンドクライ』WEBラジオ「ガールズバンドクライ～ラジオにも全部ぶち込め。～」zgirls-band-cry-radio20240425z<https://www.onsen.ag/program/girls-band-cry-radio?c=MTgwMDE=z%Only available for premium supporters)r'   r(   skipz https://www.onsen.ag/program/umaumazUMA YELL RADIO)r   r   #   )r'   r(   playlist_mincountc                 C   s   t t| d   S Nr   )base64urlsafe_b64encodestrencodedecode)program r8   J/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/onsen.py_get_encoded_idJ   s   zOnsenIE._get_encoded_idc                 C   sR   | j | j dd ddddtd||di dd}|d	r'td
ddd S )Nz/web_api/signinz
Logging inzapplication/json)AcceptzContent-Typesession)emailpasswordi  )headersdataexpected_statuserrorzInvalid username or passwordTexpected)_download_json	_BASE_URLjsondumpsr5   getr   )selfusernamer>   sign_inr8   r8   r9   _perform_loginN   s    
zOnsenIE._perform_loginc                    s0   }zj d| |}W n ty2 } zt|jtr-|jjdkr-tddd d }~ww dd t	 D }d|vrafd	d
t
|ddd fD }||t
|ddthfS t|d  d  d fddf}t
|g |tR }|stdddt
|dthf}	|	sd |}
j| d|	dd d}|
j|	 jdjt|ddtd| j d| d|
 dt
|dththfdthfd thfd!thtd d"hfd#t
|d$g |d%R fd&d'thtfd(thfd)t
|dd*thtfdthfd+d&thtfd,fS )-Nz/web_api/programs/i  zInvalid URLTrC   c                 S   s   i | ]\}}|r||d  qS )r8   ).0kvr8   r8   r9   
<dictcomp>g   s    z)OnsenIE._real_extract.<locals>.<dictcomp>cc              
      s(   g | ]}  td  |itqS )rS   )
url_resultr   r:   r   )rO   r7   )rJ   r'   r8   r9   
<listcomp>i   s    z)OnsenIE._real_extract.<locals>.<listcomp>contentsc                 S   s   |d S r1   r8   _rQ   r8   r8   r9   <lambda>k   s    z'OnsenIE._real_extract.<locals>.<lambda>program_infor   z===c                    s   |d t  kS r1   )intrW   )raw_idr8   r9   rY   r   s    z#This program is no longer availablestreaming_urlz5This program is only available for premium supportersz	0?(\d{6})zdate string)default)r?   tr   20z	/program/z?c=)r   formatshttp_headersr    r%   r&   r   r   poster_image_url)query)r   r   r   r$   
performersguests.namedirectory_name)r   r"   r   hashtag_list)r   r!   r#   )	_match_idrE   rF   r   
isinstancecauser   statusr	   itemsr   playlist_resultr   r2   urlsafe_b64decoder6   anyr   raise_login_requiredr:   _search_regex_extract_m3u8_formats_HEADERSr   rI   r   r[   r
   r4   r   filter)rJ   r'   
program_idprogramserd   entriesp_keysr7   m3u8_urlr   date_strr8   )r\   rJ   r'   r9   _real_extract]   sx   


zOnsenIE._real_extractN)__name__
__module____qualname__IE_NAMEIE_DESCrF   ru   _NETRC_MACHINE
_VALID_URL_TESTSstaticmethodr:   rM   r~   r8   r8   r8   r9   r      sj    .
r   )r2   rG   commonr   networking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   utils.traversalr   r   r8   r8   r8   r9   <module>   s    ,