
    VGh(                     ^    d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZ  G d de      Zy)   )StreaksBaseIE   )ExtractorErrorint_or_nonejoin_nonemptymake_archive_idsmuggle_urlstr_or_nonestrip_or_noneupdate_url_query)requiretraverse_objc            	          e Zd ZdZdgZdZdi 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d+d,di dd
dddddddddd-dddd.ddd/g dddddddd0d!d1d2d(d3d)d4d5d6d7giiid8d9d:d;d<d:d;d=d>d?d@dAdBdCdDdd@dEdFdGd:d;gZdHZdIdJdKdLZi Z	dM Z
dRdOZdP ZdQ ZyN)STVerIEzbhttps?://(?: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)live_statusrelease_timestamprelease_date_old_archive_ids)url	info_dict4394098882001gClg@tagsis0nb20220501r*   r+   extractor_argstverbackend
brightcove)r-   r.   paramszhttps://tver.jp/corner/f0103888T)r-   only_matchingzhttps://tver.jp/lp/f0033031z!https://tver.jp/series/srtxft431v
srtxft431vu   名探偵コナン)r   r      )r-   r.   playlist_mincountz!https://tver.jp/series/sru35hwdd2
sru35hwdd2   )r-   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                 Z    | j                  dd dd      }t        |ddddf      | _        y )	NzAhttps://platform-api.tver.jp/v2/api/platform_users/browser/createzCreating sessions   device_type=pc)dataresultplatform_uidplatform_token)rF   rG   )_download_jsonr   _PLATFORM_QUERY)selfsession_infos     ^/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/tver.py_real_initializezTVerIE._real_initialized   sG    **O$+< + >  ,L8*.F
 ;      Nc           
      n    | j                  d| |||| j                  i | j                  |xs i       S )Nz)https://platform-api.tver.jp/service/api/)fatalheadersquery)rH   _HEADERSrI   )rJ   pathvideo_idnoterP   rR   s         rL   _call_platform_apizTVerIE._call_platform_apim   sP    ""7v>$ 7&&7;B7 #  	rN   c           
   #     K   | j                  d| |d| j                        }t        |ddd ddt        hf      D ]<  }| j	                  d	| |d
| d      }t        |ddd ddt        hf      E d {    > y 7 w)Nz5https://service-api.tver.jp/api/v1/callSeriesSeasons/zDownloading seasons info)rQ   rE   contentsc                     |d   dk(  S )Ntypeseason _vs     rL   <lambda>z6TVerIE._yield_episode_ids_for_series.<locals>.<lambda>z   s    !F)xBW rN   contentr   zv1/callSeasonEpisodes/zDownloading season z episodes infoc                     |d   dk(  S )Nr[   r   r]   r^   s     rL   ra   z6TVerIE._yield_episode_ids_for_series.<locals>.<lambda>~   s    1V9	3I rN   )rH   rS   r   strrW   )rJ   	series_idseasons_info	season_idepisodes_infos        rL   _yield_episode_ids_for_seriesz$TVerIE._yield_episode_ids_for_seriesu   s     **CI;O14== + J &x5WYbdhknjopr 	dI 33(4iCVW`VaaoAprM#M*&I9VZ]`\a4c d d d		dds   A3A?5A=6A?c                    | j                  |      j                  dd      \  }}| j                  ddg      d   }|dvrt        d| d	      |d
k(  rT| j	                  d| |d      }| j                  | j                  |      |t        |ddddt        hf      t        d       S |dk7  r6| j                  ||d      }| j                  | j                  d|d            }| j	                  d| |ddddi      }t        |d      xs i }t        |dt        hfd       }	| j                  d!| d"|d#d$|	id%d&i'      }
t        |j!                  d            }t        |j!                  d(            }t#        ||d)*      xs t        |
j!                  d            }t        |j!                  d+            }t        |j!                  d,            }d-D cg c]   \  }}}|t%        d.| d/| d0d$|	i      ||d1" }}}}|||t#        |||d)*      ||d2t        |
d3t        hfd4d5t&        hfd6t&        hfd7      }t        |
d8d9t        ht(        f      }|r|j+                         sd:| }t        |
dd;t        hf      }|r|j-                  d:      sd:| }|d<k(  s|sn|d<k7  r| j/                  d=|>       |st        d?d	      t        |
d8d@t        ht1        dAd	      hf      }i |dBt3        | j4                  ||fz  dCdDgi      dEdFS i | j7                  |
d   dG   |dHd&dI      |||rt9        dE|      gdJS d dJS c c}}}w )KNr   r[   r4   streaks    )r5   rk   zInvalid backend value: T)expectedr   zv2/callSeries/zDownloading series inforE   rb   r   c                     d|  S )Nzhttps://tver.jp/episodes/r]   )xs    rL   ra   z&TVerIE._real_extract.<locals>.<lambda>   s    .Gs,K rN   )iegetterepisodeszResolving to new URL)rV   )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])rP   rR   )rE   r   rb   version5)defaultz(https://statics.tver.jp/content/episode/z.jsonzDownloading video infor`   rB   r@   )rR   rQ   seriesTitle )delimproductionProviderNamebroadcastDateLabel))smalli  i  )mediumi  ih  )largei  i  )xlargei   i  z9https://statics.tver.jp/images/content/thumbnail/episode//z.jpg)r   r-   widthheight)r   r   r   r   r   
thumbnailsr   
viewStatusstartAtno)r   r*   r    video)
videoRefIDvideoIDzref:r   r5   z:No STREAKS ID found; falling back to Brightcove extraction)rU   z)Unable to extract brightcove reference ID	accountIDzbrightcove account IDurl_transparentgeo_countriesr   BrightcoveNew)_typer-   ie_key	projectIDr?   )rA   rB   )r   r,   )_match_valid_urlgroup_configuration_argr   rW   playlist_from_matchesri   r   rd   r   _download_webpage	_match_id_search_regexr
   rH   r   getr   r   r   any	isdecimal
startswithreport_warningr   r	   BRIGHTCOVE_URL_TEMPLATE_extract_from_streaks_apir   )rJ   r-   rU   
video_typer4   series_infowebpageepisode_infoepisode_contentrt   
video_infor   r   r   provideronair_labelqualityr   r   r   metadatabrightcove_id
streaks_id
account_ids                           rL   _real_extractzTVerIE._real_extract   sv   #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
 #,,S(AW,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$  

 
$ &uh3O$
 : -u5&2I}%M#'+"7( 
 %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$tf-/ * 
,,Z	-B;-OQ[+-^ 

 
 Ub-!P Q
 	
 im
 	
u
s   %M)NTN)__name__
__module____qualname__
_VALID_URL_GEO_COUNTRIES_GEO_BYPASS_TESTSr   rS   rI   rM   rW   ri   r   r]   rN   rL   r   r      s   vJVNK 5
,
5
 D
 i	

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

 A
 ?
 {
 
 n
 B
 3
 O
 a
 
 :
   !
" J#
& $fy<..I%JK-0 1 - 3)
   32
  3KHFR g %#%H
 O	dj
rN   r   N)rk   r   utilsr   r   r   r   r	   r
   r   r   utils.traversalr   r   r   r]   rN   rL   <module>r      s*    "	 	 	 4[
] [
rN   