U
    $Pf|                     @   s8  d dl mZ d dlZd dlZd dlZddlmZ ddlmZ ddl	m
Z
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G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZdS )"    )unicode_literalsN   )InfoExtractor   )
compat_str)determine_extExtractorErrorint_or_noneparse_durationstr_or_nonetry_geturljoinurl_or_nonec                   @   s0   e Zd ZdgZdZdd Zdd Zdd	d
ZdS )	NRKBaseIENOz(?x)://
        (?:
            nrkod\d{1,2}-httpcache0-47115-cacheod0\.dna\.ip-only\.net/47115-cacheod0|
            nrk-od-no\.telenorcdn\.net|
            minicdn-od\.nrk\.no/od/nrkhd-osl-rr\.netwerk\.no/no
        )/c              	   C   s|   t d|r| ||S t dd|}| j||dddd}|sxt | j|rx| jt | jdtd	d
 ||dddd}|S )Nz https?://[^/]+\.akamaihd\.net/i/z'(?:bw_(?:low|high)=\d+|no_audio_only)&? mp4Zm3u8_nativeFfatalz ://nrk-od-%02d.akamaized.net/no/r   c   )	rematchZ_extract_akamai_formatssubZ_extract_m3u8_formatssearch_CDN_REPL_REGEXrandomrandint)selfZ	asset_urlvideo_idformats r    </tmp/pip-unpacked-wheel-7zdooeg3/youtube_dl/extractor/nrk.py_extract_nrk_formats   s&           zNRKBaseIE._extract_nrk_formatsc                 C   sz   ddddd}| dd}d|ks4t|d	d
 dkrJ| j| d| jd | dp^| ||}td| j|f ddd S )Nu/   Du kan dessverre ikke se eller høre programmetu   Programmet har gått utzIkke tilgjengeliguC   NRK har ikke rettigheter til å vise dette programmet utenfor Norge)ZProgramRightsAreNotReadyProgramRightsHasExpiredZNoProgramRightsProgramIsGeoBlockedZmessageTyper   ZIsGeoBlockedc                 S   s   | d d S )NZusageRightsZisGeoBlockedr    xr    r    r!   <lambda>4       z(NRKBaseIE._raise_error.<locals>.<lambda>Tr$   )msgZ	countriesZendUserMessagez%s said: %s)expected)getr   Zraise_geo_restricted_GEO_COUNTRIESr   ZIE_NAME)r   dataZMESSAGESZmessage_typemessager    r    r!   _raise_error+   s    zNRKBaseIE._raise_errorNTc                 C   s(   | j td|||pd| ||ddidS )Nzhttps://psapi.nrk.no/zDownloading %s JSONzAccept-Encodingzgzip, deflate, br)r   queryheaders)_download_jsonr   )r   pathr   itemnoter   r0   r    r    r!   	_call_api;   s     
 zNRKBaseIE._call_api)NNTN)__name__
__module____qualname__r,   r   r"   r/   r6   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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dddddddgZd d! Zd"S )#NRKIEa  (?x)
                        (?:
                            nrk:|
                            https?://
                                (?:
                                    (?:www\.)?nrk\.no/video/(?:PS\*|[^_]+_)|
                                    v8[-.]psapi\.nrk\.no/mediaelement/
                                )
                            )
                            (?P<id>[^?\#&]+)
                        z!http://www.nrk.no/video/PS*150533Z f46be075326e23ad0e524edfcb06aeb6Z150533r   z"Dompap og andre fugler i Piip-Showz$md5:d9261ba34c43b61c812cb6b0269a5c8fi  idexttitledescriptiondurationurlmd5	info_dictz!http://www.nrk.no/video/PS*154915Z154915u)   Slik høres internett ut når du er blindz$md5:a621f5cc1bd75c8d5104cb048c6b8568   )rB   rD   z(nrk:ecc1b952-96dc-4a98-81b9-5296dc7a98d9TrB   Zonly_matchingz-nrk:clip/7707d5a3-ebe7-434a-87d5-a3ebe7a34a70zIhttps://v8-psapi.nrk.no/mediaelement/ecc1b952-96dc-4a98-81b9-5296dc7a98d9zBhttps://www.nrk.no/video/dompap-og-andre-fugler-i-piip-show_150533zehttps://www.nrk.no/video/humor/kommentatorboksen-reiser-til-sjos_d1fda11f-a4ad-437a-a374-0398bc84e999z*nrk:l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8z2nrk:podcast/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8z
nrk:150533znrk:clip/150533znrk:MDDP12000117znrk:program/ENRK10100318znrk:nrk1znrk:channel/nrk1c           "   
      s   |dd d  d@ fdd	}|dddi}t|d	d
 tpN|ddkrl|d  |d }g }|d D ]}t|tsq|drqt|d}|sq|dpd	 }|dkst
|dkr|| q|dkr|||dd q| |d}	|	d }
|
d }|d }|d}|
d}t|dp`t|	d}g }t|
dd
 tpzg D ]T}t|tsq|t|d}|sq|||t|d t|d!d" q|i }t|d#d
 tpg D ]x}t|ts qt|d$}|sqt|d%p*d&}t|d'}|rL|d(| 7 }||g d|i qt|	d)d
 t}d }|r|d*krd+}n| rt|}t|	d,d
 d-k}||||||||d.	}|rd  } } } }} jd/ d0d1d2}!|!rTt|!trTt|!d3}t|!d4}t|!d5}t|!d6}t|!d7} |s^|}|rp|d8| 7 }|stjd9|pdd:d d;}|s|r|nd }| stjd<|pdd=d d;} | stjd>|pdd=d d;} ||||||| d? |S )AN/zplayback/%s/c                    s   j  |  | |dS )Nr0   )r6   )r4   r0   Z
path_templr   r   r    r!   call_playback_api   s    z.NRKIE._real_extract.<locals>.call_playback_apimanifestZpreferredCdnZakamaic                 S   s   | d S )Nr<   r    r%   r    r    r!   r'      r(   z%NRKIE._real_extract.<locals>.<lambda>ZplayabilityZnonPlayableplayableZassetsZ	encryptedrB   formatr   ZhlsZm3u8Zmp3none)rB   Z	format_idZvcodecmetadatapreplaytitlesr>   subtitler?   r@   c                 S   s   | d d S )NZposterZimagesr    r%   r    r    r!   r'      r(   Z
pixelWidthZpixelHeight)rB   widthheightc                 S   s   | d S )N	subtitlesr    r%   r    r    r!   r'      r(   ZwebVttlanguagenbtypez-%sc                 S   s   | d d d d S )NZlegalAgebodyZratingcoder    r%   r    r    r!   r'      r(   Ar   c                 S   s   | d d d S )N_linksseriesnamer    r%   r    r    r!   r'      r(   r^   )	r<   r>   	alt_titler?   r@   
thumbnails	age_limitr   rV   zprograms/%sprogramsFr   ZseriesTitleZseasonIdZseasonNumberZepisodeTitleZepisodeNumberz - %szSesong\s+(\d+)zseason numberdefaultz^(\d+)\.zepisode numberz\((\d+)\s*:\s*\d+\))r>   r^   	season_idseason_numberepisodeepisode_number)N)	_match_idsplitr   r   r+   r/   
isinstancedictr   lowerr   extendr"   appendZ_sort_formatsr
   listr	   r   
setdefaultisdigitr6   _search_regexupdate)"r   rB   rK   rL   rM   r   ZassetZ
format_urlZasset_formatr-   rQ   rR   r>   r`   r?   r@   ra   imageZ	image_urlrV   r   Zsub_urlZsub_keyZsub_typeZ	legal_agerb   Z	is_seriesinfor^   rf   rg   rh   ri   rc   r    rJ   r!   _real_extract   s   





   
  

         	zNRKIE._real_extractNr7   r8   r9   
_VALID_URL_TESTSrx   r    r    r    r!   r:   C   sv   Cr:   c                   @   s*  e Zd ZdZdZde Zdddddd	d
dddigddig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$id%d&d'dd(d)dd*d#d$id+gd,d-d.d'dd(d)dd*d+gd/d0d1d2dd3d4d5d6d7d8d9dd:
d#d$id%d;d<dd=d>d?d@dAdd"d#d$idBdCdDd$dEdFd$dEdGd$dEg
ZdHdI ZdJS )KNRKTVIEzNRK TV and NRK Radioz(?P<id>[a-zA-Z]{4}\d{8})z6https?://(?:tv|radio)\.nrk(?:super)?\.no/(?:[^/]+/)*%sz&https://tv.nrk.no/program/MDDP12000117Z c4a5960f1b00b40d47db65c1064e0ab1ZMDDP12000117r   zAlarm Trolltungaz$md5:46923a6e6510eefcce23d5ef2a58f2ceg{G^@   r=   Zvtt)znb-norznb-ttv)r<   r=   r>   r?   r@   rb   rV   rA   z@https://tv.nrk.no/serie/20-spoersmaal-tv/MUHH48000314/23-05-2014 8d40dab61cea8ab0114e090b029a0565ZMUHH48000314u   20 spørsmål - 23. mai 2014z23. mai 2014$md5:bdea103bc35494c143c6a9acdd84887a     20 spørsmålr   )	r<   r=   r>   r`   r?   r@   r^   rh   rb   z&https://tv.nrk.no/program/mdfp15000514ZMDFP15000514uB   Kunnskapskanalen - Grunnlovsjubiléet - Stor ståhei for ingentingz$md5:89290c5ccde1b3a24bb8050ab67fe1dbgGz@ZKunnskapskanalenu/   Grunnlovsjubiléet - Stor ståhei for ingenting)r<   r=   r>   r?   r@   r^   rh   rb   skip_downloadTrB   rD   paramszAhttps://tv.nrk.no/serie/tour-de-ski/MSPO40010515/06-01-2015#del=2ZMSPO40010515z.Sprint fri teknikk, kvinner og menn 06.01.2015z$md5:c03aba1e917561eface5214020551b7a)r<   r=   r>   r?   rb   z#Failed to download m3u8 informationz*particular part is not supported currently)rB   rD   r   expected_warningsskipz;https://tv.nrk.no/serie/tour-de-ski/MSPO40010515/06-01-2015zIkke tilgjengelig utenfor Norge)rB   rD   r   r   z=https://tv.nrk.no/serie/anno/KMTE50001317/sesong-3/episode-13ZKMTE50001317zAnno - 13. episodez$md5:11d9613661a8dbe6f9bef54e3a4cbbfai$	  ZAnnoz13. episode      )
r<   r=   r>   r?   r@   r^   rh   rg   ri   rb   z=https://tv.nrk.no/serie/nytt-paa-nytt/MUHH46000317/27-01-2017ZMUHH46000317u   Nytt på Nytt 27.01.2017z$md5:5358d6388fba0ea6f0b6d11c48b9eb4bi  u   Nytt på nyttz
27.01.2017r#   rB   rD   r   r   z<https://radio.nrk.no/serie/dagsnytt/NPUB21019315/12-07-2015#rF   z:https://tv.nrk.no/serie/lindmo/2018/MUHU11006318/avspillerz>https://radio.nrk.no/serie/dagsnytt/sesong/201507/NPUB21019315c                 C   s"   |  |}| jd| t |dS Nnrk:%sier   rj   
url_resultr:   ie_keyr   rB   r   r    r    r!   rx     s    
  zNRKTVIE._real_extractN)r7   r8   r9   IE_DESC_EPISODE_RErz   r{   rx   r    r    r    r!   r|     s         vr|   c                   @   sf   e Zd ZdZ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diddgZdd ZdS )NRKTVEpisodeIEzfhttps?://tv\.nrk\.no/serie/(?P<id>[^/]+/sesong/(?P<season_number>\d+)/episode/(?P<episode_number>\d+))z6https://tv.nrk.no/serie/hellums-kro/sesong/1/episode/2ZMUHH36005220r   u)   Hellums kro - 2. Kro, krig og kjærlighetz$md5:ad92ddffc04cea8ce14b415deef81787gHzo@zHellums kror   r   u   2. Kro, krig og kjærlighetr}   )
r<   r=   r>   r?   r@   r^   rg   ri   rh   rb   r   Tr   z4https://tv.nrk.no/serie/backstage/sesong/1/episode/8ZMSUI14000816zBackstage - 8. episodez$md5:de6ca5d5a2d56849e4021f2bf2850df4i(  	Backstage   z
8. episoder   r#   r   c              	   C   s   t | j| \}}}| ||}| j||i d}|dp`| jd|d dp`| dt	j
 |d}t t	j
|stt|d|d| t t|t|d |S )	Nrd   z@idznrk:program-idzdata-program-id=["\'](%s)znrk idrB   r   )_typer<   rB   r   rg   ri   )r   r   rz   groups_download_webpageZ_search_json_ldr+   Z_html_search_metart   r|   r   AssertionErrorru   r:   r   int)r   rB   
display_idrg   ri   webpagerw   nrk_idr    r    r!   rx     s0       zNRKTVEpisodeIE._real_extractNry   r    r    r    r!   r     sH     %r   c                   @   s4   e Zd Zdd ZdZdd Zedd Zdd	 Zd
S )NRKTVSerieBaseIEc                 C   sb   t |tsg S g }|D ]F}|dp,|d}|rt |ts>q|| jd| t |d q|S )NZprfIdZ	episodeIdr   r   )rl   rq   r+   r   rp   r   r:   r   )r   Z
entry_listentriesrh   r   r    r    r!   _extract_entries  s    
  
z!NRKTVSerieBaseIE._extract_entries)ZepisodesZinstalmentsc                 C   s"   | j D ]}||r|  S qd S N)_ASSETS_KEYSr+   )r   embeddedZ	asset_keyr    r    r!   _extract_assets_key  s    

z$NRKTVSerieBaseIE._extract_assets_keyc                 C   s   | dkrdS dS )N)podcastZpodkastr   r^   r    )
serie_kindr    r    r!   _catalog_name  s    zNRKTVSerieBaseIE._catalog_namec                 #   s   t dD ]}|dp|}t|ts* q| |  s< qt| fdd fddft}| |D ]
}|V  qft|dd  fddft	}|s q| j
||d |f d	d
}|s
 qq
d S )Nr   	_embeddedc                    s   |   d   S )Nr   r    r%   Z
assets_keyr    r!   r'      r(   z+NRKTVSerieBaseIE._entries.<locals>.<lambda>c                    s   |   S r   r    r%   r   r    r!   r'     r(   c                 S   s   | d d d S )Nr]   nexthrefr    r%   r    r    r!   r'     r(   c                    s   | d   d d d S )Nr   r]   r   r   r    r%   r   r    r!   r'   	  r(   zDownloading %s JSON page %dF)r5   r   )	itertoolscountr+   rl   rm   r   r   rq   r   r   r6   )r   r-   r   Zpage_numr   r   eZnext_url_pathr    r   r!   _entries  sB    




 
zNRKTVSerieBaseIE._entriesN)	r7   r8   r9   r   r   r   staticmethodr   r   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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e fddZdd Z  ZS )NRKTVSeasonIEas  (?x)
                    https?://
                        (?P<domain>tv|radio)\.nrk\.no/
                        (?P<serie_kind>serie|pod[ck]ast)/
                        (?P<serie>[^/]+)/
                        (?:
                            (?:sesong/)?(?P<id>\d+)|
                            sesong/(?P<id_2>[^/?#&]+)
                        )
                    z*https://tv.nrk.no/serie/backstage/sesong/1zbackstage/1zSesong 1r<   r>      rB   rD   Zplaylist_mincountz#https://tv.nrk.no/serie/lindmo/2016zlindmo/2016Z2016   z7https://radio.nrk.no/serie/dickie-dick-dickens/sesong/1zdickie-dick-dickens/1   z1https://radio.nrk.no/serie/dagsnytt/sesong/201509zdagsnytt/201509zSeptember 2015iI  z(https://tv.nrk.no/serie/spangas/sesong/1TrF   zEhttps://radio.nrk.no/podkast/hele_historien/sesong/diagnose-kverulantz!hele_historien/diagnose-kverulantzDiagnose kverulantr   z9https://radio.nrk.no/podkast/loerdagsraadet/sesong/202101c                    s2   t |st|st|r"dS tt| |S )NF)r|   suitabler   NRKRadioPodkastIEsuperr   clsrB   	__class__r    r!   r   O  s    "zNRKTVSeasonIE.suitablec           
      C   s   t | j|}|d}|d}|d}|dp>|d}d||f }| jd|| |||f |dd	d
id}t|dd tp|}	| | 	||||	S )Ndomainr   serier<   Zid_2z%s/%sz%s/catalog/%s/%s/seasons/%sseasonZpageSize2   rI   c                 S   s   | d d S )NrR   r>   r    r%   r    r    r!   r'   a  r(   z-NRKTVSeasonIE._real_extract.<locals>.<lambda>)
r   r   rz   groupr6   r   r   r   playlist_resultr   )
r   rB   Zmobjr   r   r   rf   r   r-   r>   r    r    r!   rx   T  s(    


  
 zNRKTVSeasonIE._real_extract	r7   r8   r9   rz   r{   classmethodr   rx   __classcell__r    r    r   r!   r     sR   	


/r   c                       s   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dd
dddd d!dd"dd#d
dd$d%d&id'dd(d
dgZe fd)d*Zd+d, Z  ZS )-NRKTVSeriesIEzkhttps?://(?P<domain>(?:tv|radio)\.nrk|(?:tv\.)?nrksuper)\.no/(?P<serie_kind>serie|pod[ck]ast)/(?P<id>[^/]+)z$https://tv.nrk.no/serie/groenn-gledezgroenn-gledeu   Grønn gledez$md5:7576e92ae7f65da6993cf90ee29e4608r<   r>   r?   Z   r   zhttps://tv.nrk.no/serie/lindmoTrF   zhttps://tv.nrk.no/serie/blankZblankZBlankz$md5:7664b4e7e77dc6810cd3bca367c25b6er   z!https://tv.nrk.no/serie/backstageZ	backstager   z$md5:63692ceb96813d9a207e9910483d948b<   z%https://tv.nrksuper.no/serie/labyrintZlabyrintZLabyrintu`   I Daidalos sin undersjøiske Labyrint venter spennende oppgaver, skumle robotskapninger og slim.r   z9https://tv.nrk.no/serie/broedrene-dal-og-spektralsteinenez-https://tv.nrk.no/serie/saving-the-human-racez$https://tv.nrk.no/serie/postmann-patz.https://radio.nrk.no/serie/dickie-dick-dickenszdickie-dick-dickenszDickie Dick Dickensz$md5:19e67411ffe57f7dce08a943d7a0b91fr   z"https://nrksuper.no/serie/labyrintz-https://radio.nrk.no/podkast/ulrikkes_universr<   Zulrikkes_univers
   zXhttps://radio.nrk.no/podkast/ulrikkes_univers/nrkno-poddkast-26588-134079-05042018030000c                    s2   t  fddttttfD r"dS tt|  S )Nc                 3   s   | ]}|  V  qd S r   )r   ).0r   rB   r    r!   	<genexpr>  s   z)NRKTVSeriesIE.suitable.<locals>.<genexpr>F)anyr|   r   r   r   r   r   r   r   r   r   r!   r     s
    
zNRKTVSeriesIE.suitablec              	   C   s  t | j| \}}}|dk}|r(dnd}|r4dnd}| jd|| ||f |d|d d	id
}t|dd dd dd gpi }	g }
|
| || |	dpi }t|dd pg }|	dpg }t
|t
|krH|D ]h}t||	d}|s |	d}|r t|tr d|||f }|r|
| j|t |	dd qn|D ]}|
| || qL|
| |	dp|i | | |
||		d|		dS )Nz	radio.nrkZradiotvpZembeddedInstalmentsPz%s/catalog/%s/%sr   ZageSizer   rI   c                 S   s   | d S )NrR   r    r%   r    r    r!   r'     r(   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>c                 S   s   | | d  d S )NrY   rR   r    r%   r    r    r!   r'     r(   c                 S   s   | | d  d S )NZ
seriesTyperR   r    r%   r    r    r!   r'     r(   r   c                 S   s   | d d S )Nr]   seasonsr    r%   r    r    r!   r'     r(   r   r   r_   z$https://%s.nrk.no/serie/%s/sesong/%sr>   )r   Zvideo_titleZextraMaterialrS   )r   r   rz   r   r6   r   r   ro   r   r+   lenr   rl   r   rp   r   r   r   r   )r   rB   siter   Z	series_idZis_radior   Zsize_prefixr^   rR   r   r   Zlinked_seasonsZembedded_seasonsr   Z
season_urlZseason_namer    r    r!   rx     sb      

     zNRKTVSeriesIE._real_extractr   r    r    r   r!   r   g  s   

	 Fr   c                   @   s(   e Zd ZdZdZddddddgZdS )NRKTVDirekteIEz$NRK TV Direkte and NRK Radio Direktez7https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)zhttps://tv.nrk.no/direkte/nrk1TrF   z-https://radio.nrk.no/direkte/p1_oslo_akershusN)r7   r8   r9   r   rz   r{   r    r    r    r!   r     s   r   c                
   @   sN   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gZdd ZdS )r   zohttps?://radio\.nrk\.no/pod[ck]ast/(?:[^/]+/)+(?P<id>l_[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})zThttps://radio.nrk.no/podkast/ulrikkes_univers/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8r~   ZMUHH48000314AAr   u   20 spørsmål 23.05.2014r   r   r   z
23.05.2014)r<   r=   r>   r?   r@   r^   rh   rA   zThttps://radio.nrk.no/podcast/ulrikkes_univers/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8TrF   z]https://radio.nrk.no/podkast/ulrikkes_univers/sesong/1/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8zlhttps://radio.nrk.no/podkast/hele_historien/sesong/bortfoert-i-bergen/l_774d1a2c-7aa7-4965-8d1a-2c7aa7d9652cc                 C   s"   |  |}| jd| t |dS r   r   r   r    r    r!   rx     s    
  zNRKRadioPodkastIE._real_extractNry   r    r    r    r!   r     s.   r   c                   @   s   e Zd Zdd Zdd ZdS )NRKPlaylistBaseIEc                 C   s   d S r   r    r   r   r    r    r!   _extract_description  s    z&NRKPlaylistBaseIE._extract_descriptionc                    sV     |} ||} fddt j|D } |} |} ||||S )Nc                    s    g | ]}  d | t qS )r   )r   r:   r   )r   r   r   r    r!   
<listcomp>  s   z3NRKPlaylistBaseIE._real_extract.<locals>.<listcomp>)rj   r   r   findall_ITEM_RE_extract_titler   r   )r   rB   Zplaylist_idr   r   Zplaylist_titleZplaylist_descriptionr    r   r!   rx     s    



   zNRKPlaylistBaseIE._real_extractN)r7   r8   r9   r   rx   r    r    r    r!   r     s   r   c                   @   sL   e Zd ZdZdZddddddd	d
dddddd	gZdd Zdd ZdS )NRKPlaylistIEzBhttps?://(?:www\.)?nrk\.no/(?!video|skole)(?:[^/]+/)+(?P<id>[^/]+)z6class="[^"]*\brich\b[^"]*"[^>]+data-video-id="([^"]+)"zLhttp://www.nrk.no/troms/gjenopplev-den-historiske-solformorkelsen-1.12270763z4gjenopplev-den-historiske-solformorkelsen-1.12270763u*   Gjenopplev den historiske solformørkelsenz$md5:c2df8ea3bac5654a26fc2834a542feedr   r   rB   rD   Zplaylist_countzGhttp://www.nrk.no/kultur/bok/rivertonprisen-til-karin-fossum-1.12266449z*rivertonprisen-til-karin-fossum-1.12266449zRivertonprisen til Karin Fossumu<   Første kvinne på 15 år til å vinne krimlitteraturprisen.c                 C   s   | j |ddS )NFr   )Z_og_search_titler   r    r    r!   r   7  s    zNRKPlaylistIE._extract_titlec                 C   s
   |  |S r   )Z_og_search_descriptionr   r    r    r!   r   :  s    z"NRKPlaylistIE._extract_descriptionN)r7   r8   r9   rz   r   r{   r   r   r    r    r    r!   r   "  s&   	r   c                   @   s6   e Zd ZdZdej ZddddddgZd	d
 ZdS )NRKTVEpisodesIEz:https?://tv\.nrk\.no/program/[Ee]pisodes/[^/]+/(?P<id>\d+)zdata-episode=["\']%sz6https://tv.nrk.no/program/episodes/nytt-paa-nytt/69031Z69031u   Nytt på nytt, sesong: 201210r      r   c                 C   s   | j d|dddS )Nz<h1>([^<]+)</h1>r>   Fr   )Z_html_search_regexr   r    r    r!   r   J  s       zNRKTVEpisodesIE._extract_titleN)	r7   r8   r9   rz   r|   r   r   r{   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dgZdd ZdS )
NRKSkoleIEz	NRK Skolez;https?://(?:www\.)?nrk\.no/skole/?\?.*\bmediaId=(?P<id>\d+)z6https://www.nrk.no/skole/?page=search&q=&mediaId=14099Z 18c12c3d071953c3bf8d54ef6b2587b7Z6021r   zGenetikk og eneggede tvillingerz$md5:3aca25dcf38ec30f0363428d2b265f8di  r;   rA   zYhttps://www.nrk.no/skole/?page=objectives&subject=naturfag&objective=K15114&mediaId=19355TrF   c                 C   s,   |  |}| d| |d }| d| S )Nz7https://nrkno-skole-prod.kube.nrk.no/skole/api/media/%sZpsIdr   )rj   r2   r   )r   rB   r   r   r    r    r!   rx   b  s    
zNRKSkoleIE._real_extractN)r7   r8   r9   r   rz   r{   rx   r    r    r    r!   r   O  s    r   )
__future__r   r   r   r   commonr   compatr   utilsr   r   r	   r
   r   r   r   r   r   r:   r|   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   <module>   s*   (- ] >8Ry 