
    VGhP                        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mZ  G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Zy)!    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                   *    e Zd ZdgZdZd Zd ZddZy)	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           
         t        |g dd      }t        j                  d|      r| j                  ||      S t        j                  dd|      }| j                  ||ddd	      }|slt        j                  | j                  |      rL| j                  t        j                  | j                  d
t        j                  dd      z  |      |ddd	      }|S )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       ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/nrk.py_extract_nrk_formatszNRKBaseIE._extract_nrk_formats   s    $Y	1
 	 887C//	8DDFFEr9U	,,xU - D299T%9%99E00t++-ORXR`R`abdfRg-girs%e 1 =G     c                 4   ddddd}|j                  dd      }d|v st        |d	       d
u r,| j                  |j                  d      | j                         |j                  d      xs |j                  ||      }t	        | j
                   d| d
      )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                     | d   d   S )NusageRightsisGeoBlocked xs    r*   <lambda>z(NRKBaseIE._raise_error.<locals>.<lambda>9   s    Q}EUVdEe r,   Tr1   )msg	countriesendUserMessagez said: )expected)getr   raise_geo_restricted_GEO_COUNTRIESr   IE_NAME)r&   dataMESSAGESmessage_typemessages        r*   _raise_errorzNRKBaseIE._raise_error0   s    (Y'@2#h	
 xxr2\)WT;e-fjn-n%%LL!67-- & / ((+,X\<0X~WWI>NNr,   Nc           	      X    | j                  t        d|      ||xs d| d||ddi      S )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   rK   s          r*   	_call_apizNRKBaseIE._call_api@   sH    ""+T2d8TF%8uk/ #  	r,   )NNTN)__name__
__module____qualname__rA   r#   r+   rG   rQ   r7   r,   r*   r   r      s     VNO$O r,   r   c                       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%ddd&ddd'ddgZd( Zy))*NRKIEa  (?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)	rZ   r[   r\   r]   r^   ra   rb   r`   r_   )rd   rf   z(nrk:ecc1b952-96dc-4a98-81b9-5296dc7a98d9Trd   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                 R	   "  j                  |      j                  d      d   "d> "fd	} |dddi      }t        |d t              xs ""|j	                  d      d	k(  r j                  |d	          |d
   }g }|d   D ]  }t        |t              s|j	                  d      r&t        |j	                  d            }|sC|j	                  d      xs dj                         }|dk(  st        |      dk(  r"|j                   j                  |"             |dk(  s|j                  ||dd         |d      }	|	d   }
|
d   }|d   }|j	                  d      }t        |
d       }t        |j	                  d            xs t        |	j	                  d            }g }t        |
d t              xs g D ]u  }t        |t              st        |j	                  d            }|s1|j                  |t!        |j	                  d            t!        |j	                  d            d       w i }t        |d  t              xs g D ]  }t        |t              st        |j	                  d!            }|s1t#        |j	                  d"            xs d#}t#        |j	                  d$            }|r|d%| z  }|j%                  |g       j                  d|i        t        |	d& t              }d }|r#|d'k(  rd(}n|j'                         rt!        |      }t        |	d)       d*k(  }"||||||||t)        t        |d+ t                    d,
}|rPd x}x}x}x}}  j+                  d-" "d.d/0      }!|!rt        |!t              rt#        |!j	                  d1            }t#        |!j	                  d2            }t!        |!j	                  d3            }t#        |!j	                  d4            }t!        |!j	                  d5            } |s|}|r|d6| z  }|s"t!         j-                  d7|xs dd8d 9            }|s|r|nd }| s"t!         j-                  d:|xs dd;d 9            } | s"t!         j-                  d<|xs dd;d 9            } |j/                  |||||| d=       |S )?N/c                    	 j                  d|  d | |      S # t        $ rY}t        |j                  t              r9|j                  j
                  dk(  r j                  d|  d | |      cY d }~S  d }~ww xY w)Nz	playback/z	/program/rK   i  rm   )rQ   r   
isinstancecauser   status)rO   rK   er&   r(   s      r*   call_playback_apiz.NRKIE._real_extract.<locals>.call_playback_api   s    ~~	$y
&KXW[ch~ii! aggy1aggnn6K>>IdV1XJ*GSW_d>ees!    	B AA;4B :A;;B manifestpreferredCdnakamaic                     | d   S )NrZ   r7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s
    qw r,   playabilitynonPlayableplayableassets	encryptedrd   formatr   hlsm3u8mp3none)rd   	format_idvcodecmetadatapreplaytitlesr\   subtitlec                 ,    | d   j                  dd      S )Nr]   
)replacer8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s    =1A1I1I$PT1U r,   r^   c                     | d   d   S )Nposterimagesr7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s    1X;x#8 r,   
pixelWidthpixelHeight)rd   widthheightc                     | d   S )N	subtitlesr7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s
    q~ r,   webVttlanguagenbtype-c                     | d   d   d   d   S )NlegalAgebodyratingcoder7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s    AjM&1(;FC r,   Ar   c                     | d   d   d   S )N_linksseriesnamer7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>   s    AhK,A&,I r,   r   c                     | d   d   d   S )NavailabilityonDemandfromr7   r8   s    r*   r:   z%NRKIE._real_extract.<locals>.<lambda>  s    1^CTU_C`agCh r,   )
rZ   r\   rb   r]   r^   
thumbnails	age_limitr)   r   ra   z	programs/programsFr   seriesTitleseasonIdseasonNumberepisodeTitleepisodeNumberz - z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   strr?   rG   rq   dictr   lowerr   extendr+   appendr
   listr	   r   
setdefaultisdigitr   rQ   _search_regexupdate)#r&   rd   ru   rv   r|   r)   asset
format_urlasset_formatrC   r   r   r\   rb   r]   r^   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_extractz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	EeT*#EIIe$45I $UYY|%<=%eii&>? 	 	8%=tDJ 	Cc4(!#''("34G!#''*"56>$G"3776?3HQxj>)  "-44w6 	 CSJ	 	C	""$'	2	D"IJhV	 "& $""&wx9hjm'no
 LPPFPYPP>~~H:&*E & KHJx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,   NrR   rS   rT   
_VALID_URL_TESTSr   r7   r,   r*   rV   rV   J   s   
J 319A%9#?

	" 3 @A#~Z%

	  : ? [ T w
 <
 D
 
 !
 "
 *
 
 "MIFVMr,   rV   c                      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idddi 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/d0d1d2d3d4d5d6d7dd8d9d:d;d<d&d=ddid>d?d@ddAdBd&dCddidDgdEdFdGd@ddAdBd&dCdDgdHdIdJdKddLdMdNdOdPd4dQd&dR
ddid>dSdTddUdVdWdXdYd&d=ddidZd[d\dd]d^dd]d_dd]g
Zd` Zya)b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/MDDP12000117 c4a5960f1b00b40d47db65c1064e0ab1MDDP12000117r   zAlarm Trolltungaz$md5:46923a6e6510eefcce23d5ef2a58f2ceg{G^@   r[   vtt)znb-norznb-ttv20170627iNRYz?https://gfx.nrk.no/myRSc4vuFlahB60P3n6swwRTQUZI1LqJZl9B7icZFgzA)rZ   r[   r\   r]   r^   r   r   r_   ra   r`   rb   skip_downloadT)rd   re   rf   paramsz@https://tv.nrk.no/serie/20-spoersmaal-tv/MUHH48000314/23-05-2014 8d40dab61cea8ab0114e090b029a0565rZ   MUHH48000314r\   u   20 spørsmål - 23. mai 2014rb   z23. mai 2014r]   $md5:bdea103bc35494c143c6a9acdd84887ar^     r      20 spørsmålr   r   r   ra   i$r^r`   z?https://gfx.nrk.no/u7uCe79SEfPVGRAGVp2_uAZnNc4mfz_kjXg6Bgek8lMQr   126936r_   20200319seasonzSeason 2014r   i  r      rc   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)rZ   r[   r\   r]   r^   r   r   r   rd   rf   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)rZ   r[   r\   r]   r   z#Failed to download m3u8 informationz*particular part is not supported currently)rd   rf   r   expected_warningsskipz;https://tv.nrk.no/serie/tour-de-ski/MSPO40010515/06-01-2015zIkke tilgjengelig utenfor Norge)rd   rf   r   r   z=https://tv.nrk.no/serie/anno/KMTE50001317/sesong-3/episode-13KMTE50001317zAnno - 13. episodez$md5:11d9613661a8dbe6f9bef54e3a4cbbfai$	  Annoz13. episode   )
rZ   r[   r\   r]   r^   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.2017r/   rd   rf   r   r   z<https://radio.nrk.no/serie/dagsnytt/NPUB21019315/12-07-2015#rj   z:https://tv.nrk.no/serie/lindmo/2018/MUHU11006318/avspillerz>https://radio.nrk.no/serie/dagsnytt/sesong/201507/NPUB21019315c                 v    | j                  |      }| j                  d| t        j                         |      S Nnrk:ier(   r   
url_resultrV   ie_keyr&   rd   r(   s      r*   r   zNRKTVIE._real_extract  <    >>#&8*%,,.8  E 	Er,   N)rR   rS   rT   IE_DESC_EPISODE_REr   r   r   r7   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                   d    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 Zy)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/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   )
rZ   r[   r\   r]   r^   r   r   r   r   r   r   Tr   z4https://tv.nrk.no/serie/backstage/sesong/1/episode/8MSUI14000816zBackstage - 8. episodez$md5:de6ca5d5a2d56849e4021f2bf2850df4i(  	Backstage   z
8. episoder   r/   r   c           
         | j                  |      j                         \  }}}| j                  ||      }| j                  ||i       }|j	                  d      xs; | j                  d|d       xs% | j                  dt        j                   d|d      }t        j                  t        j                  |      sJ |j                  d|d| t        j                         t        |      t        |      d	       |S )
Nr   z@idznrk:program-idzdata-program-id=["\']()znrk idrd   r   )_typerZ   rd   r   r   r   )_match_valid_urlgroups_download_webpage_search_json_ldr?   _html_search_metar   r   r   r   r   r   rV   r   int)r&   rd   
display_idr   r   webpager   nrk_ids           r*   r   zNRKTVEpisodeIE._real_extract  s    484I4I#4N4U4U4W1
M>((j9##GZ#D% D$:$:gt %; %5 8<8J8J%g&9&9%:!<g9 	 xx++V444&?lln /!.1
 	 r,   Nr   r7   r,   r*   r   r     s    zJG @A#4
 T
$ F -A!#
 T
 *###FJr,   r   c                   2    e Zd Zd ZdZd Zed        Zd Zy)NRKTVSerieBaseIEc                    t        |t              sg S g }|D ]q  }|j                  d      xs |j                  d      }|rt        |t              s:|j	                  | j                  d| t        j                         |             s |S )NprfId	episodeIdr   r   )rq   r   r?   r   r   r   rV   r   )r&   
entry_listentriesr   r  s        r*   _extract_entriesz!NRKTVSerieBaseIE._extract_entries  s    *d+I! 	FG[[)EW[[-EFFC!8NN4??vhELLNV + E F		F r,   )episodesinstalmentsc                 P    | j                   D ]  }|j                  |      s|c S  y r   )_ASSETS_KEYSr?   )r&   embedded	asset_keys      r*   _extract_assets_keyz$NRKTVSerieBaseIE._extract_assets_key  s)    ** 	!I||I&  	!r,   c                     | dv rdS dS )N)podcastpodkastr  r   r7   )
serie_kinds    r*   _catalog_namezNRKTVSerieBaseIE._catalog_name  s    &*@@yNhNr,   c           	   #     K   t        j                  d      D ]  }|j                  d      xs |}t        |t              s y | j                  |      s y t        |fdfdft              }| j                  |      E d {    t        |d fdft              }|s y | j                  ||d d| d	
      }|r y  y 7 Aw)Nr   	_embeddedc                     |    d      S )Nr$  r7   r9   
assets_keys    r*   r:   z+NRKTVSerieBaseIE._entries.<locals>.<lambda>!  s    1Z=5jA r,   c                     |    S r   r7   r&  s    r*   r:   z+NRKTVSerieBaseIE._entries.<locals>.<lambda>"  s    1Z= r,   c                     | d   d   d   S )Nr   nexthrefr7   r8   s    r*   r:   z+NRKTVSerieBaseIE._entries.<locals>.<lambda>(  s    1X;v.v6 r,   c                 &    | d      d   d   d   S )Nr$  r   r*  r+  r7   r&  s    r*   r:   z+NRKTVSerieBaseIE._entries.<locals>.<lambda>)  s    1[>*5h?GO r,   rI   z JSON page F)rP   r   )	itertoolscountr?   rq   r   r  r   r   r  r   rQ   )r&   rC   r  page_numr  r  next_url_pathr'  s          @r*   _entrieszNRKTVSerieBaseIE._entries  s     !* 	Hxx,4Hh-11(;JA(*	G
 ,,W555#6OQ	M
 !>>z#J<{8*E " D 7	 6s   BC	C<C	C	N)	rR   rS   rT   r  r  r  staticmethodr"  r1  r7   r,   r*   r  r    s.    
 /L!
 O Or,   r  c            	            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       Zd Z x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rZ   r\      rd   rf   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/1Trj   zEhttps://radio.nrk.no/podkast/hele_historien/sesong/diagnose-kverulantz!hele_historien/diagnose-kverulantzDiagnose kverulantr   z9https://radio.nrk.no/podkast/loerdagsraadet/sesong/202101c                     t         j                  |      s*t        j                  |      st        j                  |      rdS t        |   |      S )NF)r   suitabler   NRKRadioPodkastIEsuperclsrd   	__class__s     r*   r=  zNRKTVSeasonIE.suitableo  sF     ))#..2I2I#2NRcRlRlmpRq 	,W%c*	,r,   c           	         | j                  |      }|j                  d      }|j                  d      }|j                  d      }|j                  d      xs |j                  d      }| d| }| j                  | d| j                  |       d| d| |d	d
di      }t	        |d t
              xs |}	| j                  | j                  ||      ||	      S )Ndomainr!  serierZ   id_2rm   	/catalog/z	/seasons/r   pageSize2   rp   c                     | d   d   S )Nr   r\   r7   r8   s    r*   r:   z-NRKTVSeasonIE._real_extract.<locals>.<lambda>  s    (G(< r,   )r  grouprQ   r"  r   r   playlist_resultr1  )
r&   rd   mobjrD  r!  rE  r   r  rC   r\   s
             r*   r   zNRKTVSeasonIE._real_extractt  s    $$S)H%ZZ-


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

6(:	wa	{+
~~hi 2 2: >?qyQZP[\R(8  : <cBPj##MM$
+ 	r,   	rR   rS   rT   r   r   classmethodr=  r   __classcell__rB  s   @r*   r4  r4  5  s    	J <
   5
   I)
   C#%
 ! :
 W5)
  KU-F^ , ,r,   r4  c                        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)       Zd* Z x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rZ   r\   r]   Z   r7  zhttps://tv.nrk.no/serie/lindmoTrj   zhttps://tv.nrk.no/serie/blankblankBlankz$md5:7664b4e7e77dc6810cd3bca367c25b6er6  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_universrZ   ulrikkes_univers
   zXhttps://radio.nrk.no/podkast/ulrikkes_univers/nrkno-poddkast-26588-134079-05042018030000c                 x    t        fdt        t        t        t        fD              rdS t
        |         S )Nc              3   @   K   | ]  }|j                          y wr   )r=  ).0r   rd   s     r*   	<genexpr>z)NRKTVSeriesIE.suitable.<locals>.<genexpr>  s$      ` S) `s   F)anyr   r   r>  r4  r?  r=  r@  s    `r*   r=  zNRKTVSeriesIE.suitable  sC      `$+^=NP]#^` `E	( !#&	(r,   c           
      2   | j                  |      j                         \  }}}|dk(  }|rdnd}|rdnd}| j                  | d| j                  |       d| |d|d	z   d
i      }t	        |d d d g      xs i }	g }
|
j                  | j                  ||             |j                  d      xs i }t	        |d       xs g }|j                  d      xs g }t        |      t        |      kD  r|D ]  }t        ||j                  d            }|s.|j                  d      }|rt        |t              rd| d| d| }|sQ|
j                  | j                  |t        j                         |j                  d                    n(|D ]#  }|
j                  | j                  ||             % |
j                  | j                  |j                  d      xs i |             | j!                  |
||	j                  d      |	j                  d            S )Nz	radio.nrkradiotvpembeddedInstalmentsPrG  rm   rE  ageSizerI  rp   c                     | d   S )Nr   r7   r8   s    r*   r:   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>  s
    ak r,   c                     | | d      d   S )Nr   r   r7   r8   s    r*   r:   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>  s    a&	l8, r,   c                     | | d      d   S )N
seriesTyper   r7   r8   s    r*   r:   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>  s    a,(2 r,   r$  c                     | d   d   S )Nr   seasonsr7   r8   s    r*   r:   z-NRKTVSeriesIE._real_extract.<locals>.<lambda>  s    1X;y3I r,   rn  r+  r   zhttps://z.nrk.no/serie/z/sesong/r\   )r   video_titleextraMaterialr   )r  r  rQ   r"  r   r   r1  r?   lenr   rq   r   r   r   r4  r   rL  )r&   rd   siter!  	series_idis_radiorD  size_prefixr   r   r  r  linked_seasonsembedded_seasonsr   
season_urlseason_names                    r*   r   zNRKTVSeriesIE._real_extract  s2   &*&;&;C&@&G&G&I#j);&$$%c+Ahi 2 2: >?qLw{Y'>&C   E !,2"
   	 	 t}}VY78::k*0b )IJPb#<<	28b~%5!66( 	:$S&**V*<=
!"(**V"4K"z+s'C'/x~i[PXYdXe%f
NN4??"}';';'=$*JJw$7 $3 $9 :	: + At}}VY?@At}}LL)/R< 	= ##Y

7 3VZZ
5KM 	Mr,   rN  rQ  s   @r*   rS  rS    s(   J 6 #A

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

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

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

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

  4 ?$
   jCDFL ( (&Mr,   rS  c                   (    e Zd ZdZdZddddddgZy)NRKTVDirekteIEz$NRK TV Direkte and NRK Radio Direktez7https?://(?:tv|radio)\.nrk\.no/direkte/(?P<id>[^/?#&]+)zhttps://tv.nrk.no/direkte/nrk1Trj   z-https://radio.nrk.no/direkte/p1_oslo_akershusN)rR   rS   rT   r   r   r   r7   r,   r*   r{  r{    s-    4GKJ 0 ?Fr,   r{  c            
       L    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 Zy)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   MUHH48000314AAr   u   20 spørsmål 23.05.2014r   r   r   z
23.05.2014)rZ   r[   r\   r]   r^   r   r   rc   zThttps://radio.nrk.no/podcast/ulrikkes_univers/l_96f4f1b0-de54-4e6a-b4f1-b0de54fe6af8Trj   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                 v    | j                  |      }| j                  d| t        j                         |      S r   r   r   s      r*   r   zNRKRadioPodkastIE._real_extract%  r   r,   Nr   r7   r,   r*   r>  r>    si     DJ f1"/A%#
 f o ~%F.Er,   r>  c                       e Zd Zd Zd Zy)NRKPlaylistBaseIEc                      y r   r7   r&   r  s     r*   _extract_descriptionz&NRKPlaylistBaseIE._extract_description,  s    r,   c                 b   | j                  |      }| j                  ||      }t        j                  | j                  |      D cg c])  }| j                  d| t        j                               + }}| j                  |      }| j                  |      }| j                  ||||      S c c}w )Nr   )r   r  r   findall_ITEM_REr   rV   r   _extract_titler  rL  )r&   rd   playlist_idr  r(   r  playlist_titleplaylist_descriptions           r*   r   zNRKPlaylistBaseIE._real_extract/  s    nnS)((k: JJt}}g>
 OOd8*-u||~>
 

 ,,W5#88A##[.2FH 	H
s   .B,N)rR   rS   rT   r  r   r7   r,   r*   r  r  +  s    Hr,   r  c                   H    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 Zd Zy)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:c2df8ea3bac5654a26fc2834a542feedrT  r   rd   rf   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                 (    | j                  |d      S )NFr   )_og_search_titler  s     r*   r  zNRKPlaylistIE._extract_titleU  s    $$WE$::r,   c                 $    | j                  |      S r   )_og_search_descriptionr  s     r*   r  z"NRKPlaylistIE._extract_descriptionX  s    **733r,   N)rR   rS   rT   r   r  r   r  r  r7   r,   r*   r  r  @  sV    VJHH]HAA

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

 F$;4r,   r  c                   H    e Zd ZdZdej
                   ZddddddgZd	 Zy
)NRKTVEpisodesIEz: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: 201210r5     r  c                 ,    | j                  d|dd      S )Nz<h1>([^<]+)</h1>r\   Fr   )_html_search_regexr  s     r*   r  zNRKTVEpisodesIE._extract_titleh  s%    &&' ' @ 	@r,   N)	rR   rS   rT   r   r   r   r  r   r  r7   r,   r*   r  r  \  s?    NJ$W%8%8$9:HG4
  F@r,   r  c                   <    e Zd ZdZdZddddddd	d
ddddgZd Zy)
NRKSkoleIEz	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  )rZ   r[   r\   r]   r^   rc   zYhttps://www.nrk.no/skole/?page=objectives&subject=naturfag&objective=K15114&mediaId=19355Trj   c                 |    | j                  |      }| j                  d| |      d   }| j                  d|       S )Nz5https://nrkno-skole-prod.kube.nrk.no/skole/api/media/psIdr   )r   rM   r   )r&   rd   r(   r  s       r*   r   zNRKSkoleIE._real_extract  sL    >>#&$$CH:N fX//r,   N)rR   rS   rT   r   r   r   r   r7   r,   r*   r  r  m  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   rV   r   r   r  r4  rS  r{  r>  r  r  r  r  r7   r,   r*   <module>r     s      	 ! -  2 2jeI ePKEm KE\;] ;|4y 4nN$ NbuM$ uMp
W 
E E@H H*4% 48@' @"0 0r,   