
    i@                         S SK rSSKJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJr  SSKJrJr   " S S\5      r " S	 S
\5      rg)    N   )StreaksBaseIE   )ExtractorErrorGeoRestrictedError
clean_htmlint_or_nonejoin_nonemptymake_archive_idsmuggle_urlstr_or_nonestrip_or_nonetime_secondsunified_timestampupdate_url_queryurl_or_none)requiretraverse_objc            	          \ rS rSrSrS/rSrS0 SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)S*S+/S,S-S..ES/.S0 SS_SS	_SS_SS_SS_SS0_SS_SS1_SS_S2/ _SS_SS_SS_S S3_S"S4_S5S)_S6S*_S,S-S7.ES8S9S:S;/000S<.S=S>S?.S@S>S?.SASBSCSD.SESF.SGS,SSD.SHSI.SJS>S?./rSKrSLSMSNSO.r	0 r
0 rSP rSVSR jrSS rST rSUrgQ)WTVerIE   zbhttps?://(?:www\.)?tver\.jp/(?:(?P<type>lp|corner|series|episodes?|feature)/)+(?P<id>[a-zA-Z0-9]+)JPFz#https://tver.jp/episodes/epc1hdugbkid
epc1hdugbkextmp4
display_idz(ref:baeebeac-a2a6-4dbf-9eb3-c40d59b40068titleuR   神回だけ見せます！ #2 壮烈！車大騎馬戦（木曜スペシャル）	alt_titleu\   神回だけ見せます！ #2 壮烈！車大騎馬戦（木曜スペシャル） 日テレdescriptionz$md5:2726f742d5e3886edeaf72fb6d740fefuploader_idztver-ntvchannelu	   日テレdurationgjt@	thumbnailzShttps://statics.tver.jp/images/content/thumbnail/episode/xlarge/epc1hdugbk.jpg?v=16seriesu   神回だけ見せます！episodeu6   #2 壮烈！車大騎馬戦（木曜スペシャル）episode_numberr   	timestampigupload_date20250110modified_timestampixgmodified_date20250114not_livei-ob20220502z6brightcovenew ref:baeebeac-a2a6-4dbf-9eb3-c40d59b40068
sru35hwdd2
ss2lcn4af6)live_statusrelease_timestamprelease_date_old_archive_ids	series_id	season_idurl	info_dict4394098882001gClg@tagsis0nb20220501r3   r4   )r6   r7   extractor_argstverbackend
brightcove)r9   r:   paramszhttps://tver.jp/corner/f0103888T)r9   only_matchingzhttps://tver.jp/lp/f0033031z!https://tver.jp/series/srtxft431v
srtxft431vu   名探偵コナン)r   r      )r9   r:   playlist_mincountz!https://tver.jp/series/sru35hwdd2   )r9   r:   playlist_countz!https://tver.jp/series/srkq2shp9dzFhttp://players.brightcove.net/%s/default_default/index.html?videoId=%swebhttps://tver.jphttps://tver.jp/)zx-tver-platform-typeOriginRefererc                     U R                  SS SSS9n[        USSSS.45      U l        U R                  S	S S
S5      U l        g )NzAhttps://platform-api.tver.jp/v2/api/platform_users/browser/createzCreating sessions   device_type=pc)dataresultplatform_uidplatform_token)rQ   rR   z2https://player.tver.jp/player/streaks_info_v2.jsonzDownloading STREAKS API infoz#Unable to download STREAKS API info)_download_jsonr   _PLATFORM_QUERY_STREAKS_API_INFO)selfsession_infos     B/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/tver.py_real_initializeTVerIE._real_initializep   sh    **O$+< + >  ,L8*.F
 ;   "&!4!4@$*,Q"S    Nc           
      n    U R                  SU 3X#X@R                  0 U R                  EU=(       d    0 ES9$ )Nz)https://platform-api.tver.jp/service/api/)fatalheadersquery)rS   _HEADERSrT   )rV   pathvideo_idnoter]   r_   s         rX   _call_platform_apiTVerIE._call_platform_api|   sL    ""7v> 7&&7;B7 #  	r[   c           
   #      #    U R                  SU 3USU R                  S9n[        USSS SS[        145       H=  nU R	                  S	U 3US
U S35      n[        USSS SS[        145       S h  vN   M?     g  N	7f)Nz5https://service-api.tver.jp/api/v1/callSeriesSeasons/zDownloading seasons info)r^   rP   contentsc                     US   S:H  $ )Ntypeseason _vs     rX   <lambda>6TVerIE._yield_episode_ids_for_series.<locals>.<lambda>   s    !F)xBWr[   contentr   zv1/callSeasonEpisodes/zDownloading season z episodes infoc                     US   S:H  $ )Nri   r&   rk   rl   s     rX   ro   rp      s    1V9	3Ir[   )rS   r`   r   strrd   )rV   r6   seasons_infor7   episodes_infos        rX   _yield_episode_ids_for_series$TVerIE._yield_episode_ids_for_series   s     **CI;O14== + J &x5WYbdhknjoprI 33(4iCVW`VaaoAprM#M*&I9VZ]`\a4c d d d	rds   A0A>2A<3
A>c                 L   U R                  U5      R                  SS5      u  p#U R                  SS/5      S   nUS;  a  [        SU 3SS	9eUS
:X  aQ  U R	                  SU 3US5      nU R                  U R                  U5      U[        USSSS[        145      [        S S9$ US:w  a2  U R                  XSS9nU R                  U R                  SUS5      5      nU R	                  SU 3USSSS0S9n[        US5      =(       d    0 n[        US[        14SS 9n	U R                  S!U S"3US#S$U	0S%S&0S'9n
[        UR!                  S5      5      n[        UR!                  S(5      5      n[#        XS)S*9=(       d    [        U
R!                  S5      5      n[        UR!                  S+5      5      n[        UR!                  S,5      5      nS- VVVs/ s H!  u  nnnU[%        S.U S/U S03S$U	05      UUS1.PM#     nnnnUUU[#        XUS)S*9UUS2.[        U
S3[        14S4S5[&        14S6[&        14S7[        14S8[        14S9.5      En[        U
S:S;[        1[(        45      nU(       a  UR+                  5       (       d  S<U 3n[        U
SS=[        145      nU(       a  UR-                  S<5      (       d  S<U 3nUS>:X  d  U(       dt  US>:w  a  U R/                  S?US@9  U(       d
  [        SASS	9e[        U
S:SB[        1[1        SCSS	9145      n0 UESD[3        U R4                  UU4-  SEU R6                  05      SFSG.E$ U
S   SH   n[8        R:                  R=                  [?        SISJ9[8        R@                  RB                  5      RD                  SK-  =(       d    SKn U RG                  UUSLS&U RH                  U   SM   SNU 3   SO.5      n0 UEUEUU(       a  [Q        SFU5      /SQ.E$ S SQ.E$ s  snnnf ! [J         a1  nU RM                  URN                  U R6                  SSP9  0 n S nAN_S nAff = f)RNr   ri   r@   streaksr   )rA   ry   zInvalid backend value: Texpectedr%   zv2/callSeries/zDownloading series inforP   rq   r   c                     SU  3$ )Nzhttps://tver.jp/episodes/rk   )xs    rX   ro   &TVerIE._real_extract.<locals>.<lambda>   s    .Gs,Kr[   )iegetterepisodeszResolving to new URL)rc   )z-canonical"\s*href="(https?://tver\.jp/[^"]+)"z$&link=(https?://tver\.jp/[^?&]+)[?&]z	url regexzv1/callEpisode/zDownloading episode infoFrequire_dataz<mylist,later[epefy106ur],good[epefy106ur],resume[epefy106ur])r]   r_   )rP   r&   rq   version5)defaultz(https://statics.tver.jp/content/episode/z.jsonzDownloading video inforn   rM   rK   )r_   r^   seriesTitle )delimproductionProviderNamebroadcastDateLabel))smalli  i  )mediumi  ih  )largei  i  )xlargei   i  z9https://statics.tver.jp/images/content/thumbnail/episode//z.jpg)r   r9   widthheight)r   r%   r&   r   r"   
thumbnailsr    
viewStatusstartAtnoseriesIDseasonID)r    r3   r'   r6   r7   video)
videoRefIDvideoIDref:r   rA   z:No STREAKS ID found; falling back to Brightcove extraction)rb   z)Unable to extract brightcove reference ID	accountIDzbrightcove account IDurl_transparentgeo_countriesBrightcoveNew)_typer9   ie_key	projectID	   )hours   rJ   api_keykey0rL   rM   zX-Streaks-Api-Key)	countriesmetadata_available)r   r5   ))_match_valid_urlgroup_configuration_argr   rd   playlist_from_matchesrv   r   rs   r   _download_webpage	_match_id_search_regexr   rS   r   getr
   r   r	   any	isdecimal
startswithreport_warningr   r   BRIGHTCOVE_URL_TEMPLATE_GEO_COUNTRIESdtdatetimefromtimestampr   timezoneutcmonth_extract_from_streaks_apirU   r   raise_geo_restrictedorig_msgr   )rV   r9   rb   
video_typer@   series_infowebpageepisode_infoepisode_contentr   
video_infor&   r%   r   provideronair_labelqualityr   r   r   metadatabrightcove_id
streaks_id
account_id
project_idkey_idxstreaks_infoes                               rX   _real_extractTVerIE._real_extract   s*   #44S9??fM)))i[A!D33 #:7)!DtTT!11 
+X7PRK--228<h[8Y	7UXTY*Z["K . M M
 #,,SAW,XG~~d&8&8k'& 'H ..hZ((4NV[ ^d /  ':< B?A 	 [M0JTWX((6xjFRj.96H*I ) K
   3 3G <=_00?@&5 4:>>'23 	 223KLM!/"5"56J"KL+
+& 'OPWyXYZbYccgh'N$  + 	 
$ &u3O$
 : -u5&2I}%M#'+"7(3%0(3%0( 
" %Z';TWZV[]`1ab!8!8!:!:"=/2M!*y,.NO
j33F;;
|,J l"*,&##P[c $ e $%P[_``%jseg6MX\.]-^3` aJ*"00J3NN$d&9&9:< *   	*;7
++++Lq,A2;;??SYY\]]bab		99*j+-%)%;%;J%G	%RUYZaYbSc%dS L


 Ub-!P Q	
 	
 im	
 	
U
J " 	%%ajjD<O<Odh%iL	s   (O!-O( (
P#2'PP#)rT   rU   )NTN)__name__
__module____qualname____firstlineno__
_VALID_URLr   _GEO_BYPASS_TESTSr   r`   rT   rU   rY   rd   rv   r   __static_attributes__rk   r[   rX   r   r      s   vJVNK 5
,
5
 D
 i	

 w
 A
 :
 {
 
 n
 3
 O
 a
 
 :
  !*!
" Z#
$ &!+&!Y Z%%/
< 5
<
5
 i
 w	

 A
 ?
 {
 
 n
 B
 3
 O
 a
 
 :
   !
" J#
$ &%'
* $fy<..I%JK14 1 - 3)
   32
  3SLFZ g %#%H
 O
S	dw
r[   r   c                   r    \ rS rSrSrSrSrSSSSS	S
SS\SSSSSS.S.SSSSSSSSS\SSSSS.S./rS r	Sr
g )!TVerOlympicIEi	  ztver:olympicz https://olympic-data.tver.jp/apiz[https?://(?:www\.)?tver\.jp/olympic/milanocortina2026/(?P<type>live|video)/play/(?P<id>\w+)zVhttps://tver.jp/olympic/milanocortina2026/video/play/3b1d4462150b42558d9cc8aabb5238d0/ 3b1d4462150b42558d9cc8aabb5238d0r   u0   【開会式】ぎゅっと凝縮ハイライトz$ref:3b1d4462150b42558d9cc8aabb5238d0g(\@@r.   zre:\d{8}zcount:1zre:https://.+\.(?:jpg|png)iwi20260206tver-olympic)r   r   r   r   r#   r2   r,   r+   r<   r$   r(   r)   r!   r8   zAhttps://tver.jp/olympic/milanocortina2026/live/play/glts313itwvj/glts313itwvju   開会式ハイライトntvzref:sp_260207_spc_01_dvri   was_liveiLxitver-olympic-live)r   r   r   
channel_idr   r#   r2   r,   r+   r$   r(   r)   r!   c                 :   U R                  U5      R                  SS5      u  p#U R                  S5      nUS:X  Ga  SnSn[        U R	                  U R
                   SU 3U5      SS[        145      n[        US	[        145      n[        5       n	[        US
[        145      n
[        U
SS9nU(       d  [        S5      e[        US[        SS91[        S5      145      nX:  a  U R                  SU
 S3SS9  USUS.$ Xs=::  a  U:  a  O  OSnU(       a  US-  nOuX::  a4  [        US[        SS9145      nU(       a  X:  a  SnUS-  nOF[        SSS9eO;SnSnUnSn[        U R	                  U R
                   SU 3U5      SS[        145      n0 U R                  US U 3S!S"US#.US$9E[        US%[        1[        4S&[        1[        4S'[        1[        4S([        1[        4S)[        1[        [         4S
[        SS914S*["        1[         4S+.5      EUWS,.E$ )-Nri   r   live_from_startliver    a35ebb1ca7d443758dc7fcc5d99b1f72z/live/rg   rb   onair_start_dater   )	tz_offsetz#Unable to extract on-air start timeonair_end_datezon-air end timez&This program is scheduled to start at z JSTTrz   is_upcoming)r   r2   r3   is_live_dvrdvr_end_dater   z#This program is no longer availabler    4b55a4db3cce4ad38df6dd8543e3e46ar.   z/video/r   r   rJ   rK   r   )r   r   	sub_titler"   r   )r    description_ldescription_s)picture_l_urlpicture_m_urlpicture_s_url)r   r   r"   r   r    r(   r$   )r   r2   )r   r   	get_paramr   rS   	_API_BASEdictrs   r   r   r   r   raise_no_formatsr   r   filterr   r   )rV   r9   r   rb   r   r   r   olympic_datamedia_idnowstart_timestamp_strstart_timestampend_timestampr2   dvr_end_timestamps                  rX   r   TVerOlympicIE._real_extract2  s   #44S9??M
..):;,J8G'(;(;>>"&
3X)?AKVVZU[@\^L#L:u2EFH.C".|>PSVRW=X"Y/0CqQO"$%JKK( #4q#A"BWM^E_D`8b cM $%%<=P<QQUVae & g ##0)8 
 !7-7'"&H%$0"%6%C$D@F %G!$)@",K&H(=N N & (J8GH$K'(;(;>>"'(4h)@BLgX\W]A^`L
,,Z4z9J+-%,M  /	 - 0
 <!J<8)J<@%
|V<+j\6B QT^S_agilm03Dq3Q2RSQT_S`bef* 
 &!
 	
r[   rk   N)r   r   r   r   IE_NAMEr   r   intr   r   r   rk   r[   rX   r   r   	  s    G2IoJg4G@%("%6#%)
$ S /4%("%6#%.
#"FHB
r[   r   )r   r   ry   r   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   utils.traversalr   r   r   r   rk   r[   rX   <module>r
     sA     "    4p
] p
fk
M k
r[   