
    bic(                         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	e          Z G 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                   $    e Zd ZdZdZdgZddZdS )StreaksBaseIEz4https://{}.api.streaks.jp/v1/projects/{}/medias/{}{}FJPNc                    	 |                      | j                            d||d          |dddd|                                 |pi           }nT# t          $ rF}t          |j        t                    r%|j        j        dv r| 	                    |j        j
                                                                        |d	
          }	t          |	dt          hf          }
t          |	dt          hf          }t          |	dt          hf          }|dk    r7|dk    r|                     | j                   n|dk    rt	          d          |dk    r!t	          t%          ||
d          d          |s|
r t	          t%          |||
d                     d }~ww xY w|d         }ddddd                    |                    d                    }g i }}d	}t          |dd f          D ]}|                    d          rd}|d          }|dk    }t)          |                    d                    }|d!k    r|                     d"|            j|r|rt          |                      | j                            d#||d$          |d%ddd&t-          j        d|d         i                                          '          d(d)t2          j        j        hf          }t9          ||          }|                     ||d*d+d	||,          \  }}|D ]6}|r2|                    d-i                               d.d/d0gi           d|d1<   7|                     |           | !                    ||2           |s|r| "                    |           | #                    |           t          |d3d4 f          D ]R}t          |d5t          j$        hf          pd6}|                    |g           %                    d7|d          i           S||||||d8t          |d9t          hfd:t          htL          fd;tN          hfd<tP          hfd=d>t          hfd?d d7tR          hifd@tP          hfdA          S )BN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                     |d         S )Nsrc _vs     R/DATA/AppData/hermes/venv/lib/python3.11/site-packages/yt_dlp/extractor/streaks.py<lambda>z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>?   s
    ah     key_systemsr0   m3u8zUnsupported stream type: ssaiz/ssai/sessionzDownloading session parameters)zContent-Typer   )r   datar   querymp4hls)m3u8_idr   r,   r<   downloader_optionsffmpeg_argsz-live_start_index0is_from_start)targettracksc                 @    |d         dv ot          |d                   S )Nkind)captions	subtitlesr0   )r   r2   s     r5   r6   z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>b   s$    1V90I#I#ckZ[\aZbNcNc r7   srclangjaurl)r   
display_idformatslive_statusrI   uploader_idnamedescriptionduration
updated_attags.)poster	thumbnail
created_at)titlerR   rS   modified_timestamprU   
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   r<   r:   live_from_startre   eerrorr   r   error_id
streaks_idrO   rN   rI   drm_formatssourcesrc_urlr(   extsession_paramsfmtssubsfmtlangs                              r5   _extract_from_streaks_apiz'StreaksBaseIE._extract_from_streaks_api   sg   	**&--j*hPRSSA0:L L 3355L }"	L +  HH  	 	 	!'9-- ]!'.J2N2N(()9)>)>)@)@)G)G)I)I8[`(aa&uy3%.@AA#EFSE?;;'se}==+++311D<O1PPPP!S,-ijjj,,,(tWD)Q)Q)Q\`aaaa ]7 ](tXwVZ)[)[)[\\\	" d^
	
 

 #hll6""
#
# 	  "8i9N9N-OPP 	: 	:Fzz-(( "UmG!Y.Gvzz&1122Cf}}##$E$E$EFFF D4 D!-d.A.A*11&*jRabb>-?K]^^T6$<$899@@BB	 /B / /
 w!6 78": ": +7NCCAA5%u7Z_ B a aJD$ 0 0" 0NN#7<<CC]UhjmTnDoppp+/C(NN4   !!$y!9999 	&; 	&OOH%%%&&w/// cc,
   	H 	HD  y39+&>??G4D  r**115$u+2FGGGG "&"%
 
 8 3% -uf='-9'3m_&Ese,6}?UV*]O<& &  
 	
s   AA F$EFF$)NNFF)__name__
__module____qualname__r^   _GEO_BYPASSrk   r   r1   r7   r5   r   r      s@        NKVN^
 ^
 ^
 ^
 ^
 ^
r7   r   c                      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dO ZdPS )Q	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 dbdf2df35b4d483ebaeeaeb38c594647r=   z3shunenCM_edit.mp4gNbX9G@r'   20230726ididtipness)r   r   rY   rM   rS   rO   modified_daterZ   r\   upload_daterP   )rL   	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   rY   rM   rS   rO   r   rZ   rW   r\   r   rP   z[https://playback.api.streaks.jp/v1/projects/ktv-web/medias/b5411938e1e5435dac71edf829dd4813 b5411938e1e5435dac71edf829dd4813KANTELE_SYUSEi_063020250122i7gi!mg20241226)r   r   rY   rM   rO   r   rZ   rW   r\   r   rP   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   rY   rM   rO   r   rZ   r\   r   rP   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)rL   only_matchingz#https://event.play.jp/playnext2023/ 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTキームービー（本番）playg1@iqc20221114iCPg20250213)r   r   rY   rP   rS   rW   r\   r   rZ   r   rO   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   rY   rR   	age_limitrW   )rL   playlist_mincountr   c           
          t          |i           \  }}|                     |                              dd          \  }}|                     ||t	          d|                    d          i                    S )Nr   r   zX-Streaks-Api-Keyapi_keyr   )r   _match_valid_urlgroupr   r   rl   )r~   rL   smuggled_datar   r   s        r5   _real_extractzStreaksIE._real_extract   s    *333]#44S99??dSS
H--+#]%6%6y%A%A7 + + .   	r7   N)	r   r   r   
_VALID_URL_EMBED_REGEXrh   _TESTS_WEBPAGE_TESTSr   r1   r7   r5   r   r   z   s       zpJ Q
1PPPQL C4)<%'",#%$
 
   z463%'",/#%$
 
 " m4*<%'",/#%$
 
 " h482%'",#%)
 
 $ U4($'",#% 
 
 " B [QFf 54>!/#%",'%
 
   MarAW
 

 
N6    r7   r   )rn   urllib.parserq   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r1   r7   r5   <module>r      s1        ! ! ! ! ! ! - - - - - -
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 + * * * * *c
 c
 c
 c
 c
M c
 c
 c
Lz z z z z z z z z zr7   