a
    hj'                     @   s   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G d
d deZdS )    N   )InfoExtractor   )	HTTPError)	ExtractorErrorfilter_dictfloat_or_nonejoin_nonemptymimetype2extparse_iso8601unsmuggle_urlupdate_url_queryurl_or_none)traverse_objc                   @   s$   e Zd ZdZdZdgZdddZdS )StreaksBaseIEz4https://{}.api.streaks.jp/v1/projects/{}/medias/{}{}FZJPNc                 C   s:  z<| j | jd||d|dddd|  |p0i d}W n  ty< } zt|jtr&|jjdv r&| j	|jj
  |d	d
}t|dthf}	t|dthf}
t|dthf}|
dkr|dkr| j| jd n|dkrtd|
dkrtt|
|	dddd|
s|	r&tt|
||	dd W Y d }~n
d }~0 0 |d }ddddd|d}g i  }}d	}t|ddd fD ]}|d rd}q|d! }|dk}t|d}|d"kr| d#|  q|r6|r6t| j | jd$||d%|d&ddd'td|d i d(d)d*tjjhf}t||}| j||d+d,d	||d-\}}|| | j||d. q|s|r|  | | !| t|d/d0d fD ]8}t|d1tj"hfpd2}|#|g $d3|d! i q||||||d4t|d5thfd6tht%fd7t&hfd8t'hfd9d:thfd;d!d3t(hifd<t'hfd=S )>NZplayback z%Downloading STREAKS playback API JSONzapplication/jsonzhttps://players.streaks.jp)AcceptZOriginheaders)i  i  F)fatalmessagecodeidZREQUEST_FAILED|   )Z	countries~   z:Access is denied (possibly due to invalid/missing API key)ZMEDIA_NOT_FOUNDz: )delimT)expectedwas_livenot_liveis_live)ZclipfileZlinearlivetypesourcesc                 S   s   |d S )Nsrc _vr%   r%   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/streaks.py<lambda>?       z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>Zkey_systemsr$   Zm3u8zUnsupported stream type: ssaiz/ssai/sessionzDownloading session parameters)zContent-Typer   )r   datar   querymp4Zhls)Zm3u8_idr   r!   r.   )targetZtracksc                 S   s   |d dv ot |d S )Nkind)Zcaptions	subtitlesr$   )r   r&   r%   r%   r)   r*   ^   r+   Zsrclangjaurl)r   
display_idformatslive_statusr2   uploader_idnamedescriptiondurationZ
updated_attags.)Zposter	thumbnailZ
created_at)titler:   r;   modified_timestampr<   Z
thumbnails	timestamp))Z_download_json_API_URL_TEMPLATEformatZgeo_verification_headersr   
isinstancecauser   statusZ_parse_jsonresponsereaddecoder   strintZraise_geo_restricted_GEO_COUNTRIESr	   getr
   Zreport_warningjsondumpsencodeurllibparseparse_qsr   Z#_extract_m3u8_formats_and_subtitlesextendZ_merge_subtitlesZ
report_drmZ_remove_duplicate_formatslower
setdefaultappendfilterr   r   r   )self
project_idmedia_idr   r.   r,   rF   eerrorr   r   Zerror_idZ
streaks_idr7   r6   r2   Zdrm_formatssourceZsrc_urlr   extZsession_paramsZfmtssubslangr%   r%   r)   _extract_from_streaks_api   s    










z'StreaksBaseIE._extract_from_streaks_api)NNF)__name__
__module____qualname__rA   Z_GEO_BYPASSrK   ra   r%   r%   r%   r)   r      s   r   c                   @   s  e Zd ZddgZded  dg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d$dd%d&dd'd(d)d*d+d,d-d.d/ddd0d1ded2d3d4d5d6d7d8d9
dd:d;d<gZd=d>dd?d@dAddBdCdDdEddFddGdHdIdJdKddLdMdNgZdOdP ZdQS )R	StreaksIEzohttps?://players\.streaks\.jp/(?P<project_id>[\w-]+)/[\da-f]+/index\.html\?(?:[^#]+&)?m=(?P<id>(?:ref:)?[\w-]+)zehttps?://playback\.api\.streaks\.jp/v1/projects/(?P<project_id>[\w-]+)/medias/(?P<id>(?:ref:)?[\w-]+)z(<iframe\s+[^>]*\bsrc\s*=\s*["\'](?P<url>r   )zqhttps://players.streaks.jp/tipness/08155cd19dc14c12bebefb69b92eafcc/index.html?m=dbdf2df35b4d483ebaeeaeb38c594647Z dbdf2df35b4d483ebaeeaeb38c594647r/   z3shunenCM_edit.mp4gNbX9G@r   Z20230726ididZtipness)r   r^   r>   r5   r;   r7   modified_dater?   r@   upload_dater8   )r4   	info_dictzhhttps://players.streaks.jp/ktv-web/0298e8964c164ab384c07ef6e08c444b/index.html?m=ref:mycoffeetime_250317Z dccdc079e3fd41f88b0c8435e2d453abu   わたしの珈琲時間_250317zref:mycoffeetime_250317g(\^@Z20250310i~gzre:https?://.+\.jpgi}gzktv-web)r   r^   r>   r5   r;   r7   rg   r?   r=   r@   rh   r8   z[https://playback.api.streaks.jp/v1/projects/ktv-web/medias/b5411938e1e5435dac71edf829dd4813Z b5411938e1e5435dac71edf829dd4813ZKANTELE_SYUSEi_0630Z20250122i7gi!mgZ20241226)r   r^   r>   r5   r7   rg   r?   r=   r@   rh   r8   zVhttps://playback.api.streaks.jp/v1/projects/tver-olympic/medias/ref:sp_240806_1748_dvrZ c10f7345adb648cf804d7578ab93b2e3u!   サッカー 男子 準決勝_dvrzref:sp_240806_1748_dvrg     P@r   Z20240805iOfifZ20240804ztver-olympiczChttps://playback.api.streaks.jp/v1/projects/tbs/medias/ref:simul-02Z c4e83a7b48f4409a96adacec674b4e22zref:simul-02r   Z20241031i"gi[eZ20240117Ztbs)
r   r^   r>   r5   r7   rg   r?   r@   rh   r8   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)r4   Zonly_matchingz#https://event.play.jp/playnext2023/Z 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTキームービー（本番）Zplayg1@iqcZ20221114iCPgZ20250213)r   r^   r>   r8   r;   r=   r@   rh   r?   rg   r7   z{https://wowshop.jp/Page/special/cooking_goods/?bid=wowshop&srsltid=AfmBOor_phUNoPEE_UCPiGGSCMrJE5T2US397smvsbrSdLqUxwON0el4r   zM?bid=wowshop&srsltid=AfmBOor_phUNoPEE_UCPiGGSCMrJE5T2US397smvsbrSdLqUxwON0el4u[   ワンランク上の料理道具でとびきりの“おいしい”を食卓へ｜wowshopz$md5:914b5cb8624fc69274c7fb7b2342958fz<https://wowshop.jp/Page/special/cooking_goods/images/ogp.jpg)r   r>   r:   Z	age_limitr=   )r4   Zplaylist_mincountri   c                 C   sB   t |i \}}| |dd\}}| j||td|didS )NrY   r   zX-Streaks-Api-KeyZapi_keyr   )r   Z_match_valid_urlgroupra   r   rL   )rX   r4   Zsmuggled_datarY   rZ   r%   r%   r)   _real_extract   s    
zStreaksIE._real_extractN)	rb   rc   rd   Z
_VALID_URLZ_EMBED_REGEXrI   Z_TESTSZ_WEBPAGE_TESTSrk   r%   r%   r%   r)   re   v   s   Sre   )rM   urllib.parserP   commonr   Znetworking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   Zutils.traversalr   r   re   r%   r%   r%   r)   <module>   s   ,b