
    }j,                         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mZ ddlmZ  G d d	e      Z G d
 de      Zy)    N   )InfoExtractor   )	HTTPError)
ExtractorError
clean_htmlfilter_dictfloat_or_noneint_or_nonejoin_nonemptymimetype2extparse_iso8601update_url_queryurl_or_none)traverse_objc                   0    e Zd ZdZdZdgZd ZddZd	dZy)
StreaksBaseIEz4https://{}.api.streaks.jp/v1/projects/{}/medias/{}{}FJPc                 >    | j                   j                  d||d      S )Nplayback )_API_URL_TEMPLATEformat)self
project_idmedia_ids      K/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/extractor/streaks.py_streaks_playback_api_urlz'StreaksBaseIE._streaks_playback_api_url   s    %%,,ZXrRR    Nc                 ~    | j                  | j                  ||      |dddd| j                         |xs i       S )Nz%Downloading STREAKS playback API JSONapplication/jsonzhttps://players.streaks.jp)AcceptOriginheaders)_download_jsonr   geo_verification_headers)r   r   r   r%   s       r   _download_streaks_playback_jsonz-StreaksBaseIE._download_streaks_playback_json   s_    ""**:x@=,6H //1H =b	H #  	r   c                    	 | j                  |||      }|d   }dddddj#                  |j#                  d            }g i }}d}|d   }t        |ddt$        ht&        f      }t        |d f      D ]Y  }|j#                  d      rd}|d   }|dk(  }t)        |j#                  d            }|dk7  r| j+                  d|        V|r|rt        | j-                  | j.                  j1                  d||d      |d d!d!d"t3        j4                  d|d   i      j7                         #      d$d%t8        j:                  j<                  hf      }t?        ||      }| jA                  ||d&d'd||(      \  }}|D ]/  }|s|jC                  d)i       jE                  d*d+d,gi       d|d-<   1 |jG                  |       | jI                  ||.       \ |s|r| jK                  |       | jM                  |       t        |d/d0 f      D ]I  }t        |d1tN        jP                  hf      xs d2}|jC                  |g       jS                  d3|d   i       K ||||||d4t        |d5t        ht        fd6t        ht        fd7tT        hfd8tV        hfd9dt        ht        tX        t        fd:dtZ        ht&        fd;tV        hfd<      S # t        $ r1}t        |j                  t              r|j                  j
                  dv r| j                  |j                  j                  j                         j                         |d      }t        |dt        ht        f      }	t        |dt        ht        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)=Nr$   )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sources.ssaic                     t        |d         S )Nsrcr   _vs     r   <lambda>z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>I   s    QuX. r   key_systemsr@   m3u8zUnsupported stream type: z/ssai/sessionzDownloading session parametersr!   )zContent-Typer"   )r%   datar   querymp4hls)m3u8_idr*   r;   rI   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	subtitlesr@   rA   rB   s     r   rE   z9StreaksBaseIE._extract_from_streaks_api.<locals>.<lambda>m   s!    1V90I#I#ckZ[\aZbNc r   srclangjaurl)r-   
display_idformatslive_statusrV   uploader_idnamedescriptionduration
updated_attags)	thumbnailposter
created_at)titler_   r`   modified_timestamprb   rc   	timestamp).r(   r   
isinstancecauser   status_parse_jsonresponsereaddecoder   r   filterr   raise_geo_restricted_GEO_COUNTRIESr   getdictanyr   report_warningr&   r   r   jsondumpsencodeurllibparseparse_qsr   #_extract_m3u8_formats_and_subtitles
setdefaultupdateextend_merge_subtitles
report_drm_remove_duplicate_formatsstrlowerappendr
   r   allr   )r   r   r   r%   rI   live_from_startrm   eerrorr+   r,   error_id
streaks_idr\   r[   rV   drm_formatsr=   r>   sourcesrc_urlr7   extsession_paramsfmtssubsfmtlangs                               r   _extract_from_streaks_apiz'StreaksBaseIE._extract_from_streaks_api'   sJ   	;;JZa;bH$ d^
	

 #hll6"
# 	  9%Gc6D63%?@"7.-
  	: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!9=	:@ ;OOH%&&w/ c,
  	HD  y399+&>?G4D  r*115$u+2FG		H "&"%
 8 :,7 -
|VD'-9'3m_&EzlFCH5u{mSQ*]O<& 
 	
Q  	!''9-!''..J2N(()9)9)>)>)@)G)G)I8[`(a&uy:,.OP#EFZL&+IJ'{m/DE++311D<O<O1P!S,-ijj,,(tWD)Q\`aa7(tXwVZ)[\\	s   J> >
O9D,O44O9)N)NNF)	__name__
__module____qualname__r   _GEO_BYPASSrr   r   r(   r    r   r   r   r      s%    NKVNS[
r   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)giiid*d+d,dd-d.d/d0d1d2d3d4d5d6d&d'd(d7giiid8d9d:d;ded<d=d>d?d@dAdBdC
d8dDdEdFdGgZdHdIddJdKdLddMdNdOdPddQdRdFid*dSdTdUdVdWddXdYd8dZgZd[ Zy\)]	StreaksIEz|https?://players\.streaks\.jp/(?P<project_id>[\w-]+)/(?P<api_key>[\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=ba2c253508914d9ea061a5f26bc58b20 ba2c253508914d9ea061a5f26bc58b20rJ   ztarun_suimin.mp4g/$p@r6   20230908idiHdtipness)
r-   r   rf   r`   r\   modified_daterg   rh   upload_dater]   )rY   	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   rf   rZ   r`   r\   r   rg   rc   rh   r   r]   z\https://playback.api.streaks.jp/v1/projects/ktv-news/medias/714171c4c53c409bb41e1572997ebfcf 714171c4c53c409bb41e1572997ebfcfz	28105.mp4gˡEH@20260702iOFjiFjzktv-news)r-   r   rf   r`   r\   r   rg   rc   rh   r   r]   extractor_argsstreaksapi_key 0ff2ccfb6381401582d6ee60e3cb66a1)rY   r   paramszVhttps://playback.api.streaks.jp/v1/projects/tver-olympic/medias/ref:sp_240806_1748_dvr c10f7345adb648cf804d7578ab93b2e3u!   サッカー 男子 準決勝_dvrzref:sp_240806_1748_dvrg     P@r5   20240805iOfif20240804ztver-olympic)r-   r   rf   rZ   r`   r\   r   rg   rh   r   r]    e09168c4383d4b18949067022558f071zInvalid URL)rY   r   r   skipzChttps://playback.api.streaks.jp/v1/projects/tbs/medias/ref:simul-02 c4e83a7b48f4409a96adacec674b4e22zref:simul-02r7   20241031i"gi[e20240117tbs)
r-   r   rf   rZ   r\   r   rg   rh   r   r]   )rY   r   r   zphttps://players.streaks.jp/sp-jbc/a12d7ee0f40c49d6a0a2bff520639677/index.html?m=5f89c62f37ee4a68be8e6e3b1396c7d8T)rY   only_matchingz#https://event.play.jp/playnext2023/ 2d975178293140dc8074a7fc536a7604u'   PLAY NEXTキームービー（本番）playg1@iqc20221114iCPg20250213)r-   r   rf   r]   r`   rc   rh   r   rg   r   r\   nocheckcertificatez{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-   rf   r_   	age_limitrc   )rY   playlist_mincountr   r   c                     | j                  |      j                         }|d   |d   }}|j                  d      xs | j                  dd g      d   }| j	                  ||t        d|i            S )Nr   r-   r   r   zX-Streaks-Api-Keyr$   )_match_valid_url	groupdictrs   _configuration_argr   r	   )r   rY   mobjr   r   r   s         r   _real_extractzStreaksIE._real_extract  s    $$S)335#L14:H
((9%V)@)@TF)STU)V--+#W7 + .  	r   N)	r   r   r   
_VALID_URL_EMBED_REGEXr   _TESTS_WEBPAGE_TESTSr   r   r   r   r   r      s    	HpJ @
1aPQL C4'%'",#%$
" z463%'",/#%$
& n4 %'",/#%%
 $i)>`=a1b%cd!& h482%'",#%)
 $i)>`=a1b%cd#( U4($'",#% 
 $ BgWFt 54>!/#%",'%
 (.!$ MarAW
 #N<r   r   )rw   urllib.parserz   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r   r   <module>r      sB      ! -   +m
M m
`D Dr   