o
    i5                     @   sX   d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZ G dd deZdS )   )InfoExtractor   )ExtractorErrorISO639Utilsdict_getint_or_noneparse_age_limittry_getunified_timestampurl_or_none)requiretraverse_objc                   @   s   e Zd ZdZdddddddd	d
ddgg ddddddiddddd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)g d*gd+d,d-ddidd.d/dd0d1dd2d3d4gg d5d6d7d8d9d:d;ddidd<d=d>gZd?d@ ZdAS )BURPlayIEzLhttps?://(?:www\.)?ur(?:play|skola)\.se/(?:program|Produkter)/(?P<id>[0-9]+)zhttps://urplay.se/program/203704-ur-samtiden-livet-universum-och-rymdens-markliga-musik-om-vetenskap-kritiskt-tankande-och-motstand203704mp4uk   UR Samtiden - Livet, universum och rymdens märkliga musik : Om vetenskap, kritiskt tänkande och motståndz$md5:5344508a52aa78c1ced6c1b8b9e44e9azre:^https?://.+\.jpgip3Z20171214u:   UR Samtiden - Livet, universum och rymdens märkliga musiki  zKultur & historia)u   Kritiskt tänkande	VetenskapzVetenskaplig verksamhetu.   Om vetenskap, kritiskt tänkande och motstånd   )idexttitledescription	thumbnail	timestampupload_dateseriesduration
categoriestagsepisode	age_limitskip_downloadm3u8)url	info_dictparamszOhttps://urplay.se/program/222967-en-foralders-dagbok-mitt-barn-skadar-sig-sjalv222967u3   En förälders dagbok : Mitt barn skadar sig självz$md5:9f771eef03a732a213b367b52fe826cai "a20210823u   En förälders dagboki     zcount:2zcount:7u   Mitt barn skadar sig själv)r   r   r   r   r   r   r   r   r   r    episode_numberr   r   r   z=https://urskola.se/Produkter/190031-Tripp-Trapp-Trad-Sovkudde190031u   Tripp, Trapp, Träd : Sovkuddez$md5:b86bffdae04a7e9379d1d7e5947df1d1iU20150820u   Tripp, Trapp, Trädia  r   SovaSovkuddeu	   Säsong 1)r   r   r   r   r   r   r   r   r   r    r)   r   r   r   seasonzShttps://urplay.se/program/242932-vulkanernas-krafter-fran-kraftfull-till-forgorande242932u7   Vulkanernas krafter : Från kraftfull till förgörandez$md5:742bb87048e7d5a7f209d28f9bb70ab1i5
  z.https://assets.ur.se/id/242932/images/1_hd.jpgzVetenskap & teknik)GeofysikNaturvetenskapVulkanerVulkanutbrottzVulkanernas krafteru!   Från kraftfull till förgörander   ii20251119)r   r   r   r   r    r   r   r   r   r   r   r)   r   r   zKhttp://urskola.se/Produkter/155794-Smasagor-meankieli-Grodan-i-vida-varldenT)r#   only_matchingc                    s  |  ||dd}| |}| j|ddpi }|r.t|dddthf}|s-tdn| | d	|d
d }t	fdd|D }|d }| j
d dd}t|ddthtdhf}| j|ddd\}}	dd }
|d  D ]=}| D ]6\} |dv st tsq} fdddD \}}|sq}|
|}|sq}|	|pg }|||d ||	|< q}qw|dpi }g }| D ])\} | d}|d }t|d!kr|t|d" t|d# d$ || q|d%pi }t|d&pt|d'}|r| d(| n||d)|t|d*||t|d+|d,|d-|d.|t|d/ttd0d |d1g D |	d2S )3Nzskola.se/Produkterzplay.se/programF)fatalprops	pagePropsproductDatazUnable to parse __NEXT_DATA__zmdata-react-class="routes/Product/components/ProgramContainer/ProgramContainer"[^>]+data-react-props="({.+?})"zurplayer dataaccessibleEpisodesc                 3   s&    | ]}| d t kr|V  qdS )r   N)getr   ).0e)video_id K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/urplay.py	<genexpr>p   s   $ z)URPlayIE._real_extract.<locals>.<genexpr>r   z?https://media-api.urplay.se/config-streaming/v1/urplay/sources/z!Downloading streaming information)notesourceshlszHLS URLr   )m3u8_idc                 S   s0   | du rdS |   }t|st|}|pdS )z33-character language code or None (utils candidate)N)lowerr   
long2short
short2long)codelangr?   r?   r@   parse_lang_codey   s   

z/URPlayIE._real_extract.<locals>.parse_lang_codestreamingInfo)sdhdc                 3   s    | ]}  |V  qd S )N)r;   )r<   kk)vr?   r@   rA      s    )languagelocation)r   r#   image)r   r#   xr       r   )widthheightr   )seriesTitler   )rX   	mainTitlez : r   publishedAtr   r   keywordslabelepisodeNumberc                 s   s$    | ]}t |d d tpdV  qdS )c                 S   s   | d S )Nfromr?   )rT   r?   r?   r@   <lambda>   s    z2URPlayIE._real_extract.<locals>.<genexpr>.<lambda>rU   N)r	   int)r<   ar?   r?   r@   rA      s    	ageRanges)r   r   r   
thumbnailsr   r   formatsr   r   r   r.   r   r)   r    	subtitles)	_match_idreplace_download_webpage_search_nextjs_datar   dictr   _parse_json_html_search_regexnext_download_jsonr   r   #_extract_m3u8_formats_and_subtitlesvaluesitems
isinstancer;   appendsplitlenupdater   r   r
   r   min)selfr#   webpageurplayer_dataaccessible_episodesr   rC   hls_urlrd   re   rK   streamkrJ   sttl_urlsttlrS   rc   twhr   series_titler?   )rP   r>   r@   _real_extractc   s   


	





zURPlayIE._real_extractN)__name__
__module____qualname__
_VALID_URL_TESTSr   r?   r?   r?   r@   r      s    Rr   N)commonr   utilsr   r   r   r   r   r	   r
   r   utils.traversalr   r   r   r?   r?   r?   r@   <module>   s    (
