
    ic(                         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 ]Y  }|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	||,      \  }}|D ]/  }|s|j=                  d-i       j?                  d.d/d0gi       d|d1<   1 |jA                  |       | jC                  ||2       \ |s|r| jE                  |       | jG                  |       t        |d3d4 f      D ]I  }t        |d5t        jH                  hf      xs d6}|j=                  |g       jK                  d7|d    i       K ||||||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 # 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)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     K/var/www/files/kim/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<   downloader_optionsffmpeg_argsz-live_start_index0is_from_start)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>b   s!    1V90I#I#ckZ[\aZbNc 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   se   	**&&--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$ 0"NN#7<CC]UhjmTnDop+/C(0 NN4 !!$y!99	:< ;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<& 
 	
I  	!''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
K   
O1
D"O,,O1)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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   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       \  }}| j                  |      j                  dd      \  }}| j                  ||t	        d|j                  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   sn    *33]#44S9??dS
H--+#]%6%6y%A7 + .  	r7   N)	r   r   r   
_VALID_URL_EMBED_REGEXrh   _TESTS_WEBPAGE_TESTSr   r1   r7   r5   r   r   z   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   )rn   urllib.parserq   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r1   r7   r5   <module>r      sB      ! -
 
 
 +c
M c
Lz zr7   