U
    g                     @   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/861362209Z	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/856636948Z	856636948zAm Droi@  z$md5:100d8686fc9a632a0cb2db52a3433ffezAhttps://www.s4c.cymru/amg/1920x1080/Am_Dro_2022-23S4C_P6_4005.jpg)r   r	   r
   r   r   r   c              
   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 qV| jd|dd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enZodZclic )Zprogramme_idsignedlangmodeZappIdZ
streamNamezDownloading player config JSONqueryZnote	subtitlesc                 S   s   t |d S )Nr   )r   )_v r   8/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/s4c.py<lambda>-       z%S4CIE._real_extract.<locals>.<lambda>31)r   namez4https://player-api.s4c-cdn.co.uk/streaming-urls/prodZWWfalsefilename)r   ZapplicationZregionextraZ
thirdPartyr$   zDownloading streaming urls JSONZhlsr   )Zm3u8_idZposter)r   formatsr   r   full_prog_details    )Zprogramme_titleseries_titleZfull_billingr   c                 S   s   t | d S )N<   )int)xr   r   r   r   D   r   )r
   r   r   )get_all)
	_match_id_download_jsonr   
setdefaultgetappendZ_extract_m3u8_formatsr   strstrip)selfr   Zvideo_iddetailsZplayer_configr   subZm3u8_urlr   r   r   _real_extract   sf    
  	
 
zS4CIE._real_extractN__name__
__module____qualname__Z
_VALID_URLZ_TESTSr8   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   Z	864982911zIaith ar Daith)r   r
   )r   Zplaylist_mincountr   z+https://www.s4c.cymru/clic/series/866852587   Z	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_idZshow_prog_in_serieszDownloading series details JSONr   c                    s    g | ]}  d | t|qS )z%https://www.s4c.cymru/clic/programme/)Z
url_resultr   ).0Z
episode_idr5   r   r   
<listcomp>e   s   z-S4CSeriesIE._real_extract.<locals>.<listcomp>)Zother_progs_in_series.r   r'   r(   r)   )r.   r/   Zplaylist_resultr   r3   )r5   r   rB   Zseries_detailsr   rD   r   r8   [   s"    
 
 zS4CSeriesIE._real_extractNr9   r   r   r   r   r=   I   s   r=   N)commonr   utilsr   r   r   r=   r   r   r   r   <module>   s   D