a
    hC                     @   s   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 deZG d	d
 d
eZG dd deZG dd deZdS )    N   )InfoExtractor   )determine_extdict_getint_or_nonetry_getunified_timestamp)requiretraverse_objc                   @   s&   e Zd ZdgZdd Zedd ZdS )	SVTBaseIEZSEc                 C   sJ  t |ddd}|rdnd}g }i }|d D ]}|dp@|d}|d	 }	t|	}
|
dkr| j|	|d
||dd\}}|| | j||d q*|
dkr|| j|	d ||dd q*|
dkr| j|	||dd\}}|| | j||d q*|||	d q*t	|dd t
pi }|s8|dr8| jd| jdd t |d}t|tr|D ]R}|d	}|dd}|rRd	|i}t|dkrd|d< ||g | qR|d}|d}t|d }|d!}t|d"}t|d#}tt |d$}d }t |d%dd&}|d ur&|r"d'nd(}|||| |||||||||d)S )*N)ZliveZ	simulcastF)defaultm3u8Zm3u8_nativeZvideoReferencesZ
playerTypeformaturlmp4)extZentry_protocolZm3u8_idfatal)targetZf4mz?hdcore=3.3.0)Zf4m_idr   Zmpd)Zmpd_idr   )Z	format_idr   c                 S   s   | d S )Nrights )xr   r   I/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/svt.py<lambda>3       z*SVTBaseIE._extract_video.<locals>.<lambda>ZgeoBlockedSwedenz&This video is only available in SwedenT)Z	countriesZmetadata_available)	subtitlesZsubtitleReferenceslanguagesvvttr   titleZprogramTitleseasonZepisodeTitleZepisodeNumberZ	validFrom)ZmaterialLengthZcontentDuration)ZinappropriateForChildrenZblockedForChildren)Zskip_false_values   r   )idr   formatsr   duration	timestamp	age_limitseriesseason_numberepisodeepisode_numberis_live)r   getr   Z#_extract_m3u8_formats_and_subtitlesextendZ_merge_subtitlesZ_extract_f4m_formatsZ"_extract_mpd_formats_and_subtitlesappendr   dictZraise_geo_restricted_GEO_COUNTRIES
isinstancelist
setdefaultr   r	   _fixup_subtitles)selfZ
video_infovideo_idr+   Zm3u8_protocolr#   r   ZvrZplayer_typeZvurlr   Zfmtssubsr   Zsubtitle_referencessrZsubtitle_urlZsubtitle_langsubr   r'   r(   r)   r*   r%   r$   r&   Zadultr   r   r   _extract_video   s    











zSVTBaseIE._extract_videoc                 C   sP   i }|   D ]>\}}|D ]0}d|d v r2| dn|}||g | qq|S )Nz	text-openr   z-forced)itemsr3   r.   )r   Zfixed_subtitleslangr7   r9   Z
fixed_langr   r   r   r4   f   s    zSVTBaseIE._fixup_subtitlesN)__name__
__module____qualname__r0   r:   staticmethodr4   r   r   r   r   r      s   Qr   c                   @   s,  e Zd 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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/d0d1d2d3ddd/d4d5dd6id7d8d9d:d;d9d:d<d9d:d=d9d:d>d9d:d?d9d:d@d9d:dAd9d:dBd9d:gZdCdD ZdEdF ZdGS )H	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-]+))?
                    )
                    zChttps://www.svtplay.se/video/eXYgwZb/sverige-och-kriget/1-utbrottetZ 2382036fd6f8c994856c323fe51c426eZePBvGRqr   z1. Utbrottetz$md5:02291cc3159dbc9aa95d564e77a8a92bzSverige och krigetihZ20250511i  z6re:^https?://(?:.*[\.-]jpg|www.svtstatic.se/image/.*)$r   zcount:3)r   z	sv-forced)r"   r   r   descriptionr'   r)   r%   upload_dater$   	thumbnailr&   r   skip_downloadr   )r   md5	info_dictparamsz%https://www.svtplay.se/video/30479064Z8zVbDPAu   Designdrömmar i StenungsundiN`Z20210315i  r   r   r   )	r"   r   r   r%   rC   r$   rD   r&   r   zEpisode is no longer available)r   rF   rG   rH   skipz$https://www.svtplay.se/video/emBxBQjZeyBd9ajz1. Farlig kryssningi%Xz$md5:8f350bc605677a5ead36a19a62fd9a34Z20170401i
  Rederiet)r"   r   r   r%   rB   rC   r$   rD   r&   r)   r'   r   zFailed to download (?:MPD|m3u8))r   rF   rG   rH   Zexpected_warningszOhttps://www.svtplay.se/video/jz2rYz7/anders-hansen-moter/james-fallon?info=visaZjvXAGVbzJames FallonuL   re:James Fallon är hjärnforskaren .{532} att upptäcka psykopati tidigt\?$i gZ20250331i9  u   Anders Hansen möter)r"   r   r   rB   r%   rC   r$   rD   r&   r)   r'   Zdashr   rG   rH   zphttps://www.svtplay.se/video/30479064/husdrommar/husdrommar-sasong-8-designdrommar-i-stenungsund?modalId=8zVbDPATr   Z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                 C   sD   | j d| ||  d}| ||}|ds@t|dd|d< |S )Nz)https://api.svt.se/videoplayer-api/video/)headersr   r)   r'   )_download_jsonZgeo_verification_headersr:   r,   r   )r5   r6   datarG   r   r   r   _extract_by_video_id   s    
zSVTPlayIE._extract_by_video_idc           	      C   s2  |  |}|d}|dp&|d}|r6| |S | ||}t| ||ddddtjhdtht	t
d	hf	}t|d
dd dt	f}t|ddddd dfdtht	f}|st|ddtht
dhf}| |}|dstdd| ||d< |ds| ||d< |ds.t|dthf|d< |S )Nr"   svt_idZmodal_idpropsZ	urqlState.rO   ZdetailsPageByPathz
video datamodulesc                 S   s   |d d d d S )Ndetails
smartStartitemvideosr   _vr   r   r   r     r   z)SVTPlayIE._real_extract.<locals>.<lambda>rT   rU   rV   rW   c                 S   s   |d dkS )NZaccessibilityZDefaultr   rX   r   r   r   r     r   r   svtIdvideozSVT IDr   z\s*\|\s*.+?$ rD   rB   )_match_valid_urlgrouprP   _download_webpager   Z_search_nextjs_datajsonloadsr/   anyr
   strr,   rer9   _og_search_titleZ_og_search_thumbnail)	r5   r   Zmobjr6   rQ   webpagerO   rT   rG   r   r   r   _real_extract   s8    





zSVTPlayIE._real_extractN)	r=   r>   r?   IE_NAMEZIE_DESC
_VALID_URL_TESTSrP   rh   r   r   r   r   rA   q   s   qrA   c                       sX   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dZdd Z  Z	S )SVTSeriesIEzsvt:play:serieszThttps?://(?:www\.)?svtplay\.se/(?P<id>[^/?&#]+)(?:.+?\btab=(?P<season_slug>[^&#]+))?zhttps://www.svtplay.se/rederietZjpmQYgnrJ   z$md5:f71122f7cf2e52b643e75915e04cb83d)r"   r   rB   i>  )r   rG   Zplaylist_mincountz4https://www.svtplay.se/rederiet?tab=season-2-jpmQYgnzseason-2-jpmQYgnu   Rederiet - Säsong 2   c                    s   t |rdS t |S NFrA   suitablesuperclsr   	__class__r   r   rp   2  s    zSVTSeriesIE.suitablec              	   C   s6  |  | \}}| jd|ddd| idd d d }d }g }|d	 D ]}t|tsXqH|rv|d
|krlqH|d}|d}t|tsqH|D ]H}	|	dpi }
|
d}|rt|tsq|| 	d| t
 | qqH|d}|p|}|r
|r
| d| }n
|r|}| ||p(|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
  }
})rv   rO   ZlistablesBySlugr   ZassociatedContentr"   namer;   rV   Z
videoSvtIdzsvt:z - )ZlongDescriptionZshortDescription)r^   groupsrN   r1   r/   r,   r2   rd   r.   Z
url_resultrA   Zie_keyplaylist_resultr   )r5   r   Zseries_slugZ	season_idr'   Zseason_nameentriesr    r;   rV   r\   Z
content_idr   r   r   r   rh   6  sZ    






zSVTSeriesIE._real_extract
r=   r>   r?   ri   rj   rk   classmethodrp   rh   __classcell__r   r   rt   r   rl     s(   	rl   c                       s   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d2d3Zd4d5 Z  Z	S )6	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)r   r"   r   )r   rG   playlist_countzkhttps://www.svt.se/nyheter/lokalt/skane/forsvarsmakten-om-trafikkaoset-pa-e22-kunde-inte-varit-dar-snabbareZjXvk42EuG   Försvarsmakten om trafikkaoset på E22: Kunde inte varit där snabbarer   P   r   iYeu   Lokala Nyheter SkåneZ20240104)	r"   r   r   r$   r&   r%   r)   r'   rC   rE   TrK   zBhttps://www.svt.se/nyheter/svtforum/2023-tungt-ar-for-svensk-mediau    2023 tungt år för svensk mediaZewqAZv4i  r]   ikeZ20231219ZMediestudier)	r   r"   r   r$   r&   r'   r%   rC   r)   zMhttps://www.svt.se/sport/ishockey/bakom-masken-lehners-kamp-mot-mental-ohalsaZ25298267u0   Bakom masken – Lehners kamp mot mental ohälsa)r"   r      zVideo is gone)r   rG   r   rI   zXhttps://www.svt.se/nyheter/utrikes/svenska-andrea-ar-en-mil-fran-branderna-i-kalifornienZ24243746z2Svenska Andrea redo att fly sitt hem i KalifornienzDhttp://www.svt.se/sport/ishockey/jagr-tacklar-giroux-under-intervjunZ8439V2Ku1   Stjärnorna skojar till det - under SVT-intervjun   )r"   r   r   r$   r&   )r   rG   rI   zIhttps://www.svt.se/nyheter/lokalt/vast/svt-testar-tar-nagon-upp-skrapet-1rL   z/https://www.svt.se/vader/manadskronikor/maj2018c                    s   t |rdS t |S rn   ro   rr   rt   r   r   rp     s    zSVTPageIE.suitablec                    sp    |}||}|d|d|}t|ddthtjhfddpNi   fdd}| |S )	NzurqlState\s*[=:]z	json data.rO   F)get_allc                  3   sH   t t ddthfD ],} d|  | | }|d< |V  qd S )Npage))ZtopMediar[   )body.r\   r[   zhttps://api.svt.se/video/r   )setr   rd   r:   rN   )r6   inforO   r5   r   r   r   rz     s    z(SVTPageIE._real_extract.<locals>.entries)	Z	_match_idr`   rf   Z_search_jsonr   rd   ra   rb   ry   )r5   r   Z
display_idrg   Z
urql_staterz   r   r   r   rh     s    

 	zSVTPageIE._real_extractr{   r   r   rt   r   r~   s  s   	
Jr~   )ra   re   commonr   utilsr   r   r   r   r	   Zutils.traversalr
   r   r   rA   rl   r~   r   r   r   r   <module>   s   _ -V