U
    gL.                     @   s   d dl mZ d dlm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 G dd deZG d	d
 d
eZG dd deZdS )   )BrightcoveNewIE)InfoExtractor)ThePlatformFeedIE)	YoutubeIE   )
ExtractorErrorextract_attributesfind_xpath_attrget_element_html_by_idint_or_nonesmuggle_urlupdate_url_queryurl_or_nonexpath_element
xpath_textc                   @   s.   e Zd ZdddZdd Zdd Zd	d
 ZdS )	CBSBaseIENenc           	      C   sZ   i }dD ]L\}}t || d|d|}|d k	r|d}|r||g ||d q|S )N))zsMPTE-TTCCURLtt)ZClosedCaptionURLZttml)ZwebVTTCaptionURLZvttz.//paramnamevalue)exturl)r	   Z	_xpath_nsget
setdefaultappend)	selfZsmil	namespaceZsubtitles_lang	subtitleskr   Zcc_eZcc_url r   8/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/cbs.py_parse_smil_subtitles   s    

zCBSBaseIE._parse_smil_subtitlesc                 C   sd  d| d| }d| }|  ||}g i  }}	d }
| D ]\}}z$| t|||d| d\}}W n tk
r } zz|}
|dkrW Y hq<d|d< z$| t|||d| d	\}}W n4 tk
r } z|}
W Y W Y q<W 5 d }~X Y nX W 5 d }~X Y nX || | |	|}	q<|
r6|s6| |
d
| ||||	d |dd | D  |S )NzdJ5BDC/media/guid//zhttps://link.theplatform.com/s/zDownloading z
 SMIL datafallback formatsz, SMIL data, trying again with another formatT)idr%   r   c                 S   s   i | ]\}}|d k	r||qS Nr   ).0r   vr   r   r    
<dictcomp>C   s       z8CBSBaseIE._extract_common_video_info.<locals>.<dictcomp>)	Z_extract_theplatform_metadataitemsZ_extract_theplatform_smilr   r   extendZ_merge_subtitlesZraise_no_formatsupdate)r   
content_idasset_typesmpx_acc
extra_infoZtp_pathZtp_release_urlinfor%   r   Zlast_e
asset_typequeryZ
tp_formatsZtp_subtitleser   r   r    _extract_common_video_info!   sJ    

 
 
2
z$CBSBaseIE._extract_common_video_infoc                 O   s   t dd S )Nz-This method must be implemented by subclasses)NotImplementedError)r   argskwargsr   r   r    _extract_video_infoF   s    zCBSBaseIE._extract_video_infoc                 C   s   |  | |S r'   )r:   Z	_match_id)r   r   r   r   r    _real_extractJ   s    zCBSBaseIE._real_extract)Nr   )__name__
__module____qualname__r!   r6   r:   r;   r   r   r   r    r      s   
%r   c                
   @   s|   e Zd ZdZdZddddddd	d
ddddi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gZd&d#d$Zd%S )'CBSIEFz(?x)
        (?:
            cbs:|
            https?://(?:www\.)?(?:
                cbs\.com/(?:shows|movies)/(?:video|[^/]+/video|[^/]+)/|
                colbertlateshow\.com/(?:video|podcasts)/)
        )(?P<id>[\w-]+)zAhttps://www.cbs.com/shows/video/xrUyNLtl9wd8D_RWWAg9NU2F_V6QpB3R/Z xrUyNLtl9wd8D_RWWAg9NU2F_V6QpB3Rmp4z!Tough As Nails - Dreams Never Diez$md5:a3535a62531cdd52b0364248a2c1ae33i
  i caZ20211209zCBSI-NEW)r&   r   titledescriptionduration	timestampupload_dateuploaderskip_downloadTzSubscription required)r   	info_dictparamsskipzAhttps://www.cbs.com/shows/video/sZH1MGgomIosZgxGJ1l263MFq16oMtW1/Z sZH1MGgomIosZgxGJ1l263MFq16oMtW1z5The Late Show - 3/16/22 (Michael Buble, Rose Matafeo)id2bz$md5:d0e6ec23c544b7fa8e39a8e6844d2439Z20220317)r&   rA   rD   rB   rF   rE   )Zignore_no_formats_errorrG   zThis content expired onzNo video formats foundz!Requested format is not availablez404 Not Found)r   rH   rI   Zexpected_warningsrJ   zOhttp://colbertlateshow.com/video/8GmB0oY0McANFvp2aEffk9jZZZ2YyXxy/the-colbeard/)r   Zonly_matchingzfhttp://www.colbertlateshow.com/podcasts/dYSwjqPs_X1tvbV_P2FcPWRa_qT6akTC/in-the-bad-room-with-stephen/cbs   ] c                    s@  | j d|||dd}t|d}t|ddp6t|dd}i }d}|dD ]}	t|	d	 d
 d}
 sxd d|
d< |
d=  |krqJn$t fdddD rd krJd}qJ dsd krd|
d< n dkrd|
d< |
| < qJ|s|r| | | j||||t|dtt|dtt|dtt|ddt	t|dd d!S )"Nz9https://can.cbs.com/thunder/player/videoPlayerService.php)ZpartnerZ	contentId)r4   z.//itemZ
videoTitlerA   Z
videotitleFZ	assetTypetrue)Zmbr
assetTypesr#   z)M3U+none,MPEG4,M3U+appleHlsEncryption,MP3r%   rN   c                 3   s   | ]}| kV  qd S r'   r   )r(   Zexcludedr3   r   r    	<genexpr>   s     z,CBSIE._extract_video_info.<locals>.<genexpr>)ZHLS_FPS	DASH_CENCZOnceURLrQ   TZHLSZ
StreamPackz	MPEG4,M3U)ZRTMPZWIFIZ3Gz	MPEG4,FLVZseriesTitleZseasonNumberZepisodeNumberZvideoLengthi  ZpreviewImageURL)rA   ZseriesZseason_numberZepisode_numberrC   	thumbnail)r1   )
Z_download_xmlr   r   findallany
startswithZ
report_drmr6   r   r   )r   r.   siter0   Z
items_dataZ
video_datarA   r/   Zhas_drmitemr4   r   rO   r    r:      sN     





zCBSIE._extract_video_infoN)rK   rL   )r<   r=   r>   Z_WORKING
_VALID_URL_TESTSr:   r   r   r   r    r?   N   sT   
 	  *r?   c                   @   s   e Zd ZdZ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g d
ddddddddddddd d!d"d#d$d%eeed&d'gd(gd)d*d+d,dd-d.d/d0d1d/d2d3d4d5d"d#d$d%eeeed6d7gd8d9d*gZd:d; Zd<S )=ParamountPressExpressIEzchttps?://(?:www\.)?paramountpressexpress\.com(?:/[\w-]+)+/(?P<yt>yt-)?video/?\?watch=(?P<id>[\w-]+)z^https://www.paramountpressexpress.com/cbs-entertainment/shows/survivor/video/?watch=pnzew7e2hxZ 56631dbcadaab980d1fc47cb7b76cba4Z6322981580112r@   u   I’m Feliciaz$md5:88fad93f8eede1c9c8f390239e4c62906055873637001Z20230320i0dgKH@zre:^https://.+\.jpg)
r&   r   rA   rB   uploader_idrE   rD   rC   rR   tags)r   md5rH   zOhttps://www.paramountpressexpress.com/cbs-entertainment/video/?watch=2s5eh8kppcZ edcb03e3210b88a3e56c05aa863e0e5bZ6323036027112uV   ‘Y&R’ Set Visit: Jerry O’Connell Quizzes Cast on Pre-Love Scene Rituals and Morez$md5:b929867a357aac5544b783d834c78383Z20230321i$dg/$`@zPhttps://www.paramountpressexpress.com/paramount-plus/yt-video/?watch=OX9wJWOcqckZOX9wJWOcqckz0Rugrats | Season 2 Official Trailer | Paramount+z$md5:1f7e26f5625a9f0d6564d9ad97a9f7dezParamount Plusz@paramountplusz%http://www.youtube.com/@paramountplusZUCrRttZIypNTA1Mrfwo745Sgz8https://www.youtube.com/channel/UCrRttZIypNTA1Mrfwo745SgZ20230316X       publicZnot_liveTz4https://i.ytimg.com/vi/OX9wJWOcqck/maxresdefault.jpgZEntertainmentZRugrats)r&   r   rA   rB   rF   r\   uploader_urlchannel
channel_idchannel_urlrE   rC   	age_limitavailabilitylive_statusplayable_in_embed
view_count
like_countchannel_follower_countrR   
categoriesr]   )r   rH   zJhttps://www.paramountpressexpress.com/showtime/yt-video/?watch=_ljssSoDLkwZ_ljssSoDLkwzPLavell Crawford: THEE Lavell Crawford Comedy Special Official Trailer | SHOWTIMEz$md5:39581bcc3fd810209b642609f448af70ZSHOWTIMEz	@Showtimez http://www.youtube.com/@ShowtimeZUCtwMWJr2BFPkuJTnSvCESSQz8https://www.youtube.com/channel/UCtwMWJr2BFPkuJTnSvCESSQZ202302091   z:https://i.ytimg.com/vi_webp/_ljssSoDLkw/maxresdefault.webpzPeople & Blogszcount:27)r&   r   rA   rB   rF   r\   rb   rc   rd   re   rE   rC   rf   rg   rh   ri   rj   rk   Zcomment_countrl   rR   rm   r]   c                 C   s   |  |dd\}}|r&| |tS | ||}| d|d}| d|d}ttd|p\d}|d	pld
}|dpzd}	|dpd}
| t	d| d|	 d|
 d| d|it
S )Nr&   Zytz$\bvideo_id\s*=\s*["\'](\d+)["\']\s*,zBrightcove IDz!\btoken\s*=\s*["\']([\w.-]+)["\']tokenZvcbrightcoveplayerr$   zdata-accountr[   zdata-playerZ
OtLKgXlO9Fz
data-embeddefaultzhttps://players.brightcove.net/r"   _z/index.html?videoId=)Z_match_valid_urlgroupZ
url_resultr   Z_download_webpageZ_search_regexr   r
   r   r   r   )r   r   Z
display_idZ
is_youtubeZwebpageZvideo_idro   ZplayerZ
account_idZ	player_idembedr   r   r    r;     s(      z%ParamountPressExpressIE._real_extractN)r<   r=   r>   rX   intrY   r;   r   r   r   r    rZ      s   UrZ   N)Z
brightcover   commonr   Ztheplatformr   Zyoutuber   utilsr   r   r	   r
   r   r   r   r   r   r   r   r?   rZ   r   r   r   r    <module>   s   0;b