
    V|hC                         S SK r S SKrSSKJr  SSKJrJrJrJrJ	r	  SSK
JrJr   " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      rg)    N   )InfoExtractor   )determine_extdict_getint_or_nonetry_getunified_timestamp)requiretraverse_objc                   0    \ rS rSrS/rS r\S 5       rSrg)	SVTBaseIE   SEc                    [        USSS9nU(       a  SOSn/ n0 nUS    H  nUR                  S5      =(       d    UR                  S5      nUS	   n	[        U	5      n
U
S:X  a7  U R                  XS
UUSS9u  pUR	                  U5        U R                  XS9  My  U
S:X  a&  UR	                  U R                  U	S-   UUSS95        M  U
S:X  a5  U R                  XUSS9u  pUR	                  U5        U R                  XS9  M  UR                  UU	S.5        M     [        US [        5      =(       d    0 nU(       d1  UR                  S5      (       a  U R                  SU R                  SS9  [        US5      n[        U[        5      (       an  U Hh  nUR                  S	5      nUR                  SS5      nU(       d  M/  S	U0n[        U5      S:X  a  SUS'   UR                  U/ 5      R                  U5        Mj     UR                  S5      nUR                  S5      n[!        UR                  S5      5      nUR                  S 5      n[!        UR                  S!5      5      n[#        UR                  S"5      5      n[!        [        US#5      5      nS n[        US$SS%9nUb  U(       a  S&OS'nUUUU R%                  U5      UUUUUUUUS(.$ ))N)live	simulcastF)defaultm3u8m3u8_nativevideoReferences
playerTypeformaturlmp4)extentry_protocolm3u8_idfatal)targetf4mz?hdcore=3.3.0)f4m_idr   mpd)mpd_idr   )	format_idr   c                     U S   $ )Nrights )xs    N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/svt.py<lambda>*SVTBaseIE._extract_video.<locals>.<lambda>3   s    q{    geoBlockedSwedenz&This video is only available in SwedenT)	countriesmetadata_available)	subtitlessubtitleReferenceslanguagesvvttr   titleprogramTitleseasonepisodeTitleepisodeNumber	validFrom)materialLengthcontentDuration)inappropriateForChildrenblockedForChildren)skip_false_valuesr   r   )idr6   formatsr1   duration	timestamp	age_limitseriesseason_numberepisodeepisode_numberis_live)r   getr   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitles_extract_f4m_formats"_extract_mpd_formats_and_subtitlesappendr	   dictraise_geo_restricted_GEO_COUNTRIES
isinstancelist
setdefaultr   r
   _fixup_subtitles)self
video_infovideo_idrJ   m3u8_protocolrB   r1   vrplayer_typevurlr   fmtssubsr'   subtitle_referencessrsubtitle_urlsubtitle_langsubr6   rF   rG   rH   rI   rD   rC   rE   adults                               r*   _extract_videoSVTBaseIE._extract_video   s   :'<eL")}	./B&&.B"&&2BKe9D%Cf}!EEm'u F 6
 t$%%d%=t88?*H&e  9  5 6 !DD;e E E
t$%%d%=!,  + 02 %:DAGR6::&899%%8--$ & H 'z3VW)400)!vve} "z4 8<|C %\2f<%*E
((;BB3G * w'/#JNN8$<=..0$Z^^O%DE%fjj&=>	x
4YZ[	J#% #I ..y9 ""*,
 	
r-   c                     0 nU R                  5        H?  u  p#U H4  nSUS   ;   a  U S3OUnUR                  U/ 5      R                  U5        M6     MA     U$ )Nz	text-openr   z-forced)itemsrW   rQ   )r1   fixed_subtitleslangra   rf   
fixed_langs         r*   rX   SVTBaseIE._fixup_subtitlesf   sc     #//+JD1<E
1JvW-PT
**:r:AA#F  , r-   r(   N)	__name__
__module____qualname____firstlineno__rT   rh   staticmethodrX   __static_attributes__r(   r-   r*   r   r      s$    VNO
b  r-   r   c                   0   \ rS rS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0S.SSSSSSSSSSSSS0/0S .	SS0S!S".S#SS$SS%S&S'S(S)SSS%S*SS0S+.SS0S,/S-.S.S/SS0S1S2S3S4SSS0S5S6.SS70S8.S9S:S;.S<S:S;.S=S:S;.S>S:S;.S?S:S;.S@S:S;.SAS:S;.SBS:S;.SCS:S;./rSD rSE r	SFr
gG)H	SVTPlayIEq   zsvt:playu   SVT Play and Öppet arkiva  (?x)
                    (?:
                        (?:
                            svt:|
                            https?://(?:www\.)?svt\.se/barnkanalen/barnplay/[^/]+/
                        )
                        (?P<svt_id>[^/?#&]+)|
                        https?://(?:www\.)?(?:svtplay|oppetarkiv)\.se/(?:video|klipp|kanaler)/(?P<id>[^/?#&]+)
                        (?:.*?(?:modalId|id)=(?P<modal_id>[\da-zA-Z-]+))?
                    )
                    zChttps://www.svtplay.se/video/eXYgwZb/sverige-och-kriget/1-utbrottet 2382036fd6f8c994856c323fe51c426eePBvGRqr   z1. Utbrottetz$md5:02291cc3159dbc9aa95d564e77a8a92bzSverige och krigetih20250511i  z6re:^https?://(?:.*[\.-]jpg|www.svtstatic.se/image/.*)$r   zcount:3)r4   z	sv-forced)rA   r   r6   descriptionrF   rH   rD   upload_daterC   	thumbnailrE   r1   skip_downloadr   )r   md5	info_dictparamsz%https://www.svtplay.se/video/304790648zVbDPAu   Designdrömmar i StenungsundiN`20210315i  r4   r   r5   )	rA   r   r6   rD   r}   rC   r~   rE   r1   zEpisode is no longer available)r   r   r   r   skipz$https://www.svtplay.se/video/emBxBQjeyBd9ajz1. Farlig kryssningi%Xz$md5:8f350bc605677a5ead36a19a62fd9a3420170401i
  Rederiet)rA   r   r6   rD   r|   r}   rC   r~   rE   rH   rF   r1   zFailed to download (?:MPD|m3u8))r   r   r   r   expected_warningszOhttps://www.svtplay.se/video/jz2rYz7/anders-hansen-moter/james-fallon?info=visajvXAGVbzJames FallonuL   re:James Fallon är hjärnforskaren .{532} att upptäcka psykopati tidigt\?$i g20250331i9  u   Anders Hansen möter)rA   r   r6   r|   rD   r}   rC   r~   rE   rH   rF   dashr   r   r   zphttps://www.svtplay.se/video/30479064/husdrommar/husdrommar-sasong-8-designdrommar-i-stenungsund?modalId=8zVbDPATr   only_matchingzOhttps://www.svtplay.se/video/30684086/rapport/rapport-24-apr-18-00-7?id=e72gVpaz3http://www.oppetarkiv.se/video/5219710/trollflojtenz:http://www.svtplay.se/klipp/9023742/stopptid-om-bjorn-borgz#https://www.svtplay.se/kanaler/svt1zsvt:1376446-003Azsvt:14278044z4https://www.svt.se/barnkanalen/barnplay/kar/eWv5MLX/zsvt:eWv5MLXc                     U R                  SU 3XR                  5       S9nU R                  X!5      nUR                  S5      (       d  [	        USS5      US'   U$ )Nz)https://api.svt.se/videoplayer-api/video/)headersr6   rH   rF   )_download_jsongeo_verification_headersrh   rK   r   )rY   r[   datar   s       r*   _extract_by_video_idSVTPlayIE._extract_by_video_id   sg    ""7zB;;= # ? ''7	}}W%%!-iH!MIgr-   c                 |   U R                  U5      nUR                  S5      nUR                  S5      =(       d    UR                  S5      nU(       a  U R                  U5      $ U R                  X5      n[	        U R                  XS5      SSSS[        R                  1S[        1[        [        S	5      14	5      n[	        US
S S[        45      n[	        USSSS S4S[        1[        45      nU(       d  [	        USS[        1[        S5      145      nU R                  U5      nUR                  S5      (       d*  [        R                  " SSU R                  U5      5      US'   UR                  S5      (       d  U R!                  U5      US'   UR                  S5      (       d  [	        US[        145      US'   U$ )NrA   svt_idmodal_idprops	urqlState.r   detailsPageByPathz
video datamodulesc                     US   S   S   S   $ )Ndetails
smartStartitemvideosr(   _vs     r*   r+   )SVTPlayIE._real_extract.<locals>.<lambda>  s    AiL$>v$Fx$Pr-   r   r   r   r   c                     US   S:H  $ )NaccessibilityDefaultr(   r   s     r*   r+   r     s    !O,	9r-   r   svtIdvideozSVT IDr6   z\s*\|\s*.+?$ r~   r|   )_match_valid_urlgroupr   _download_webpager   _search_nextjs_datajsonloadsrR   anyr   strrK   rerf   _og_search_title_og_search_thumbnail)	rY   r   mobjr[   r   webpager   r   r   s	            r*   _real_extractSVTPlayIE._real_extract   s   $$S)::d#H%?J)?,,V44((7D44WG[#v

|$w|/D.EJG H tPR[]`&b cg&(91=cUC	(! "
 !$'C578CTBU(VWF--f5	}}W%%!#T=R=RSZ=[!\Ig}}[))%)%>%>w%GIk"}}]++'3GmcU=S'TIm$r-   r(   N)rp   rq   rr   rs   IE_NAMEIE_DESC
_VALID_URL_TESTSr   r   ru   r(   r-   r*   rw   rw   q   s   G)G
J U1#A*%#%R )	B
 V
#* 713#%R5 
  V
 1+. 61*#A%R, i
" V
 AA-0 a#j#%R%,
 V
& B a
 E
 L 5 "  F YoFb	r-   rw   c                   h   ^  \ rS rSrSrSr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$ )SVTSeriesIEi  zsvt:play:serieszThttps?://(?:www\.)?svtplay\.se/(?P<id>[^/?&#]+)(?:.+?\btab=(?P<season_slug>[^&#]+))?zhttps://www.svtplay.se/rederietjpmQYgnr   z$md5:f71122f7cf2e52b643e75915e04cb83d)rA   r6   r|   i>  )r   r   playlist_mincountz4https://www.svtplay.se/rederiet?tab=season-2-jpmQYgnzseason-2-jpmQYgnu   Rederiet - Säsong 2   c                 Z   > [         R                  U5      (       a  S$ [        TU ]  U5      $ NFrw   suitablesuperclsr   	__class__s     r*   r   SVTSeriesIE.suitable2  (    !**3//uJUW5Ec5JJr-   c           	      r   U R                  U5      R                  5       u  p#U R                  SUSSSU-  0S9S   S   S   nS n/ nUS	    H  n[        U[        5      (       d  M  U(       a(  UR                  S
5      U:w  a  M8  UR                  S5      nUR                  S5      n[        U[        5      (       d  Mq  U H  n	U	R                  S5      =(       d    0 n
U
R                  S5      nU(       a  [        U[        5      (       d  ML  UR                  U R                  SU-   [        R                  5       U5      5        M     M     UR                  S5      nU=(       d    UnU(       a  U(       a  U SU 3nO	U(       a  UnU R                  Xc=(       d    UR                  S
5      U[        US5      5      $ )Nz#https://api.svt.se/contento/graphqlzDownloading series pagequerya'  {
  listablesBySlug(slugs: ["%s"]) {
    associatedContent(include: [productionPeriod, season]) {
      items {
        item {
          ... on Episode {
            videoSvtId
          }
        }
      }
      id
      name
    }
    id
    longDescription
    name
    shortDescription
  }
})r   r   listablesBySlugr   associatedContentrA   namerk   r   
videoSvtIdzsvt:z - )longDescriptionshortDescription)r   groupsr   rU   rR   rK   rV   r   rQ   
url_resultrw   ie_keyplaylist_resultr   )rY   r   series_slug	season_idrF   season_nameentriesr8   rk   r   r   
content_idr6   s                r*   r   SVTSeriesIE._real_extract6  s   !%!6!6s!;!B!B!D$$1;% $ %. % , -, )-*, +,--0 01Ffd++::d#y0$jj0JJw'EeT**(.B"YY|4
!J)D)DtZ')9)9);Z I J  2$ 

6"!.Y[gS.EE##2&**T"2EVDEG 	Gr-   r(   rp   rq   rr   rs   r   r   r   classmethodr   r   ru   __classcell__r   s   @r*   r   r     so    GhJ0A

 ! F$+A

  F$ K K:G :Gr-   r   c                      ^  \ rS 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0S.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&.S*S+SS,S-SS..S%S/.S0SS1.S2SS1./r\U 4S3 j5       rS4 r	S5r
U =r$ )6	SVTPageIEis  zsvt:pagez8https?://(?:www\.)?svt\.se/(?:[^/?#]+/)*(?P<id>[^/?&#]+)zzhttps://www.svt.se/nyheter/lokalt/skane/viktor-18-forlorade-armar-och-ben-i-sepsis-vill-ateruppta-karaten-och-bli-svetsareuZ   Viktor, 18, förlorade armar och ben i sepsis – vill återuppta karaten och bli svetsarezRviktor-18-forlorade-armar-och-ben-i-sepsis-vill-ateruppta-karaten-och-bli-svetsare)r6   rA   r   )r   r   playlist_countzkhttps://www.svt.se/nyheter/lokalt/skane/forsvarsmakten-om-trafikkaoset-pa-e22-kunde-inte-varit-dar-snabbarejXvk42EuG   Försvarsmakten om trafikkaoset på E22: Kunde inte varit där snabbarer   P   r   iYeu   Lokala Nyheter Skåne20240104)	rA   r6   r   rC   rE   rD   rH   rF   r}   r   Tr   zBhttps://www.svt.se/nyheter/svtforum/2023-tungt-ar-for-svensk-mediau    2023 tungt år för svensk mediaewqAZv4i  r   ike20231219Mediestudier)	r6   rA   r   rC   rE   rF   rD   r}   rH   zMhttps://www.svt.se/sport/ishockey/bakom-masken-lehners-kamp-mot-mental-ohalsa25298267u0   Bakom masken – Lehners kamp mot mental ohälsa)rA   r6      zVideo is gone)r   r   r   r   zXhttps://www.svt.se/nyheter/utrikes/svenska-andrea-ar-en-mil-fran-branderna-i-kalifornien24243746z2Svenska Andrea redo att fly sitt hem i KalifornienzDhttp://www.svt.se/sport/ishockey/jagr-tacklar-giroux-under-intervjun8439V2Ku1   Stjärnorna skojar till det - under SVT-intervjun   )rA   r   r6   rC   rE   )r   r   r   zIhttps://www.svt.se/nyheter/lokalt/vast/svt-testar-tar-nagon-upp-skrapet-1r   z/https://www.svt.se/vader/manadskronikor/maj2018c                 Z   > [         R                  U5      (       a  S$ [        TU ]  U5      $ r   r   r   s     r*   r   SVTPageIE.suitable  r   r-   c                 .  ^ ^^ T R                  U5      nT R                  X5      nT R                  U5      mT R                  SUSU5      n[	        USS[
        1[        R                  14SS9=(       d    0 mUU U4S jnT R                  U" 5       UT5      $ )NzurqlState\s*[=:]z	json data.r   F)get_allc               3      >#    [        [        TSS[        145      5       H1  n TR                  TR	                  SU  3U 5      U 5      nTUS'   Uv   M3     g 7f)Npage))topMediar   )body.r   r   zhttps://api.svt.se/video/r6   )setr   r   rh   r   )r[   infor   rY   r6   s     r*   r   (SVTPageIE._real_extract.<locals>.entries  sl     TPSVRW4 !  **''*CH:(NPXY[ce %W
s   AA)		_match_idr   r   _search_jsonr   r   r   r   r   )rY   r   
display_idr   
urql_stater   r   r6   s   `     @@r*   r   SVTPageIE._real_extract  s    ^^C(
((9%%g.&&':G[R\]
Jfsedjj\(JTYZ`^`	 ##GIz5AAr-   r(   r   r   s   @r*   r   r   s  s>   GLJ Lqf
  }^#`-%

 T
" T7#%%

 T
" _G
  jI
  VH
   [ AKHFT K KB Br-   r   )r   r   commonr   utilsr   r   r   r	   r
   utils.traversalr   r   r   rw   r   r   r(   r-   r*   <module>r     s\     	 ! \ \~i	 iXSG) SGldB	 dBr-   