
    VGh?                         d dl Z d dlZddlmZ ddlmZmZmZmZm	Z	 ddl
mZmZ  G d de      Z G d	 d
e      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )determine_extdict_getint_or_nonetry_getunified_timestamp)requiretraverse_objc                       e Zd ZdgZd Zy)	SVTBaseIESEc                 F   t        |dd      }|rdnd}g }i }|d   D ]  }|j                  d      xs |j                  d      }|d	   }	t        |	      }
|
dk(  r?| j                  |	|d
||d      \  }}|j	                  |       | j                  ||       {|
dk(  r(|j	                  | j                  |	dz   ||d             |
dk(  r=| j                  |	||d      \  }}|j	                  |       | j                  ||       |j                  ||	d        t        |d t              xs i }|s/|j                  d      r| j                  d| j                  d       t        |d      }t        |t              re|D ]`  }|j                  d	      }|j                  dd      }|s)d	|i}t        |      dk(  rd|d<   |j                  |g       j                  |       b |j                  d      }|j                  d      }t!        |j                  d            }|j                  d       }t!        |j                  d!            }t#        |j                  d"            }t!        t        |d#            }d }t        |d$d%      }||rd&nd'}||||||||||||d(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                     | d   S )Nrights )xs    ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/svt.py<lambda>z*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_values   r   )idr4   formatsr/   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
   )self
video_infovideo_idrI   m3u8_protocolrA   r/   vrplayer_typevurlr   fmtssubsr&   subtitle_referencessrsubtitle_urlsubtitle_langsubr4   rE   rF   rG   rH   rC   rB   rD   adults                               r)   _extract_videozSVTBaseIE._extract_video   s   :'<eL")}	./ 	B&&.B"&&2BKe9D%Cf}!EE(m'u F 6
d t$%%d9%=t88?*H&e  9  5 6 !DD(;e E E
dt$%%d9%=!,  +	2 %:DAGR6::&89%%8--$ & H 'z3VW)40) 
H!vve} "z4 8|C %\2f<%*E
((;BB3G
H w'/#JNN8$<=..0$Z^^O%DE%fjj&=>	x
4YZ[	J#% #I " ""*,
 	
r+   N)__name__
__module____qualname__rS   rf   r'   r+   r)   r   r      s    VNO
r+   r   c                       e Zd ZdZdZdZdddddd	d
ddddddigid	ddidddddddddddddddddidddid gd!d"d#dd$d%d&d'd(ddd$d)d*dd+id,d-d.d/d0d.d/d1d.d/d2d.d/d3d.d/d4d.d/d5d.d/d6d.d/d7d.d/gZd8 Zd9 Zy:);	SVTPlayIEz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-]+))?
                    )
                    z%https://www.svtplay.se/video/30479064 2382036fd6f8c994856c323fe51c426e8zVbDPAr   u   Designdrömmar i StenungsundiN`20210315i  z6re:^https?://(?:.*[\.-]jpg|www.svtstatic.se/image/.*)$r   r2   r   r3   )	r@   r   r4   rC   upload_daterB   	thumbnailrD   r/   skip_downloadr   zEpisode is no longer available)r   md5	info_dictparamsskipz$https://www.svtplay.se/video/emBxBQjeyBd9ajz1. Farlig kryssningi%Xz$md5:8f350bc605677a5ead36a19a62fd9a3420170401i
  Rederietzcount:3)r@   r   r4   rC   descriptionro   rB   rp   rD   rG   rE   r/   zFailed to download (?:MPD|m3u8))r   rr   rs   rt   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)r@   r   r4   ry   rC   ro   rB   rp   rD   rG   rE   dashr   rs   rt   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                     | j                  d| || j                               }| j                  ||      }|j                  d      st	        |dd      |d<   |S )Nz)https://api.svt.se/videoplayer-api/video/)headersr4   rG   rE   )_download_jsongeo_verification_headersrf   rJ   r   )rW   rY   datars   s       r)   _extract_by_video_idzSVTPlayIE._extract_by_video_id   sh    ""7zBd;;= # ? ''h7	}}W%!-iH!MIgr+   c                 B   | j                  |      }|j                  d      }|j                  d      xs |j                  d      }|r| j                  |      S | j                  ||      }t	        | j                  ||      ddddt        j                  hdt        ht        t        d	      hf	      }t	        |d
d dt        f      }t	        |dddd dfdt        ht        f      }|st	        |ddt        ht        d      hf      }| j                  |      }|j                  d      s)t        j                  dd| j                  |            |d<   |j                  d      s| j!                  |      |d<   |j                  d      st	        |dt        hf      |d<   |S )Nr@   svt_idmodal_idprops	urqlState.r   detailsPageByPathz
video datamodulesc                     |d   d   d   d   S )Ndetails
smartStartitemvideosr'   _vs     r)   r*   z)SVTPlayIE._real_extract.<locals>.<lambda>   s    AiL$>v$Fx$P r+   r   r   r   r   c                     |d   dk(  S )NaccessibilityDefaultr'   r   s     r)   r*   z)SVTPlayIE._real_extract.<locals>.<lambda>   s    !O,	9 r+   r   svtIdvideozSVT IDr4   z\s*\|\s*.+?$ rp   ry   )_match_valid_urlgroupr   _download_webpager   _search_nextjs_datajsonloadsrQ   anyr   strrJ   rerd   _og_search_title_og_search_thumbnail)	rW   r   mobjrY   r   webpager   r   rs   s	            r)   _real_extractzSVTPlayIE._real_extract   s   $$S)::d#H%?J)?,,V44((h7D44Wh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+   N)	rg   rh   ri   IE_NAMEIE_DESC
_VALID_URL_TESTSr   r   r'   r+   r)   rk   rk   g   s   G)G
J 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 q[Fz	r+   rk   c                   ^     e Zd ZdZdZ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 )SVTSeriesIEzsvt:play:serieszThttps?://(?:www\.)?svtplay\.se/(?P<id>[^/?&#]+)(?:.+?\btab=(?P<season_slug>[^&#]+))?zhttps://www.svtplay.se/rederietjpmQYgnrx   z$md5:f71122f7cf2e52b643e75915e04cb83d)r@   r4   ry   i>  )r   rs   playlist_mincountz4https://www.svtplay.se/rederiet?tab=season-2-jpmQYgnzseason-2-jpmQYgnu   Rederiet - Säsong 2   c                 P    t         j                  |      rdS t        |   |      S NFrk   suitablesuperclsr   	__class__s     r)   r   zSVTSeriesIE.suitable  %    !**3/uJUW5Ec5JJr+   c           	         | j                  |      j                         \  }}| j                  d|ddd|z  i      d   d   d   }d }g }|d	   D ]  }t        |t              s|r&|j                  d
      |k7  r+|j                  d      }|j                  d      }t        |t              s^|D ]r  }	|	j                  d      xs i }
|
j                  d      }|rt        |t              s<|j                  | j                  d|z   t        j                         |             t  |j                  d      }|xs |}|r
|r| d| }n|r|}| j                  ||xs |j                  d
      |t        |d            S )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   associatedContentr@   nameitemsr   
videoSvtIdzsvt:z - )longDescriptionshortDescription)r   groupsr   rT   rQ   rJ   rU   r   rP   
url_resultrk   ie_keyplaylist_resultr   )rW   r   series_slug	season_idrE   season_nameentriesr6   r   r   r   
content_idr4   s                r)   r   zSVTSeriesIE._real_extract  s   !%!6!6s!;!B!B!DY$$1;% $ %. % , -, )-*, +,--0 01 	JFfd+::d#y0$jj0JJw'EeT* J(.B"YY|4
!J)DtZ')9)9);Z I JJ	J$ 

6"!.Y[gS.EE##Y2&**T"2EVDEG 	Gr+   
rg   rh   ri   r   r   r   classmethodr   r   __classcell__r   s   @r)   r   r      si    GhJ0A

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

  F$ K K:Gr+   r   c                        e Zd ZdZdZ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d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d0d1dd0gZe fd2       Zd3 Z xZ	S )4	SVTPageIEz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)r4   r@   r   )r   rs   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)	r@   r4   r   rB   rD   rC   rG   rE   ro   rq   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)	r4   r@   r   rB   rD   rE   rC   ro   rG   zMhttps://www.svt.se/sport/ishockey/bakom-masken-lehners-kamp-mot-mental-ohalsa25298267u0   Bakom masken – Lehners kamp mot mental ohälsa)r@   r4      zVideo is gone)r   rs   r   ru   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   )r@   r   r4   rB   rD   )r   rs   ru   zIhttps://www.svt.se/nyheter/lokalt/vast/svt-testar-tar-nagon-upp-skrapet-1r   z/https://www.svt.se/vader/manadskronikor/maj2018c                 P    t         j                  |      rdS t        |   |      S r   r   r   s     r)   r   zSVTPageIE.suitable  r   r+   c                 *     j                  |      } j                  ||      } j                  |       j                  d|d|      }t	        |ddt
        ht        j                  hfd      xs i  fd} j                   |       |      S )NzurqlState\s*[=:]z	json data.r   F)get_allc               3      K   t        t        ddt        hf            D ]0  } j                  j	                  d|  |       |       }|d<   | 2 y w)Npage))topMediar   )body.r   r   zhttps://api.svt.se/video/r4   )setr   r   rf   r   )rY   infor   rW   r4   s     r)   r   z(SVTPageIE._real_extract.<locals>.entries  sr     TPSVRW4 !   **''*CH:(NPXY[ce %W
s   AA)		_match_idr   r   _search_jsonr   r   r   r   r   )rW   r   
display_idr   
urql_stater   r   r4   s   `     @@r)   r   zSVTPageIE._real_extract  s    ^^C(
((j9%%g.&&':G[R\]
Jfsedjj\(JTYZ`^`	 ##GIz5AAr+   r   r   s   @r)   r   r   U  s8   GLJ Lqf
  }^#`-%

 T
" T7#%%

 T
" _G
  jI
  VH
   [ AKHFT K KBr+   r   )r   r   commonr   utilsr   r   r   r	   r
   utils.traversalr   r   r   rk   r   r   r'   r+   r)   <module>r      s\     	 ! R
 R
jU	 UpSG) SGldB	 dBr+   