o
    i&                     @   sT   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
G dd deZdS )	   )InfoExtractor   )ExtractorErrorfloat_or_noneint_or_nonejoin_nonemptyparse_iso8601	qualitiestry_getc                   @   sR   e Zd ZdZdZdgZdddddd	Zd
dddddZdd Zdd Z	dd Z
dS )SRGSSRIEa  (?x)
                    (?:
                        https?://tp\.srgssr\.ch/p(?:/[^/]+)+\?urn=urn|
                        srgssr
                    ):
                    (?P<bu>
                        srf|rts|rsi|rtr|swi
                    ):(?:[^:]+:)?
                    (?P<type>
                        video|audio
                    ):
                    (?P<id>
                        [0-9a-f\-]{36}|\d+
                    )
                    FCHz_To protect children under the age of 12, this video is only available between 8 p.m. and 6 a.m.z`To protect children under the age of 18, this video is only available between 11 p.m. and 5 a.m.z?For legal reasons, this video is only available in Switzerland.z2The video cannot be transmitted for legal reasons.z8This video is not yet available. Please try again later.)AGERATING12AGERATING18GEOBLOCKLEGAL	STARTDATEdefritrmen)srfrtsrsirtrswic                 C   sL   | j d|d| dddpi }t|dd }|r$|d|vrdnd	| 7 }|S )
Nz%http://tp.srgssr.ch/akahd/token?acl=*zDownloading z tokenF)fatalc                 S   s   | d d S )Ntoken
authparams )xr   r   K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/srgssr.py<lambda>4   s    z-SRGSSRIE._get_tokenized_src.<locals>.<lambda>?&)_download_jsonr
   )selfurlvideo_id	format_idr   auth_paramsr   r   r!   _get_tokenized_src0   s   zSRGSSRIE._get_tokenized_srcc           	         s   |dkrddini }| j d| d| d  d |dd	 }zt fd
d|D }W n ty6   tdw |d}|r`|| jv r`| j| }|dkrT| j|| jd t| j d| dd|S )NvideoonlyChaptersTz*https://il.srgssr.ch/integrationlayer/2.0/z/mediaComposition//z.json)querychapterListc                 3   s"    | ]}| d  kr|V  qdS )idN)get).0r    media_idr   r!   	<genexpr>?   s    z+SRGSSRIE._get_media_data.<locals>.<genexpr>zNo media information foundblockReasonr   )msg	countriesz said: )expected)	r%   nextStopIterationr   r2   _ERRORSraise_geo_restricted_GEO_COUNTRIESIE_NAME)	r&   bu
media_typer5   r/   full_media_data
media_datablock_reasonmessager   r4   r!   _get_media_data9   s2   

zSRGSSRIE._get_media_datac              	   C   s  |  | \}}}| |||}|d }g }i }tddg}	|dp%g D ]o}
|
d}|s0q&|
d}|
d}t||
d|}|d	v r|
d
dkri| |||}| ||\}}|| | 	||}q&|dkr| j
||dd|dd\}}|| | 	||}q&|dv r||||	|d q&t|ddkrdD ]}|d| d}|sq|d }|d| ||	|d q|dkr|dpg D ]}|d}|sq|dp| j| }||g d|i q|||dt|d|dt|d d!||d"S )#NtitleSDHDresourceListr'   protocolqualityencoding)HDSHLS	tokenTypeAKAMAIrP   mp4m3u8_nativeF)m3u8_idr   )HTTPHTTPS)r)   r'   rM   position    )SHpodcastdUrlDzPODCAST-r,   subtitleListlocaledescriptiondateimageUrldurationi  )r1   rH   ra   	timestamp	thumbnailrd   	subtitlesformats)_match_valid_urlgroupsrG   r	   r2   r   r+   %_extract_akamai_formats_and_subtitlesextend_merge_subtitles#_extract_m3u8_formats_and_subtitlesappendr   _DEFAULT_LANGUAGE_CODES
setdefaultr   r   )r&   r'   rA   rB   r5   rD   rH   rh   rg   qsource
format_urlrL   rM   r)   fmtssubs	m3u8_fmts	m3u8_subsppodcast_urlsubsub_urllangr   r   r!   _real_extractO   s   





	

zSRGSSRIE._real_extractN)__name__
__module____qualname__
_VALID_URL_GEO_BYPASSr?   r=   rp   r+   rG   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g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id#d$d%dd&d'd(d)d*d+d,d-	ddidd.dd/d0dd/d1dd/d2dd/gZd3d4 Zd5S )6SRGSSRPlayIEz:srf.ch, rts.ch, rsi.ch, rtr.ch and swissinfo.ch play sitesa  (?x)
                    https?://
                        (?:(?:www|play)\.)?
                        (?P<bu>srf|rts|rsi|rtr|swissinfo)\.ch/play/(?:tv|radio)/
                        (?:
                            [^/]+/(?P<type>video|audio)/[^?]+|
                            popup(?P<type_2>video|audio)player
                        )
                        \?.*?\b(?:id=|urn=urn:[^:]+:video:)(?P<id>[0-9a-f\-]{36}|\d+)
                    zrhttp://www.srf.ch/play/tv/10vor10/video/snowden-beantragt-asyl-in-russland?id=28e1a57d-5b76-4399-8ab3-9097f071e6c5 6db2226ba97f62ad42ce09783680046cz$28e1a57d-5b76-4399-8ab3-9097f071e6c5rS   20130701z"Snowden beantragt Asyl in RusslandiwQgrht\@zre:^https?://.*1383719781\.png$)r1   extupload_daterH   re   rd   rf   zUnable to download f4m manifest)r'   md5	info_dictexpected_warningszhttp://www.rtr.ch/play/radio/actualitad/audio/saira-tujetsch-tuttina-cuntinuar-cun-sedrun-muster-turissem?id=63cb0778-27f8-49af-9284-8c7a8c6d15fcz$63cb0778-27f8-49af-9284-8c7a8c6d15fcmp320151013u?   Saira: Tujetsch - tuttina cuntinuar cun Sedrun Mustér Turissemi(VgVu@)r1   r   r   rH   re   rd   skip_downloadT)r'   r   paramsz5http://www.rts.ch/play/tv/-/video/le-19h30?id=6348260 67a2a9ae4e8e62a68d0e9820cc9782df6348260gףp=
@zLe 19h3020141201i|Tzre:^https?://.*\.image)r1   
display_idr   rd   rH   r   re   rf   )r'   r   r   r   z_http://play.swissinfo.ch/play/tv/business/video/why-people-were-against-tax-reforms?id=4296027042960270z#Why people were against tax reformsz$md5:7ac442c558e9630e947427469c4b824dg     W@20170215iwXz8re:https?://www\.swissinfo\.ch/srgscalableimage/42961964zcount:9)	r1   r   rH   ra   rd   r   re   rf   rg   zShttps://www.srf.ch/play/tv/popupvideoplayer?id=c4dba0ca-e75b-43b2-a34f-f708a4932e01)r'   only_matchingzhttps://www.srf.ch/play/tv/10vor10/video/snowden-beantragt-asyl-in-russland?urn=urn:srf:video:28e1a57d-5b76-4399-8ab3-9097f071e6c5zIhttps://www.rts.ch/play/tv/19h30/video/le-19h30?urn=urn:rts:video:6348260zVhttps://www.srf.ch/play/radio/popupaudioplayer?id=50b20dc8-f05b-4972-bf03-e438ff2833ebc                 C   sX   |  |}|d}|dp|d}|d}| d|d d  d| d| dS )	NrA   typetype_2r1   zsrgssr:   :SRGSSR)ri   group
url_result)r&   r'   mobjrA   rB   r5   r   r   r!   r~      s
   


&zSRGSSRPlayIE._real_extractN)r   r   r   IE_DESCr   _TESTSr~   r   r   r   r!   r      s    	
Kr   N)commonr   utilsr   r   r   r   r   r	   r
   r   r   r   r   r   r!   <module>   s
    $ 