
    V|h                        S SK r S SKrS SKrSSKJr  SSKJr  SSKJrJ	r	J
r
JrJrJrJrJrJrJr   " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      rg)!    N   )InfoExtractor   )	HTTPError)
ExtractorErrordetermine_extint_or_noneparse_durationparse_iso8601str_or_nonetry_getupdate_url_queryurl_or_noneurljoinc                   4    \ rS rSrS/rSrS rS rS	S jrSr	g)
	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           
         [        U/ SS.5      n[        R                  " SU5      (       a  U R                  X5      $ [        R                  " SSU5      nU R                  XSSSS	9nU(       dq  [        R                  " U R                  U5      (       aK  U R                  [        R                  " U R                  S
[        R                  " SS5      -  U5      USSSS	9nU$ )Nr   )adapsz https?://[^/]+\.akamaihd\.net/i/z'(?:bw_(?:low|high)=\d+|no_audio_only)&? mp4m3u8_nativeFfatalz ://nrk-od-%02d.akamaized.net/no/c   )
r   rematch_extract_akamai_formatssub_extract_m3u8_formatssearch_CDN_REPL_REGEXrandomrandint)self	asset_urlvideo_idformatss       N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/nrk.py_extract_nrk_formatsNRKBaseIE._extract_nrk_formats   s    $Y	1
 	 887CC//	DDFFEr9U	,,U - D299T%9%99EE00t++-ORXR`R`abdfRg-girs%e 1 =G     c                 6   SSSSS.nUR                  SS5      nSU;   d  [        US	 5      S
L a)  U R                  UR                  S5      U R                  S9  UR                  S5      =(       d    UR                  X35      n[	        U R
                   SU 3S
S9e)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)ProgramRightsAreNotReadyProgramRightsHasExpiredNoProgramRightsProgramIsGeoBlockedmessageTyper   IsGeoBlockedc                     U S   S   $ )NusageRightsisGeoBlocked xs    r+   <lambda>(NRKBaseIE._raise_error.<locals>.<lambda>9   s    Q}EUVdEer.   Tr3   )msg	countriesendUserMessagez said: )expected)getr   raise_geo_restricted_GEO_COUNTRIESr   IE_NAME)r'   dataMESSAGESmessage_typemessages        r+   _raise_errorNRKBaseIE._raise_error0   s    (Y'@2#h	
 xxr2\)WT;e-fjn-n%%LL!67-- & / ((+,X\0X~WWI>NNr.   Nc           	      X    U R                  [        SU5      X$=(       d    SU S3XVSS0S9$ )Nzhttps://psapi.nrk.no/Downloading z JSONAcceptzOapplication/vnd.nrk.psapi+json; version=9; player=tv-player; device=player-core)r   queryheaders)_download_jsonr   )r'   pathr)   itemnoter   rO   s          r+   	_call_apiNRKBaseIE._call_api@   sD    ""+T28TF%8k/ #  	r.   r9   )NNTN)
__name__
__module____qualname____firstlineno__rD   r$   r,   rJ   rU   __static_attributes__r9   r.   r+   r   r      s     VNO$O r.   r   c                       \ rS rSrSrSSSSSSS	S
SSSS.	S.SSSSSSSSSSS.	S.SSS.SSS.SSS.SSS.S SS.S!SS.S"SS.S#SS.S$SS.S%SS.S&SS.S'SS.S(SS./rS) rS*rg+),NRKIEJ   a  (?x)
                        (?:
                            nrk:|
                            https?://
                                (?:
                                    (?:www\.)?nrk\.no/video/(?:PS\*|[^_]+_)|
                                    v8[-.]psapi\.nrk\.no/mediaelement/
                                )
                            )
                            (?P<id>[^?\#&]+)
                        z!http://www.nrk.no/video/PS*150533 2b88a652ad2e275591e61cf550887eec150533r   z"Dompap og andre fugler i Piip-Showz$md5:d9261ba34c43b61c812cb6b0269a5c8fi  20140325zre:^https?://gfx\.nrk\.no/.*$i{1S)	idexttitledescriptiondurationupload_date	thumbnail	timestamp	alt_titleurlmd5	info_dictz!http://www.nrk.no/video/PS*154915154915u)   Slik høres internett ut når du er blindz$md5:a621f5cc1bd75c8d5104cb048c6b8568   i}WZSuc   Cathrine Lie Wathne er blind, og bruker hurtigtaster for å navigere seg rundt på ulike nettsider.z?https://gfx.nrk.no/urxQMSXF-WnbfjBH5ke2igLGyN27EdJVWZ6FOsEAclhA20140425)	rb   rc   rd   re   rf   ri   rj   rh   rg   )rl   rn   z(nrk:ecc1b952-96dc-4a98-81b9-5296dc7a98d9Trl   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                 
  ^ ^" T R                  U5      R                  S5      S   m"S>U U"4S jjnU" SSS05      n[        US [        5      =(       d    T"m"UR	                  S5      S	:X  a  T R                  US	   5        US
   n/ nUS    H  n[        U[        5      (       d  M  UR	                  S5      (       a  M2  [        UR	                  S5      5      nU(       d  MU  UR	                  S5      =(       d    SR                  5       nUS:X  d  [        U5      S:X  a#  UR                  T R                  UT"5      5        M  US:X  d  M  UR                  UUSS.5        M     U" S5      n	U	S   n
U
S   nUS   nUR	                  S5      n[        U
S 5      n[        UR	                  S5      5      =(       d    [        U	R	                  S5      5      n/ n[        U
S [        5      =(       d    /  H  n[        U[        5      (       d  M  [        UR	                  S5      5      nU(       d  M=  UR                  U[!        UR	                  S5      5      [!        UR	                  S5      5      S.5        M     0 n[        US  [        5      =(       d    /  H  n[        U[        5      (       d  M  [        UR	                  S!5      5      nU(       d  M=  [#        UR	                  S"5      5      =(       d    S#n[#        UR	                  S$5      5      nU(       a  US%U 3-  nUR%                  U/ 5      R                  SU05        M     [        U	S& [        5      nS nU(       a)  US':X  a  S(nO UR'                  5       (       a  [!        U5      n[        U	S) 5      S*:H  nT"UUUUUUUU[)        [        US+ [        5      5      S,.
nU(       Ga  S =n=n=n=nn T R+                  S-T" 3T"S.S/S09n!U!(       a  [        U![        5      (       a  [#        U!R	                  S15      5      n[#        U!R	                  S25      5      n[!        U!R	                  S35      5      n[#        U!R	                  S45      5      n[!        U!R	                  S55      5      n U(       d  UnU(       a  US6U 3-  nU(       d$  [!        T R-                  S7U=(       d    SS8S S995      nU(       d  U(       a  UOS nU (       d$  [!        T R-                  S:U=(       d    SS;S S995      n U (       d$  [!        T R-                  S<U=(       d    SS;S S995      n UR/                  UUUUUU S=.5        U$ )?N/c                   >  TR                  SU  ST 3TXS9$ ! [         a[  n[        UR                  [        5      (       a6  UR                  R
                  S:X  a  TR                  SU  ST 3TXS9s S nA$ e S nAff = f)Nz	playback/z	/program/rO   i  ru   )rU   r   
isinstancecauser   status)rS   rO   er'   r)   s      r+   call_playback_api.NRKIE._real_extract.<locals>.call_playback_api   s    ~~	$y
&KXW[~ii! aggy11aggnn6K>>IdV1XJ*GSW>ees!    
A?AA:3A?9A::A?manifestpreferredCdnakamaic                     U S   $ )Nrb   r9   r:   s    r+   r<   %NRKIE._real_extract.<locals>.<lambda>   s    qwr.   playabilitynonPlayableplayableassets	encryptedrl   formatr   hlsm3u8mp3none)rl   	format_idvcodecmetadatapreplaytitlesrd   subtitlec                 ,    U S   R                  SS5      $ )Nre   
)replacer:   s    r+   r<   r      s    =1A1I1I$PT1Ur.   rf   c                     U S   S   $ )Nposterimagesr9   r:   s    r+   r<   r      s    1X;x#8r.   
pixelWidthpixelHeight)rl   widthheightc                     U S   $ )N	subtitlesr9   r:   s    r+   r<   r      s    q~r.   webVttlanguagenbtype-c                     U S   S   S   S   $ )NlegalAgebodyratingcoder9   r:   s    r+   r<   r      s    AjM&1(;FCr.   Ar   c                     U S   S   S   $ )N_linksseriesnamer9   r:   s    r+   r<   r      s    AhK,A&,Ir.   r   c                     U S   S   S   $ )NavailabilityonDemandfromr9   r:   s    r+   r<   r     s    1^CTU_C`agChr.   )
rb   rd   rj   re   rf   
thumbnails	age_limitr*   r   ri   z	programs/programsFr   seriesTitleseasonIdseasonNumberepisodeTitleepisodeNumberz - zSesong\s+(\d+)zseason number)defaultz^(\d+)\.zepisode numberz\((\d+)\s*:\s*\d+\))rd   r   	season_idseason_numberepisodeepisode_numberN)	_match_idsplitr   strrB   rJ   ry   dictr   lowerr   extendr,   appendr
   listr	   r   
setdefaultisdigitr   rU   _search_regexupdate)#r'   rl   r}   r   r   r*   asset
format_urlasset_formatrF   r   r   rd   rj   re   rf   r   image	image_urlr   r!   sub_urlsub_keysub_type	legal_ager   	is_seriesinfor   r   r   r   r   r   r)   s#   `                                 @r+   _real_extractNRKIE._real_extract   s   >>#&,,S1"5	 	 %Z.(1KL8%6<H<<&-7h}56J'h'EeT**yy%%$UYYu%56J!IIh/52<<>Lu$j(AV(Kt88XNO&%!-$   ($ !,y/"wJJz*	g'UV!(,,z":;c~dhhWaNb?c
8$@ FCEFEeT**#EIIe$45I $UYY|%<=%eii&>? F 	8%=tDJJCc4((!#''("34G!#''*"56>$G"3776?3HQxj>)  "-44w6  K CSJ	 	C	""$$'	2	D"IJhV	 "& $""&wx9hjm'no
 LPPFPYPP>~~H:&*E & KHJx66$X\\-%@A'Z(@A	 +HLL,H I%hll>&BC!,X\\/-J!K3yk**  +D,>,>%{'8b/  -? -" !# '0)d!!,T-?-?B0@  .@ ." "# "!,T-?-?*K,=2$d .@ .4 "5 KK &!.""0  r.   r9   NrW   rX   rY   rZ   
_VALID_URL_TESTSr   r[   r9   r.   r+   r]   r]   J   s   
J 319A%9#?

	" 3 @A#~Z%

	  : ? [ T w
 <
 D
 
 !
 "
 *
 
 "MIFVMr.   r]   c                      \ rS rSrSrSrS\ 3rSSSSS	S
SSSS0/SS0/S.SSSS
S.SS0S.SS0 SS_SS_SS_SS_SS _S!S"_S#S$_S%S_S&S'_S(S)_S*S+_S,S-_S.S/_S0S1_S2S3_S4S5_S6.S7S8SS9S:S;S<S=S'S>.SS0S?.S@SASSBSCS'SD.SS0SE/SFSG.SHSASSBSCS'SD.SE/SISJ.SKSLSSMSNSOSPSQS5SRS'SS.
SS0S?.STSUSSVSWSXSYSZS'S>.SS0S[S\.S]SS^.S_SS^.S`SS^./
rSa rSbr	gc)dNRKTVIEi2  z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/MDDP12000117 c4a5960f1b00b40d47db65c1064e0ab1MDDP12000117r   zAlarm Trolltungaz$md5:46923a6e6510eefcce23d5ef2a58f2ceg{G^@   rc   vtt)znb-norznb-ttv20170627iNRYz?https://gfx.nrk.no/myRSc4vuFlahB60P3n6swwRTQUZI1LqJZl9B7icZFgzA)rb   rc   rd   re   rf   r   r   rg   ri   rh   rj   skip_downloadT)rl   rm   rn   paramsz@https://tv.nrk.no/serie/20-spoersmaal-tv/MUHH48000314/23-05-2014 8d40dab61cea8ab0114e090b029a0565rb   MUHH48000314rd   u   20 spørsmål - 23. mai 2014rj   z23. mai 2014re   $md5:bdea103bc35494c143c6a9acdd84887arf     r      20 spørsmålr   r   r   ri   i$r^rh   z?https://gfx.nrk.no/u7uCe79SEfPVGRAGVp2_uAZnNc4mfz_kjXg6Bgek8lMQr   126936rg   20200319seasonzSeason 2014r   i  r      rk   z&https://tv.nrk.no/program/mdfp15000514MDFP15000514uB   Kunnskapskanalen - Grunnlovsjubiléet - Stor ståhei for ingentingz$md5:89290c5ccde1b3a24bb8050ab67fe1dbgGz@Kunnskapskanalenu/   Grunnlovsjubiléet - Stor ståhei for ingenting)rb   rc   rd   re   rf   r   r   r   )rl   rn   r   zAhttps://tv.nrk.no/serie/tour-de-ski/MSPO40010515/06-01-2015#del=2MSPO40010515z.Sprint fri teknikk, kvinner og menn 06.01.2015z$md5:c03aba1e917561eface5214020551b7a)rb   rc   rd   re   r   z#Failed to download m3u8 informationz*particular part is not supported currently)rl   rn   r   expected_warningsskipz;https://tv.nrk.no/serie/tour-de-ski/MSPO40010515/06-01-2015zIkke tilgjengelig utenfor Norge)rl   rn   r   r   z=https://tv.nrk.no/serie/anno/KMTE50001317/sesong-3/episode-13KMTE50001317zAnno - 13. episodez$md5:11d9613661a8dbe6f9bef54e3a4cbbfai$	  Annoz13. episode   )
rb   rc   rd   re   rf   r   r   r   r   r   z=https://tv.nrk.no/serie/nytt-paa-nytt/MUHH46000317/27-01-2017MUHH46000317u   Nytt på Nytt 27.01.2017z$md5:5358d6388fba0ea6f0b6d11c48b9eb4bi  u   Nytt på nyttz
27.01.2017r1   rl   rn   r   r   z<https://radio.nrk.no/serie/dagsnytt/NPUB21019315/12-07-2015#rr   z:https://tv.nrk.no/serie/lindmo/2018/MUHU11006318/avspillerz>https://radio.nrk.no/serie/dagsnytt/sesong/201507/NPUB21019315c                 p    U R                  U5      nU R                  SU 3[        R                  5       US9$ Nnrk:ier)   r   
url_resultr]   ie_keyr'   rl   r)   s      r+   r   NRKTVIE._real_extract  <    >>#&8*%,,.8  E 	Er.   r9   N)
rW   rX   rY   rZ   IE_DESC_EPISODE_REr   r   r   r[   r9   r.   r+   r   r   2  s   $G-KHVJ71 'A 5  5 	 &#Z?%
* T
/6 R1
.
5
 3
 	

 A
 
 o
 ~
 
 
 Z
 
 :
 m
 T
  a!
, 8 YA(H	
 T
" S EA
 T
 DD<  M EA
 DD1 O )A$ 
 T
$ O /A%#	
 T
 *" N L PBFHEr.   r   c                       \ rS rSrSrS\R                  5       /SSSSSS	S
SSSS.
SS0S.SSSSSSSS
SSSS.
SS0SS./rS rSr	g) NRKTVEpisodeIEi  zhhttps?://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/2MUHH36005220r   u)   Hellums kro - 2. Kro, krig og kjærlighetz$md5:ad92ddffc04cea8ce14b415deef81787gHzo@zHellums kror   r   u   2. Kro, krig og kjærlighetr   )
rb   rc   rd   re   rf   r   r   r   r   r   r   T)rl   add_iern   r   z4https://tv.nrk.no/serie/backstage/sesong/1/episode/8MSUI14000816zBackstage - 8. episodez$md5:de6ca5d5a2d56849e4021f2bf2850df4i(  	Backstage   z
8. episoder   r1   r   c           	         U R                  U5      R                  SSS5      u  p#nU R                  X5      u  pV[        R	                  UR
                  5      (       a   [        R                  UR
                  5      nOOU R                  SUSU5      S   S   n[        R                  " [        R                  U5      (       d  [        S5      eU R                  S	U 3[        U[        U5      [        U5      S
9$ )Nrb   r   r   z#<script\b[^>]+\bid="pageData"[^>]*>z	page datainitialStateselectedEpisodePrfIdzUnable to extract NRK IDr   )r   r   )_match_valid_urlgroup_download_webpage_handler   suitablerl   r   _search_jsonr   	fullmatchr  r   r   r]   int)r'   rl   
display_idr   r   webpageurlhnrk_ids           r+   r   NRKTVEpisodeIE._real_extract  s    484I4I#4N4T4T/#3551
>55cFDHH%%&&txx0F&&6Z))799OQF << 3 3V<<$%?@@6(OUFm,~.  0 	0r.   r9   N)
rW   rX   rY   rZ   r   r]   r  r   r   r[   r9   r.   r+   r  r    s    |JG<<>" @A#4
 T
& F -A!#
 T
 *#%$FL0r.   r  c                   :    \ rS rSrS rSrS r\S 5       rS r	Sr
g)	NRKTVSerieBaseIEi  c           	      B   [        U[        5      (       d  / $ / nU H  nUR                  S5      =(       d    UR                  S5      nU(       a  [        U[        5      (       d  MJ  UR	                  U R                  SU 3[        R                  5       US95        M     U$ )NprfId	episodeIdr   r   )ry   r   rB   r   r   r   r]   r  )r'   
entry_listentriesr   r  s        r+   _extract_entries!NRKTVSerieBaseIE._extract_entries  s    *d++I!G[[)EW[[-EFFC!8!8NN4??vhELLNV + E F	 " r.   )episodesinstalmentsc                 ^    U R                    H  nUR                  U5      (       d  M  Us  $    g r   )_ASSETS_KEYSrB   )r'   embedded	asset_keys      r+   _extract_assets_key$NRKTVSerieBaseIE._extract_assets_key  s'    **I||I&&   +r.   c                     U S;   a  S$ S$ )N)podcastpodkastr/  r   r9   )
serie_kinds    r+   _catalog_nameNRKTVSerieBaseIE._catalog_name  s    &*@@yNhNr.   c           	   #     ^#    [         R                  " S5       H  nUR                  S5      =(       d    Un[        U[        5      (       d    g U R                  U5      mT(       d    g [        UU4S jU4S j4[        5      nU R                  U5       S h  vN   [        US U4S j4[        5      nU(       d    g U R                  XbST SU 3S	S
9nU(       a  M    g    g  NJ7f)Nr   	_embeddedc                    > U T   S   T   $ )Nr5  r9   r;   
assets_keys    r+   r<   +NRKTVSerieBaseIE._entries.<locals>.<lambda>  s    1Z=5jAr.   c                    > U T   $ r   r9   r7  s    r+   r<   r9     s	    1Z=r.   c                     U S   S   S   $ )Nr   nexthrefr9   r:   s    r+   r<   r9  &  s    1X;v.v6r.   c                 &   > U S   T   S   S   S   $ )Nr5  r   r<  r=  r9   r7  s    r+   r<   r9  '  s    1[>*5h?GOr.   rM   z JSON page F)rT   r   )	itertoolscountrB   ry   r   r,  r   r   r$  r   rU   )r'   rF   r  page_numr*  r#  next_url_pathr8  s          @r+   _entriesNRKTVSerieBaseIE._entries  s     !*Hxx,4Hh--11(;JA(*	G
 ,,W555#6OQ	M
 !>>#J<{8*E " D 47 + 6s   BC$C"AC$C$r9   N)rW   rX   rY   rZ   r$  r)  r,  staticmethodr2  rC  r[   r9   r.   r+   r  r    s.    
 /L!
 O Or.   r  c            	          ^  \ rS rSrSrSSSS.SS.S	S
SS.SS.SSSS.SS.SSSS.SS.SSS.SSSS.SS.SSS./r\U 4S j5       rS rSr	U =r
$ )NRKTVSeasonIEi3  as  (?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rb   rd      rl   rn   playlist_mincountz#https://tv.nrk.no/serie/lindmo/2016zlindmo/2016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/1Trr   zEhttps://radio.nrk.no/podkast/hele_historien/sesong/diagnose-kverulantz!hele_historien/diagnose-kverulantzDiagnose kverulantr   z9https://radio.nrk.no/podkast/loerdagsraadet/sesong/202101c                    > [         R                  U5      (       d4  [        R                  U5      (       d  [        R                  U5      (       a  S$ [        TU ]  U5      $ )NF)r   r  r  NRKRadioPodkastIEsuperclsrl   	__class__s     r+   r  NRKTVSeasonIE.suitablem  sO     ))#...2I2I#2N2NRcRlRlmpRqRq 	,W%c*	,r.   c           	         U R                  U5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      =(       d    UR                  S5      nU SU 3nU R                  U SU R                  U5       SU SU 3US	S
S0S9n[	        US [
        5      =(       d    Un	U R                  U R                  X5      Xy5      $ )Ndomainr1  serierb   id_2ru   	/catalog/z	/seasons/r   pageSize2   rx   c                     U S   S   $ )Nr   rd   r9   r:   s    r+   r<   -NRKTVSeasonIE._real_extract.<locals>.<lambda>~  s    (G(<r.   )r  r  rU   r2  r   r   playlist_resultrC  )
r'   rl   mobjrW  r1  rX  r   r  rF   rd   s
             r+   r   NRKTVSeasonIE._real_extractr  s    $$S)H%ZZ-


7#JJt$:

6(:	wa	{+
~~hi 2 2: >?qyQZP[\R(8  : <cBPj##MM$+ 	r.   r9   rW   rX   rY   rZ   r   r   classmethodr  r   r[   __classcell__rT  s   @r+   rG  rG  3  s    	J <
   5
   I)
   C#%
 ! :
 W5)
  KU-F^ , , r.   rG  c                      ^  \ rS rSrSrSSSSS.SS	.S
SS.SSSSS.SS	.SSSSS.SS	.SSSSS.SS	.SSS.SSS.SSS.SS S!S"S.S#S	.S$SS.S%S&S'0S(S	.S)SS./r\U 4S* j5       rS+ rS,r	U =r
$ )-NRKTVSeriesIEi  zkhttps?://(?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rb   rd   re   Z   rJ  zhttps://tv.nrk.no/serie/lindmoTrr   zhttps://tv.nrk.no/serie/blankblankBlankz$md5:7664b4e7e77dc6810cd3bca367c25b6erI  z!https://tv.nrk.no/serie/backstage	backstager  z$md5:63692ceb96813d9a207e9910483d948b<   z%https://tv.nrksuper.no/serie/labyrintlabyrint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_universrb   ulrikkes_univers
   zXhttps://radio.nrk.no/podkast/ulrikkes_univers/nrkno-poddkast-26588-134079-05042018030000c                    >^ [        U4S j[        [        [        [        4 5       5      (       a  S$ [
        TU ]  T5      $ )Nc              3   F   >#    U  H  nUR                  T5      v   M     g 7fr   )r  ).0r   rl   s     r+   	<genexpr>)NRKTVSeriesIE.suitable.<locals>.<genexpr>  s%      `#^R S))#^s   !F)anyr   r  rP  rG  rQ  r  rR  s    `r+   r  NRKTVSeriesIE.suitable  sI      `$+^=NP]#^` ` `E	( !#&	(r.   c           
         U R                  U5      R                  5       u  p#nUS:H  nU(       a  SOSnU(       a  SOSnU R                  U SU R                  U5       SU 3USUS	-   S
0S9n[	        US S S /5      =(       d    0 n	/ n
U
R                  U R                  X5      5        UR                  S5      =(       d    0 n[	        US 5      =(       d    / nUR                  S5      =(       d    / n[        U5      [        U5      :  a  U H  n[        XR                  S5      5      nU(       d8  UR                  S5      nU(       a   [        U[        5      (       a  SU SU SU 3nU(       d  Me  U
R                  U R                  U[        R                  5       UR                  S5      S95        M     O)U H#  nU
R                  U R                  X5      5        M%     U
R                  U R                  UR                  S5      =(       d    0 U5      5        U R!                  XU	R                  S5      U	R                  S5      5      $ )Nz	radio.nrkradiotvpembeddedInstalmentsPrZ  ru   rX  ageSizer\  rx   c                     U S   $ )Nr   r9   r:   s    r+   r<   -NRKTVSeriesIE._real_extract.<locals>.<lambda>  s    akr.   c                     X S      S   $ )Nr   r   r9   r:   s    r+   r<   r    s    a&	l8,r.   c                     X S      S   $ )N
seriesTyper   r9   r:   s    r+   r<   r    s    a,(2r.   r5  c                     U S   S   $ )Nr   seasonsr9   r:   s    r+   r<   r    s    1X;y3Ir.   r  r=  r   zhttps://z.nrk.no/serie/z/sesong/rd   )r   video_titleextraMaterialr   )r  groupsrU   r2  r   r   rC  rB   lenr   ry   r   r   r   rG  r  r_  )r'   rl   siter1  	series_idis_radiorW  size_prefixr   r   r#  r*  linked_seasonsembedded_seasonsr   
season_urlseason_names                    r+   r   NRKTVSeriesIE._real_extract  s!   &*&;&;C&@&G&G&I#);&$$%c+Ahi 2 2: >?qLw{Y'>&C   E !,2"
   	 	 t}}V78::k*0b )IJPb#<<	28b~%5!66($S**V*<=
!"(**V"4K"z+s'C'C'/x~i[PXYdXe%f
:NN4??"}';';'=$*JJw$7 $3 $9 : ) +t}}V?@ +t}}LL)/R< 	= ##

7 3VZZ
5KM 	Mr.   r9   rb  re  s   @r+   rg  rg    s.   J 6 #A

  	 0
 /A

   3 A

  	 7}

 	 K ? 6 @'*A

  4 ?$
   jCDFL ( (&M &Mr.   rg  c                   0    \ rS rSrSrSrSSS.SSS./rSrg	)
NRKTVDirekteIEi  z$NRK TV Direkte and NRK Radio Direktez7https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)zhttps://tv.nrk.no/direkte/nrk1Trr   z-https://radio.nrk.no/direkte/p1_oslo_akershusr9   N)rW   rX   rY   rZ   r  r   r   r[   r9   r.   r+   r  r    s-    4GKJ 0 ?Fr.   r  c            
       T    \ rS rSrSrSSSSSSS	S
SS.S.SSS.SSS.SSS./rS rSrg)rP  i	  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   MUHH48000314AAr   u   20 spørsmål 23.05.2014r   r   r   z
23.05.2014)rb   rc   rd   re   rf   r   r   rk   zThttps://radio.nrk.no/podcast/ulrikkes_univers/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8Trr   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                 p    U R                  U5      nU R                  SU 3[        R                  5       US9$ r   r   r  s      r+   r   NRKRadioPodkastIE._real_extract#  r  r.   r9   Nr   r9   r.   r+   rP  rP  	  si     DJ f1"/A%#
 f o ~%F.Er.   rP  c                        \ rS rSrS rS rSrg)NRKPlaylistBaseIEi)  c                     g r   r9   r'   r  s     r+   _extract_description&NRKPlaylistBaseIE._extract_description*  s    r.   c                 d   U R                  U5      nU R                  X5      n[        R                  " U R                  U5       Vs/ s H*  nU R                  SU 3[        R                  5       5      PM,     nnU R                  U5      nU R                  U5      nU R                  XRXg5      $ s  snf )Nr   )r   _download_webpager   findall_ITEM_REr   r]   r  _extract_titler  r_  )r'   rl   playlist_idr  r)   r#  playlist_titleplaylist_descriptions           r+   r   NRKPlaylistBaseIE._real_extract-  s    nnS)((: JJt}}g>
> OOd8*-u||~>> 	 

 ,,W5#88A##.H 	H
s   1B-r9   N)rW   rX   rY   rZ   r  r   r[   r9   r.   r+   r  r  )  s    Hr.   r  c                   P    \ rS rSrSrSrSSSSS.S	S
.SSSSS.S	S
./rS rS rSr	g)NRKPlaylistIEi>  zBhttps?://(?: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:c2df8ea3bac5654a26fc2834a542feedrh  r   rl   rn   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                 "    U R                  USS9$ )NFr   )_og_search_titler  s     r+   r  NRKPlaylistIE._extract_titleS  s    $$WE$::r.   c                 $    U R                  U5      $ r   )_og_search_descriptionr  s     r+   r  "NRKPlaylistIE._extract_descriptionV  s    **733r.   r9   N)
rW   rX   rY   rZ   r   r  r   r  r  r[   r9   r.   r+   r  r  >  sV    VJHH]HAA

  Y>6Y

 F$;4r.   r  c                   P    \ rS rSrSrS\R                   3rSSSS.SS	./rS
 r	Sr
g)NRKTVEpisodesIEiZ  z:https?://tv\.nrk\.no/program/[Ee]pisodes/[^/]+/(?P<id>\d+)zdata-episode=["\']z6https://tv.nrk.no/program/episodes/nytt-paa-nytt/6903169031u   Nytt på nytt, sesong: 201210rH     r  c                 &    U R                  SUSSS9$ )Nz<h1>([^<]+)</h1>rd   Fr   )_html_search_regexr  s     r+   r  NRKTVEpisodesIE._extract_titlef  s%    &&' ' @ 	@r.   r9   N)rW   rX   rY   rZ   r   r   r  r  r   r  r[   r9   r.   r+   r  r  Z  s?    NJ$W%8%8$9:HG4
  F@r.   r  c                   D    \ rS rSrSrSrSSSSSS	S
S.S.SSS./rS rSrg)
NRKSkoleIEik  z	NRK Skolez;https?://(?:www\.)?nrk\.no/skole/?\?.*\bmediaId=(?P<id>\d+)z6https://www.nrk.no/skole/?page=search&q=&mediaId=14099 18c12c3d071953c3bf8d54ef6b2587b76021r   zGenetikk og eneggede tvillingerz$md5:3aca25dcf38ec30f0363428d2b265f8di  )rb   rc   rd   re   rf   rk   zYhttps://www.nrk.no/skole/?page=objectives&subject=naturfag&objective=K15114&mediaId=19355Trr   c                 |    U R                  U5      nU R                  SU 3U5      S   nU R                  SU 35      $ )Nz5https://nrkno-skole-prod.kube.nrk.no/skole/api/media/psIdr   )r   rQ   r   )r'   rl   r)   r  s       r+   r   NRKSkoleIE._real_extract~  sL    >>#&$$CH:N fX//r.   r9   N)	rW   rX   rY   rZ   r  r   r   r   r[   r9   r.   r+   r  r  k  sH    GOJ H16A

 kF0r.   r  )r?  r%   r   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r]   r   r  r  rG  rg  r  rP  r  r  r  r  r9   r.   r+   <module>r     s      	 ! -  2 2jeI ePKEm KE\90] 90x4y 4nN$ NbuM$ uMp
W 
E E@H H*4% 48@' @"0 0r.   