U
    g|                     @   s0  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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 )!    N   )InfoExtractor   )	HTTPError)	ExtractorErrordetermine_extint_or_noneparse_durationparse_iso8601str_or_nonetry_geturl_or_noneurljoinc                   @   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    8/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/nrk.py_extract_nrk_formats   s&           zNRKBaseIE._extract_nrk_formatsc                 C   s|   ddddd}| dd}d|ks4t|d	d
 dkrJ| j| d| jd | dp^| ||}t| j d| 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>2       z(NRKBaseIE._raise_error.<locals>.<lambda>Tr$   )msgZ	countriesZendUserMessagez said: )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S )Nzhttps://psapi.nrk.no/Downloading z JSON)r   query)_download_jsonr   )r   pathr   itemnoter   r1   r    r    r!   	_call_api9   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@ fdd	}|dddi}t|dd	 tpD|d
dkrb |d  |d }g }|d D ]}t|tsqv|drqvt|d}|sqv|dpd	 }|dkst
|dkr| | qv|dkrv|||dd qv|d}	|	d }
|
d }|d }|d}t|
dd	 }t|dpPt|	d}g }t|
dd	 tpjg D ]T}t|tsqlt|d}|sql||t|dt|d d! qli }t|d"d	 tpg D ]z}t|tsqt|d#}|sqt|d$pd%}t|d&}|r>|d'| 7 }||g d|i qt|	d(d	 t}d }|r|d)krd*}n| rt|}t|	d+d	 d,k}||||||||tt|d-d	 td.
}|r
d  } } } }}  jd/ d0d1d2}!|!rZt|!trZt|!d3}t|!d4}t|!d5}t|!d6}t|!d7} |sd|}|rx|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/c              
      s   z  j d|  d | |dW S  tk
r } zDt|jtrp|jjdkrp j d|  d | |d W Y S  W 5 d }~X Y nX d S )Nz	playback/z	/program/r1   i  rG   )r6   r   
isinstancecauser   status)r4   r1   er   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>   subtitlec                 S   s   | d  ddS )Nr?   
)replacer%   r    r    r!   r'      r(   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type-c                 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(   rf   c                 S   s   | d d d S )NZavailabilityZonDemandfromr    r%   r    r    r!   r'      r(   )
r<   r>   	alt_titler?   r@   
thumbnails	age_limitr   r]   	timestampz	programs/programsFr   ZseriesTitleZseasonIdZseasonNumberZepisodeTitleZepisodeNumberz - zSesong\s+(\d+)zseason numberdefaultz^(\d+)\.zepisode numberz\((\d+)\s*:\s*\d+\))r>   rf   	season_idseason_numberepisodeepisode_number)N)	_match_idsplitr   strr+   r/   rJ   dictr   lowerr   extendr"   appendr	   listr   r   
setdefaultisdigitr
   r6   _search_regexupdate)"r   rB   rO   rP   rQ   r   ZassetZ
format_urlZasset_formatr-   rU   rV   r>   ri   r?   r@   rj   imageZ	image_urlr]   r   Zsub_urlZsub_keyZsub_typeZ	legal_agerk   Z	is_seriesinforf   rp   rq   rr   rs   rm   r    rN   r!   _real_extract   s   	



   
  

         	zNRKIE._real_extractNr7   r8   r9   
_VALID_URL_TESTSr   r    r    r    r!   r:   @   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})z4https?://(?:tv|radio)\.nrk(?:super)?\.no/(?:[^/]+/)*z&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@   rk   r]   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>   ri   r?   r@   rf   rr   rk   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@   rf   rr   rk   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?   rk   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@   rf   rr   rq   rs   rk   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:ier   rt   
url_resultr:   ie_keyr   rB   r   r    r    r!   r     s    
  zNRKTVIE._real_extractN)r7   r8   r9   IE_DESC_EPISODE_REr   r   r   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@   rf   rq   rs   rr   rk   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   |  | \}}}| ||}| j||i d}|dp`| jd|d dp`| dtj d|d}t	
tj|stt|d|d| t t|t|d	 |S )
Nrn   z@idznrk:program-idzdata-program-id=["\']()znrk idrB   r   )_typer<   rB   r   rq   rs   )_match_valid_urlgroups_download_webpageZ_search_json_ldr+   Z_html_search_metar~   r   r   r   r   AssertionErrorr   r:   r   int)r   rB   
display_idrq   rs   webpager   nrk_idr    r    r!   r     s0       zNRKTVEpisodeIE._real_extractNr   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   sd   t |tsg S g }|D ]H}|dp,|d}|rt |ts>q|| jd| t |d q|S )NZprfIdZ	episodeIdr   r   )rJ   r{   r+   rv   rz   r   r:   r   )r   Z
entry_listentriesrr   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   rf   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}| |E d H  t|dd  fddft	}|s q| j
||d  d	| 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 )Nre   nexthrefr    r%   r    r    r!   r'     r(   c                    s   | d   d d d S )Nr   re   r   r   r    r%   r   r    r!   r'   	  r(   r0   z JSON page F)r5   r   )	itertoolscountr+   rJ   rw   r   r   r{   r   rv   r6   )r   r-   r   Zpage_numr   r   Znext_url_pathr    r   r!   _entries  s@    




 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                    s.   t |st|st|r"dS t |S )NF)r   suitabler   NRKRadioPodkastIEsuperclsrB   	__class__r    r!   r   O  s    "
zNRKTVSeasonIE.suitablec           
      C   s   |  |}|d}|d}|d}|dp:|d}| d| }| j| d| | d| d| |d	d
did}t|dd tp|}	| | ||||	S )Ndomainr   serier<   Zid_2rG   	/catalog/z	/seasons/seasonZpageSize2   rI   c                 S   s   | d d S )NrV   r>   r    r%   r    r    r!   r'   `  r(   z-NRKTVSeasonIE._real_extract.<locals>.<lambda>)r   groupr6   r   r   rv   playlist_resultr   )
r   rB   Zmobjr   r   r   rp   r   r-   r>   r    r    r!   r   T  s$    



  
 zNRKTVSeasonIE._real_extract	r7   r8   r9   r   r   classmethodr   r   __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                    s.   t  fddttttfD r"dS 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     s
    

zNRKTVSeriesIE.suitablec              	   C   s  |  | \}}}|dk}|r$dnd}|r0dnd}| j| d| | d| |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rR|D ]p}t	||d}|s*|d}|r*t
|tr*d| d| d| }|r|
| j|t |dd qn|D ]}|
| || qV|
| |dpi | | |
||	d|	dS )Nz	radio.nrkZradiotvpZembeddedInstalmentsPr   rG   r   ZageSizer   rI   c                 S   s   | d S )NrV   r    r%   r    r    r!   r'     r(   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>c                 S   s   | | d  d S )Nr`   rV   r    r%   r    r    r!   r'     r(   c                 S   s   | | d  d S )NZ
seriesTyperV   r    r%   r    r    r!   r'     r(   r   c                 S   s   | d d S )Nre   seasonsr    r%   r    r    r!   r'     r(   r   r   rg   zhttps://z.nrk.no/serie/z/sesong/r>   )r   Zvideo_titleZextraMaterialrW   )r   r   r6   r   r   ry   r   r+   lenr   rJ   rv   rz   r   r   r   r   )r   rB   siter   Z	series_idZis_radior   Zsize_prefixrf   rV   r   r   Zlinked_seasonsZembedded_seasonsr   Z
season_urlZseason_namer    r    r!   r     s^      

     zNRKTVSeriesIE._real_extractr   r    r    r   r!   r   f  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   r   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@   rf   rr   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!   r     s    
  zNRKRadioPodkastIE._real_extractNr   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>)rt   r   r   findall_ITEM_RE_extract_titler   r   )r   rB   Zplaylist_idr   r   Zplaylist_titleZplaylist_descriptionr    r   r!   r     s    



   zNRKPlaylistBaseIE._real_extractN)r7   r8   r9   r   r   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   5  s    zNRKPlaylistIE._extract_titlec                 C   s
   |  |S r   )Z_og_search_descriptionr   r    r    r!   r   8  s    z"NRKPlaylistIE._extract_descriptionN)r7   r8   r9   r   r   r   r   r   r    r    r    r!   r      s&   	r   c                   @   s8   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=["\']z6https://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   H  s       zNRKTVEpisodesIE._extract_titleN)	r7   r8   r9   r   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   s0   |  |}| d| |d }| d| S )Nz5https://nrkno-skole-prod.kube.nrk.no/skole/api/media/ZpsIdr   )rt   r2   r   )r   rB   r   r   r    r    r!   r   `  s    
zNRKSkoleIE._real_extractN)r7   r8   r9   r   r   r   r   r    r    r    r!   r   M  s    r   )r   r   r   commonr   Znetworking.exceptionsr   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    r!   <module>   s(   ,, a >7Qx 