U
    g                     @   sD   d dl mZ ddlmZmZmZmZmZmZm	Z	 G dd deZ
dS )   )InfoExtractor   )ExtractorErrorjoin_nonemptysmuggle_urlstr_or_nonestrip_or_nonetraverse_objupdate_url_queryc                   @   s   e Zd ZdZddddddddd	d
ddd
dgdddddddddddddd
ddg dddddd d!d"d#d$d%gd&d'd(d)dd*d+d,ddgZd-Zd.d/iZi Zd0d1 Zd9d3d4Z	d5d6 Z
d7d8 Zd2S ):TVerIEzbhttps?://(?:www\.)?tver\.jp/(?:(?P<type>lp|corner|series|episodes?|feature)/)+(?P<id>[a-zA-Z0-9]+)z$videos are only available for 7 daysz#https://tver.jp/episodes/ep83nf3w4puk   家事ヤロウ!!! 売り場席巻のチーズSP＆財前直見×森泉親子の脱東京暮らし密着！z$md5:dc2c06b6acc23f1e7c730c513737719bu   家事ヤロウ!!!uX   売り場席巻のチーズSP＆財前直見×森泉親子の脱東京暮らし密着！u   テレビ朝日Z
ep83nf3w4pZmp4u   5月3日(火)放送分u   家事ヤロウ!!! 売り場席巻のチーズSP＆財前直見×森泉親子の脱東京暮らし密着！ テレビ朝日 5月3日(火)放送分)
titledescriptionseriesepisode	alt_titlechannelidextonair_labelZ	ext_titleBrightcoveNew)skipurl	info_dictZadd_iezhttps://tver.jp/corner/f0103888T)r   Zonly_matchingzhttps://tver.jp/lp/f0033031z!https://tver.jp/series/srtxft431vZ
srtxft431vu   名探偵コナン)r   r   Z 779ffd97493ed59b0a6277ea726b389ezref:conan-1137-241005u9   名探偵コナン #1137「行列店、味変の秘密」Z5330942432001u   読売テレビz$md5:601fccc1d2430d942a2c8068c4b33eb5u&   #1137「行列店、味変の秘密」g+N@iŦfZ20241004ua   名探偵コナン #1137「行列店、味変の秘密」 読売テレビ 10月5日(土)放送分zre:https://.+\.jpg)r   r   r   Zuploader_idtagsr   r   r   r   duration	timestampZupload_dater   Z	thumbnail)md5r   )r   r   Zplaylistz!https://tver.jp/series/sru35hwdd2Z
sru35hwdd2u   神回だけ見せます！   )r   r   Zplaylist_countz!https://tver.jp/series/srkq2shp9dzFhttp://players.brightcove.net/%s/default_default/index.html?videoId=%szx-tver-platform-typeZwebc                 C   s,   | j dd ddd}t|ddddf| _d S )	NzAhttps://platform-api.tver.jp/v2/api/platform_users/browser/createzCreating sessions   device_type=pc)dataresultplatform_uidplatform_token)r    r!   )_download_jsonr	   _PLATFORM_QUERY)selfZsession_info r%   9/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/tver.py_real_initializeN   s      zTVerIE._real_initializeNc                 C   s(   | j d| |||| j| j|p i dS )Nz)https://platform-api.tver.jp/service/api/)fatalheadersquery)r"   _HEADERSr#   )r$   pathvideo_idnoter(   r*   r%   r%   r&   _call_platform_apiW   s       zTVerIE._call_platform_apic              	   c   s~   | j d| |d| jd}t|dddd dd	thfD ]B}| d
| |d| d}t|dddd dd	thfE d H  q6d S )Nz5https://service-api.tver.jp/api/v1/callSeriesSeasons/zDownloading seasons info)r)   r   contentsc                 S   s   |d dkS )NtypeZseasonr%   _vr%   r%   r&   <lambda>d       z6TVerIE._yield_episode_ids_for_series.<locals>.<lambda>contentr   zv1/callSeasonEpisodes/zDownloading season z episodes infoc                 S   s   |d dkS )Nr1   r   r%   r2   r%   r%   r&   r5   h   r6   )r"   r+   r	   strr/   )r$   Z	series_idZseasons_infoZ	season_idZepisodes_infor%   r%   r&   _yield_episode_ids_for_series_   s.         
     z$TVerIE._yield_episode_ids_for_seriesc                    s  |  |dd\}|dkrb| d d}| j| t|ddddthftd	d
 dS |dkr| j|dd}| 	| 
d|d| jd ddddid}t|dpi }t|dthfdd | jd ddd idd id!}|d" d# }t|d$dd%}	|	std&|	 s.d'|	 }	t|d}
t|d(}t||
d)d*pft|d}t|d+}t|d,} fd-d.d/D }d0|||
t|||d)d*|t|d1|t| j||	f d2d3gid4d5
S )6Nr   r1   r   zv2/callSeries/zDownloading series infor   r7   r   c                 S   s
   d|  S )Nzhttps://tver.jp/episodes/r%   )xr%   r%   r&   r5   s   r6   z&TVerIE._real_extract.<locals>.<lambda>)ZiegetterZepisodeszResolving to new URL)r.   )z-canonical"\s*href="(https?://tver\.jp/[^"]+)"z$&link=(https?://tver\.jp/[^?&]+)[?&]z	url regexzv1/callEpisode/zDownloading episode infoFZrequire_dataz<mylist,later[epefy106ur],good[epefy106ur],resume[epefy106ur])r(   r*   )r   r   r7   version5)defaultz(https://statics.tver.jp/content/episode/z.jsonzDownloading video infor4   ZRefererzhttps://tver.jp/)r*   r)   videoZ	accountID)r?   )Z
videoRefIDZvideoID)get_allz-Failed to extract reference ID for Brightcovezref:ZseriesTitle )delimZproductionProviderNameZbroadcastDateLabelc              	      s8   g | ]0\}}}|t d | d dd i||dqS )z9https://statics.tver.jp/images/content/thumbnail/episode//z.jpgr4   )r   r   widthheight)r
   ).0ZqualityrD   rE   r<   r-   r%   r&   
<listcomp>   s   	z(TVerIE._real_extract.<locals>.<listcomp>))smalli  i  )Zmediumi  ih  )Zlargei  i  )Zxlargei   i  Zurl_transparentr   Zgeo_countriesZJPr   )
_typer   r   r   r   r   r   
thumbnailsr   Zie_key)Z_match_valid_urlgroupr/   Zplaylist_from_matchesr9   r	   r8   r   Z_download_webpageZ	_match_idZ_search_regexr   r"   r   isdigitr   getr   r   BRIGHTCOVE_URL_TEMPLATE)r$   r   Z
video_typeZseries_infoZwebpageZepisode_infoZepisode_contentZ
video_infoZp_idZr_idr   r   r   Zproviderr   rK   r%   rG   r&   _real_extractj   s              
   

	 zTVerIE._real_extract)NTN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSrO   r+   r#   r'   r/   r9   rP   r%   r%   r%   r&   r      s|   ;	
r   N)commonr   utilsr   r   r   r   r   r	   r
   r   r%   r%   r%   r&   <module>   s   $