o
    ic(                     @   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/{}{}FJPNc                 C   sJ  z| j | jd||d|dddd|  |pi d}W nt ty } zht|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ro|dkrg| j| jd n|dkrotd|dkr~tt||
dddd|s|
rtt|||
dd d }~ww |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|r
|r
t| 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-\}}|D ]}|r0|d.i d/d0d1gi d|d2< q| | | j!||d3 q|sJ|rJ| "| | #| t|d4d5d fD ]}t|d6tj$hfped7}||g %d8|d! i qX||||||d9t|d:thfd;tht&fd<t'hfd=t(hfd>d?thfd@d!d8t)hifdAt(hfdBS )CNplayback z%Downloading STREAKS playback API JSONzapplication/jsonzhttps://players.streaks.jp)AcceptOriginheaders)i  i  F)fatalmessagecodeidREQUEST_FAILED|   )	countries~   z:Access is denied (possibly due to invalid/missing API key)MEDIA_NOT_FOUNDz: )delimT)expectedwas_livenot_liveis_live)clipfilelinearlivetypesourcesc                 S   s   |d S )Nsrc _vr-   r-   L/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/streaks.py<lambda>?   s    z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>key_systemsr,   m3u8zUnsupported stream type: ssaiz/ssai/sessionzDownloading session parameters)zContent-Typer   )r   datar   querymp4hls)m3u8_idr   r)   r7   downloader_optionsffmpeg_argsz-live_start_index0is_from_start)targettracksc                 S   s   |d dv ot |d S )Nkind)captions	subtitlesr,   )r   r.   r-   r-   r1   r2   b   s    srclangjaurl)r   
display_idformatslive_statusrC   uploader_idnamedescriptionduration
updated_attags.)poster	thumbnail
created_at)titlerL   rM   modified_timestamprO   
thumbnails	timestamp)*_download_json_API_URL_TEMPLATEformatgeo_verification_headersr   
isinstancecauser   status_parse_jsonresponsereaddecoder   strintraise_geo_restricted_GEO_COUNTRIESr	   getr
   report_warningjsondumpsencodeurllibparseparse_qsr   #_extract_m3u8_formats_and_subtitles
setdefaultupdateextend_merge_subtitles
report_drm_remove_duplicate_formatslowerappendfilterr   r   r   )self
project_idmedia_idr   r7   r5   live_from_startr_   eerrorr   r   error_id
streaks_idrI   rH   rC   drm_formatssourcesrc_urlr%   extsession_paramsfmtssubsfmtlangr-   r-   r1   _extract_from_streaks_api   s   










z'StreaksBaseIE._extract_from_streaks_api)NNFF)__name__
__module____qualname__rX   _GEO_BYPASSre   r   r-   r-   r-   r1   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=dbdf2df35b4d483ebaeeaeb38c594647 dbdf2df35b4d483ebaeeaeb38c594647r8   z3shunenCM_edit.mp4gNbX9G@r$   20230726ididtipness)r   r   rS   rG   rM   rI   modified_daterT   rV   upload_daterJ   )rF   	info_dictzhhttps://players.streaks.jp/ktv-web/0298e8964c164ab384c07ef6e08c444b/index.html?m=ref:mycoffeetime_250317 dccdc079e3fd41f88b0c8435e2d453abu   わたしの珈琲時間_250317zref:mycoffeetime_250317g(\^@20250310i~gzre:https?://.+\.jpgi}gzktv-web)r   r   rS   rG   rM   rI   r   rT   rQ   rV   r   rJ   z[https://playback.api.streaks.jp/v1/projects/ktv-web/medias/b5411938e1e5435dac71edf829dd4813 b5411938e1e5435dac71edf829dd4813KANTELE_SYUSEi_063020250122i7gi!mg20241226)r   r   rS   rG   rI   r   rT   rQ   rV   r   rJ   zVhttps://playback.api.streaks.jp/v1/projects/tver-olympic/medias/ref:sp_240806_1748_dvr c10f7345adb648cf804d7578ab93b2e3u!   サッカー 男子 準決勝_dvrzref:sp_240806_1748_dvrg     P@r#   20240805iOfif20240804ztver-olympiczChttps://playback.api.streaks.jp/v1/projects/tbs/medias/ref:simul-02 c4e83a7b48f4409a96adacec674b4e22zref:simul-02r%   20241031i"gi[e20240117tbs)
r   r   rS   rG   rI   r   rT   rV   r   rJ   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)rF   only_matchingz#https://event.play.jp/playnext2023/ 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTキームービー（本番）playg1@iqc20221114iCPg20250213)r   r   rS   rJ   rM   rQ   rV   r   rT   r   rI   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   rS   rL   	age_limitrQ   )rF   playlist_mincountr   c                 C   sB   t |i \}}| |dd\}}| j||td|didS )Nry   r   zX-Streaks-Api-Keyapi_keyr   )r   _match_valid_urlgroupr   r   rf   )rx   rF   smuggled_datary   rz   r-   r-   r1   _real_extract   s   
zStreaksIE._real_extractN)	r   r   r   
_VALID_URL_EMBED_REGEXrb   _TESTS_WEBPAGE_TESTSr   r-   r-   r-   r1   r   z   s    Sr   )rh   urllib.parserk   commonr   networking.exceptionsr   utilsr   r   r   r	   r
   r   r   r   r   utils.traversalr   r   r   r-   r-   r-   r1   <module>   s    ,f