o
    iH                     @   s@   d dl mZ ddlmZmZ G dd deZG dd deZdS )	   )InfoExtractor   )traverse_objurl_or_nonec                	   @   sH   e Zd ZdZdddddddd	d
dddddddd	d
gZdd ZdS )S4CIEz8https?://(?:www\.)?s4c\.cymru/clic/programme/(?P<id>\d+)z.https://www.s4c.cymru/clic/programme/861362209	861362209mp4zY Swnz$md5:f7681a30e4955b250b3224aa9fe70cf0i  z<https://www.s4c.cymru/amg/1920x1080/Y_Swn_2023S4C_099_ii.jpg)idexttitledescriptionduration	thumbnail)url	info_dictz.https://www.s4c.cymru/clic/programme/886303048	886303048zPennod 1z$md5:7e3f364b70f61fcdaa8b4cb4a3eb3e7ai@  z>https://www.s4c.cymru/amg/1920x1080/Stad_2025S4C_P1_210053.jpgc              
   C   s  |  |}| jd| |dd}| jd||ddddd	d
dd}i }t|ddd fD ]}||ddg |d |dd q+| jd|dd|ddkrRdnddd|d dddd }|| j||ddd|t|dd t|d!d"d#thfd$tj	hfd%d&d hfd'fdd(S ))Nz?https://www.s4c.cymru/df/full_prog_details?lang=e&programme_id=F)fatalz:https://player-api.s4c-cdn.co.uk/player-configuration/prod0enodclic )programme_idsignedlangmodeappId
streamNamezDownloading player config JSONquerynote	subtitlesc                 S   s   t |d S )Nr   )r   )_v r$   H/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/s4c.py<lambda>.       z%S4CIE._real_extract.<locals>.<lambda>31)r   namez4https://player-api.s4c-cdn.co.uk/streaming-urls/prodapplications4chttplUKWWfalsefilename)r   r+   regionextra
thirdPartyr0   zDownloading streaming urls JSONhlsr   )m3u8_idposter)r	   formatsr!   r   full_prog_details    )programme_titleseries_titlefull_billingr   c                 S   s   t | d S )N<   )int)xr$   r$   r%   r&   E   r'   )r   r   r   )get_all)
	_match_id_download_jsonr   
setdefaultgetappend_extract_m3u8_formatsr   strstrip)selfr   video_iddetailsplayer_configr!   subm3u8_urlr$   r$   r%   _real_extract   s`   
	

zS4CIE._real_extractN__name__
__module____qualname__
_VALID_URL_TESTSrO   r$   r$   r$   r%   r      s,    r   c                   @   s<   e Zd ZdZdddddddd	d
dddgZdd ZdS )S4CSeriesIEz5https?://(?:www\.)?s4c\.cymru/clic/series/(?P<id>\d+)z+https://www.s4c.cymru/clic/series/864982911   	864982911zIaith ar Daith)r	   r   )r   playlist_mincountr   z+https://www.s4c.cymru/clic/series/866852587   	866852587z
FFIT Cymruc              
      sV     |} jd|d|dddd}  fddt|d	D |t|d
ddthfS )Nz'https://www.s4c.cymru/df/series_detailseY)r   	series_idshow_prog_in_serieszDownloading series details JSONr   c                    s    g | ]}  d | t|qS )z%https://www.s4c.cymru/clic/programme/)
url_resultr   ).0
episode_idrI   r$   r%   
<listcomp>f   s    z-S4CSeriesIE._real_extract.<locals>.<listcomp>)other_progs_in_series.r	   r8   r9   r;   )rA   rB   playlist_resultr   rG   )rI   r   r^   series_detailsr$   rc   r%   rO   \   s   

zS4CSeriesIE._real_extractNrP   r$   r$   r$   r%   rV   J   s     rV   N)commonr   utilsr   r   r   rV   r$   r$   r$   r%   <module>   s    E