a
    h                     @   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OnsenIEZonsenu<   インターネットラジオステーション＜音泉＞zhttps://www.onsen.agZReferer/z=https?://(?:(?:share|www)\.)onsen\.ag/program/(?P<id>[^/?#]+)z7https://share.onsen.ag/program/onsenking?p=90&c=MTA0NjIZ10462Zm4au   第SP回zcount:3z$md5:de62c80a41c4c8d84da53a1ee681ad18zMTA0NjI=Zsoundr   uj   音泉キング「下野紘」のラジオ きみはもちろん、＜音泉＞ファミリーだよね？Z	onsenkingzcount:2zTre:https?://d3bzklg4lms4gh\.cloudfront\.net/program_info/image/default/production/.+Z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=MTgwMDEZ18001Zmp4u   第4回zcount:5z$md5:bbca8a389d99c90cbbce8f383c85feddzMTgwMDE=Zmovieu   TVアニメ『ガールズバンドクライ』WEBラジオ「ガールズバンドクライ～ラジオにも全部ぶち込め。～」zgirls-band-cry-radioZ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/umaZumazUMA YELL RADIO)r   r   #   )r    r!   Zplaylist_mincountc                 C   s   t t| d   S Nr   )base64urlsafe_b64encodestrencodedecode)program r+   K/mnt/pikpak/tmp/myenv/lib/python3.9/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	rNtd
ddd S )Nz/web_api/signinz
Logging inzapplication/json)AcceptzContent-Typesession)emailpasswordi  )headersdataZexpected_statuserrorzInvalid username or passwordTexpected)_download_json	_BASE_URLjsondumpsr(   getr   )selfusernamer1   Zsign_inr+   r+   r,   _perform_loginN   s    
zOnsenIE._perform_loginc                    s@   }zj d| |}W nJ typ } z2t|jtrZ|jjdkrZtddd W Y d }~n
d }~0 0 dd t	 D }d|vr·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 }|st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 URLTr5   c                 S   s   i | ]\}}|r||d  qS )r+   ).0kvr+   r+   r,   
<dictcomp>g       z)OnsenIE._real_extract.<locals>.<dictcomp>cc              
      s(   g | ] }  td  |itqS )rE   )Z
url_resultr   r-   r   )r@   r*   )r<   r    r+   r,   
<listcomp>i   s   z)OnsenIE._real_extract.<locals>.<listcomp>contentsc                 S   s   |d S r$   r+   _rB   r+   r+   r,   <lambda>k   rD   z'OnsenIE._real_extract.<locals>.<lambda>Zprogram_infor   z===c                    s   |d t  kS r$   )intrH   )raw_idr+   r,   rJ   r   rD   z#This program is no longer availableZstreaming_urlz5This program is only available for premium supportersz	0?(\d{6})zdate string)default)r2   tr   Z20z	/program/z?c=)r   formatsZhttp_headersr   r   r   r   r   Zposter_image_url)query)r   r   r   r   Z
performersZguests.nameZdirectory_name)r   r   r   Zhashtag_list)r   r   r   )Z	_match_idr7   r8   r   
isinstancecauser   statusr	   itemsr   Zplaylist_resultr   r%   urlsafe_b64decoder)   anyr   Zraise_login_requiredr-   Z_search_regexZ_extract_m3u8_formats_HEADERSr   r;   r   rK   r
   r'   r   filter)r<   r    Z
program_idZprogramserP   entriesZp_keysr*   Zm3u8_urlr   Zdate_strr+   )rL   r<   r    r,   _real_extract]   st    


zOnsenIE._real_extractN)__name__
__module____qualname__ZIE_NAMEZIE_DESCr8   rX   Z_NETRC_MACHINEZ
_VALID_URLZ_TESTSstaticmethodr-   r>   r\   r+   r+   r+   r,   r      sh   .
r   )r%   r9   commonr   Znetworking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   Zutils.traversalr   r   r+   r+   r+   r,   <module>   s   ,