o
    i'*                     @   sh   d dl Z 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mZmZmZmZmZ G dd deZdS )    N   )InfoExtractor   )
ExtractorErrordetermine_extfind_xpath_attrint_or_nonetraverse_objtry_callunified_strdateurl_or_none
xpath_attr
xpath_textc                   @   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	dddddg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d0d1d"d#d2d"d#d3d4dd5d6d	d7d8d9d:d;d<g d=d>d?d"id@dAd"d#g	ZdBdCddDdEdFgZdGZedHdI Z	dJdK Z
dLS )MRuutuIEFaB  (?x)
                    https?://
                        (?:
                            (?:www\.)?(?:ruutu|supla)\.fi/(?:video|supla|audio)/|
                            static\.nelonenmedia\.fi/player/misc/embed_player\.html\?.*?\bnid=
                        )
                        (?P<id>\d+)
                    z!http://www.ruutu.fi/video/2058907 ab2093f39be1ca8581963451b3c0234f2058907mp4u\   Oletko aina halunnut tietää mitä tapahtuu vain hetki ennen lähetystä? - Nyt se selvisi!z$md5:cfc6ccf0e57a814360df464a91ff67d6zre:^https?://.*\.jpg$r   r   20150508)idexttitledescription	thumbnailduration	age_limitupload_date)urlmd5	info_dictz!http://www.ruutu.fi/video/2057306 065a10ae4d5b8cfd9d0c3d332465e3d92057306z%Superpesis: katso koko kausi Ruudussaz$md5:bfb7336df2a12dc21d18fa696c9f8f23(   20150507
SuperpesisUrheilu)
r   r   r   r   r   r   r   r   series
categoriesz!http://www.supla.fi/supla/2231370 df14e782d49a2c0df03d3be2a54ef9492231370zOsa 1: Mikael Jungnerz$md5:7d90f358c47542e3072ff65d7b1bcffe20151012u   Läpivalaisu)r   r   r   r   r   r   r   r&   z!http://www.ruutu.fi/video/3193728T)r   only_matchingz"https://www.supla.fi/supla/3382410 b9d7155fed37b2ebf6021d74c4b8e9083382410mp3u   Mikä ihmeen poltergeist?z$md5:bbb6963df17dfd0ecd9eb9a61bf14b5220190320Mysteeritarinati,  )	r   r   r   r   r   r   r   r&   r   zHTTP Error 502: Bad Gatewayz#Failed to download m3u8 information)r   r   r   expected_warningsz!http://www.supla.fi/audio/2231370zHhttps://static.nelonenmedia.fi/player/misc/embed_player.html?nid=3618790z"https://www.ruutu.fi/video/34019643401964z,Temptation Island Suomi - Kausi 5 - Jakso 17z$md5:87cf01d5e1e88adf0c8a2937d2bd42bai
     20190508zTemptation Island Suomi      )zReality ja tositapahtumatzKotimaiset suosikitzRomantiikka ja parisuhde)r   r   r   r   r   r   r   r   r&   season_numberepisode_numberr'   skip_download)r   r   paramsz"https://www.ruutu.fi/video/3618715z0https://www.hs.fi/maailma/art-2000011353059.html4746675zAYhdysvaltojen Texasin osavaltiota ovat koetelleet tuhoisat tulvat)r   r   r   )r   r   zhttps://gatling.nelonenmedia.fic                    s   t  fdd}|rt|d}|rd| gS t  fdd}|r@tt|dp(g }|r3dd |D S t|d	}|rBd| gS d S d S )
Nc                         t jtd dddS )Nz,jQuery\.extend\(Drupal\.settings, ({.+?})\);r   Fstrictjsonloadsresearchgroup webpagerE   J/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/ruutu.py<lambda>   s
    z-RuutuIE._extract_embed_urls.<locals>.<lambda>)mediaCrossbowSettingsfilefield_crossbow_video_idundr   valuehttp://www.ruutu.fi/video/c                      r<   )Nz>(?s)<script[^>]+id=['"]__NEXT_DATA__['"][^>]*>([^<]+)</script>r   Fr=   r?   rE   rF   rE   rH   rI      s    )props	pagePropspage	assetData	splitBody.videosourceIdc                 S   s   g | ]}d | qS )rO   rE   ).0vrE   rE   rH   
<listcomp>   s    z/RuutuIE._extract_embed_urls.<locals>.<listcomp>)rP   rQ   rR   rS   	mainVideorV   )r
   r	   set)clsr   rG   settingsvideo_id	video_idsrE   rF   rH   _extract_embed_urls   s*   



zRuutuIE._extract_embed_urlsc                    sB   |jj ddidg g  fdd  d fdd}sSd	sAtd
d drA |d}|dkrStd| ddd|d}tdddddtdddtdddt	tddpyt	|dt	tddt
|d |d!t	|d"t	|d#|r|d$d%S d d%S )&Nz/media-xml-cacher   )queryc                    s  | D ]}|j dr| q|j dr|j  r) v s)t fdddD r*q  t }tjj dd| dd	d
 id}|rR| | |dkre	j
 dddd	d q|dkrv	j dd	d q|dkr{q|dks|j dkrd dd qtj j}|j ds|dkrq|dkrdnd}|d }t|d!}|s|r| d"|r|n| n|} |sqd#d |d$d%d%d d& D \}	}
| |	|
||d' qd S )(NFilesFilec                 3   s    | ]}| v V  qd S NrE   )rW   p	video_urlrE   rH   	<genexpr>       zARuutuIE._real_extract.<locals>.extract_formats.<locals>.<genexpr>)NOT_USEDzNOT-USEDz/auth/access/v2zDownloading authenticated z stream URLFstream)notefatalra   m3u8r   m3u8_nativehls)entry_protocolm3u8_idrm   f4mhds)f4m_idrm   mpddash)mpd_idrm   r.   AudioMediaFileaudionone)	format_idr   vcodecHTTPrtmpr   labelbitrate-c                 s   s    | ]}t |V  qd S rd   )r   )rW   xrE   rE   rH   rh      ri   
resolutionr   r   )r|   r   widthheighttbr
preference)tagendswithtextanyappendr   r   _download_webpage	_API_BASEextend_extract_m3u8_formats_extract_f4m_formats_extract_mpd_formatsurllibparseurlparsescheme
startswithgetr   _is_valid_urlsplit)nodechildr   auth_video_urlprotor   r   r   r|   r   r   )extract_formatsformatsprocessed_urlsselfr^   rf   rH   r      sr   







"(z.RuutuIE._real_extract.<locals>.extract_formatsz./Clipc                    s&   t  fdd}|dkr|pd S d S )Nc                      s   t dd dS )Nz$./Clip/PassthroughVariables/variablenamerN   )r   r   rE   )r   	video_xmlrE   rH   rI      s    z3RuutuIE._real_extract.<locals>.pv.<locals>.<lambda>NA)r
   )r   rN   )r   )r   rH   pv   s   z!RuutuIE._real_extract.<locals>.pvallow_unplayable_formatsz
./Clip/DRM)default	ns_st_cdsfreezThis video is .T)expectedthemesz.//Behavior/Programprogram_namer   )rm   r   z.//Behavior/Startpicturehrefr   z
.//Runtimer   runtimez.//AgeLimitz	age limit
date_startseries_namer7   r8   ,)r   r   r   r   r   r   r   r&   r7   r8   r'   r   )	_match_id_download_xmlr   find	get_paramr   
report_drmr   r   r   r   r   )r   r   r   r   r   rE   )r   r   r   r   r^   r   rH   _real_extract   sF   
:




zRuutuIE._real_extractN)__name__
__module____qualname___WORKING
_VALID_URL_TESTS_WEBPAGE_TESTSr   classmethodr`   r   rE   rE   rE   rH   r      s    	b	
r   )r@   rB   urllib.parser   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   rE   rE   rE   rH   <module>   s    0