
    ukij'                         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y)    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y)StreaksBaseIEz4https://{}.api.streaks.jp/v1/projects/{}/medias/{}{}FJPNc                    	 | j                  | j                  j                  d||d      |dddd| j                         |xs i       }|d   }dddddj'                  |j'                  d            }g i }}d	}t        |dd f      D ]%  }|j'                  d      rd}|d    }|dk(  }t)        |j'                  d            }|d!k7  r| j+                  d"|        V|r|rt        | j                  | j                  j                  d#||d$      |d%ddd&t-        j.                  d|d   i      j1                         '      d(d)t2        j4                  j6                  hf      }t9        ||      }| j;                  ||d*d+d	||,      \  }}|j=                  |       | j?                  ||-       ( |s|r| jA                  |       | jC                  |       t        |d.d/ f      D ]I  }t        |d0t        jD                  hf      xs d1}|jG                  |g       jI                  d2|d    i       K ||||||d3t        |d4t        hfd5t        htJ        fd6tL        hfd7tN        hfd8d9t        hfd:d d2tP        hifd;tN        hfd<      S # t        $ r'}t        |j                  t              r|j                  j                  dv r| j                  |j                  j                  j                         j                         |d	
      }t        |dt        hf      }	t        |dt        hf      }
t        |dt        hf      }|
dk(  r2|dk(  r| j!                  | 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)=N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     S/home/cdr/jupyterlab/.venv/lib/python3.12/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<   )targettracksc                 0    |d   dv xr t        |d         S )Nkind)captions	subtitlesr0   )r   r2   s     r5   r6   z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>^   s!    1V90I#I#ckZ[\aZbNc r7   srclangjaurl)r   
display_idformatslive_statusrE   uploader_idnamedescriptionduration
updated_attags.)poster	thumbnail
created_at)titlerN   rO   modified_timestamprQ   
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extend_merge_subtitles
report_drm_remove_duplicate_formatslower
setdefaultappendfilterr	   r   r   )self
project_idmedia_idr   r<   r:   ra   eerrorr   r   error_id
streaks_idrK   rJ   rE   drm_formatssourcesrc_urlr(   extsession_paramsfmtssubslangs                            r5   _extract_from_streaks_apiz'StreaksBaseIE._extract_from_streaks_api   s!   	**&&--j*hPRSA0:L 335L }"	L + H2 d^
	

 #hll6"
# 	  "8i9N-OP 	:Fzz-("UmG!Y.Gvzz&12Cf}##&?u$EF4!-d.A.A**11&*jRab>-?K]^T6$<$89@@B	 /B /
 w!6!6 78": +7NCAA5%u7Z_ B aJD$NN4 !!$y!91	:4 ;OOH%&&w/ c,
  	HD  y399+&>?G4D  r*115$u+2FG		H "&"%
 8 3% -uf='-9'3m_&Ese,6}?UV*]O<& 
 	
A  	!''9-!''..J2N(()9)9)>)>)@)G)G)I8[`(a&uy3%.@A#EFSE?;'se}=++311D<O<O1P!S,-ijj,,(tWD)Q\`aa7(tXwVZ)[\\	s   A
J 
N=D"N88N=)NNF)__name__
__module____qualname__rZ   _GEO_BYPASSrg   r   r1   r7   r5   r   r      s    NKVNZ
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yP)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   rU   rI   rO   rK   modified_daterV   rX   upload_daterL   )rH   	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   rU   rI   rO   rK   r   rV   rS   rX   r   rL   z[https://playback.api.streaks.jp/v1/projects/ktv-web/medias/b5411938e1e5435dac71edf829dd4813 b5411938e1e5435dac71edf829dd4813KANTELE_SYUSEi_063020250122i7gi!mg20241226)r   r   rU   rI   rK   r   rV   rS   rX   r   rL   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   rU   rI   rK   r   rV   rX   r   rL   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)rH   only_matchingz#https://event.play.jp/playnext2023/ 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTキームービー（本番）playg1@iqc20221114iCPg20250213)r   r   rU   rL   rO   rS   rX   r   rV   r   rK   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   rU   rN   	age_limitrS   )rH   playlist_mincountr   c           
          t        |i       \  }}| j                  |      j                  dd      \  }}| j                  ||t	        d|j                  d      i            S )Nrz   r   zX-Streaks-Api-Keyapi_keyr   )r   _match_valid_urlgroupr   r   rh   )ry   rH   smuggled_datarz   r{   s        r5   _real_extractzStreaksIE._real_extract   sn    *33]#44S9??dS
H--+#]%6%6y%A7 + .  	r7   N)	r   r   r   
_VALID_URL_EMBED_REGEXrd   _TESTS_WEBPAGE_TESTSr   r1   r7   r5   r   r   v   s   zpJ @
1a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   )rj   urllib.parserm   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r1   r7   r5   <module>r      sB      ! -
 
 
 +_
M _
Dz zr7   