
    }j                     \    d dl mZ ddlmZmZmZ ddlmZ  G d de      Z G d de      Z	y	)
   )InfoExtractor   )str_or_noneunified_strdateurl_or_none)traverse_objc                   p    e Zd ZdZdddddddd	d
ddd
ddddddddddddd
ddddddddddd dgZd! Zy")#S4CIEz8https?://(?:www\.)?s4c\.cymru/clic/programme/(?P<id>\d+)z.https://www.s4c.cymru/clic/programme/893068169	893068169mp4Uchafbwyntiauz$md5:5d7c0e28213d7e0871b8e9ef8a67a5fei  zLhttps://www.s4c.cymru/amg/1920x1080/Pride_2024S4C-P11_Uchafbwyntiau-0608.jpg2024070120240717zPride Cymru 2024	893067960)
idexttitledescriptionduration	thumbnailupload_daterelease_dateseries	series_id)url	info_dictz.https://www.s4c.cymru/clic/programme/947426692	947426692zBwyd a Diodz$md5:9d33c3099b93884d946575f4b77fce27id  z>https://www.s4c.cymru/amg/1920x1080/3can_2026S4C_Brand_001.jpg2026051320260521z3 Can	947426687z.https://www.s4c.cymru/clic/programme/876045439	876045439zFfa Coffi Pawb!z$md5:d1ccbb61c4233b3a443cc092f45bc193i  zBhttps://www.s4c.cymru/amg/1920x1080/Ffa_Coffi_Pawb_2024S4C_001.jpg20260131)r   r   r   r   r   r   r   r   c                    | j                  |      }| j                  d| |d      }| j                  d||ddddd	d
d      }i }t        |dd f      D ]H  }|j                  |j	                  dd      g       j                  |d   |j	                  d      d       J | j                  d|dd|j	                  d      dk(  rdnddd|d   dd      d   }|| j                  ||dd      |t        |j	                  d            dt        |d d!d"t        hfd#t        j                  hfd$d% hfd&t        hfd't        hfd(t        ht        fd)t        ht        fd*f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                     t        |d         S )Nr%   )r   )_vs     G/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/extractor/s4c.py<lambda>z%S4CIE._real_extract.<locals>.<lambda>H   s    +VWX[V\J]     31)r   namez4https://player-api.s4c-cdn.co.uk/streaming-urls/prodapplications4chttplUKWWfalsefilename)r-   r=   regionextra
thirdPartyrB   zDownloading streaming urls JSONhlsr   )m3u8_idposter)r   formatsr3   r   full_prog_details    )programme_titleseries_titlefull_billingr   c                     t        |       dz  S )N<   )int)xs    r7   r8   z%S4CIE._real_extract.<locals>.<lambda>_   s    CFRK r9   
clic_airedlast_txrM   r   )r   r   r   r   r   r   r   )get_all)	_match_id_download_jsonr   
setdefaultgetappend_extract_m3u8_formatsr   strstripr   filterr   )selfr   video_iddetailsplayer_configr3   subm3u8_urls           r7   _real_extractzS4CIE._real_extract8   s   >>#&%%MhZXE & # ++H( ( [ 5 , 6 	=]/^_ 	C  d!3R8??3xA 	
 &&BH%"/"3"3M"Bj"P$VZ %)*5U 6 ' 7 8=> 11(HeUZ1["$]%6%6x%@A	

 7%8!=uE .<'*?)@A ,.?@!*_,= >)C5&9)K=&A> % 
 	
r9   N__name__
__module____qualname__
_VALID_URL_TESTSre    r9   r7   r
   r
   
   s    LJ?$Ag%&($
  @"AY%&$
" @&A]%&	
;*FX-
r9   r
   c                   :    e Zd ZdZdddddddd	d
dddgZd Zy)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                    | j                  |      }| j                  d|d|ddd      }| j                  t        |d      D cg c]  }| j	                  d| t
        |       c}|t        |d	d
dt        hf            S c c}w )Nz'https://www.s4c.cymru/df/series_detailseY)r,   r   show_prog_in_serieszDownloading series details JSONr0   )other_progs_in_series.r   z%https://www.s4c.cymru/clic/programme/rJ   rK   rM   )rV   rW   playlist_resultr   
url_resultr
   r\   )r_   r   r   series_details
episode_ids        r7   re   zS4CSeriesIE._real_extractz   s    NN3'	,,5y&'*I 6 - 7 ##+N<`ac __DZLQSXZde c|N5H!^^a]b4cdf 	fcs   !BNrf   rl   r9   r7   rn   rn   h   sB    IJ<%
 =!
F fr9   rn   N)
commonr   utilsr   r   r   utils.traversalr   r
   rn   rl   r9   r7   <module>r      s4    ! 
 +[
M [
|f- fr9   