3
b`"n                 @   s4  d dl mZ d dlZddlmZ ddlmZ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mZmZ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G dd de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G dd deZ G dd deZ!G dd deZ"dS )     )unicode_literalsN   )InfoExtractor   )compat_HTTPError
compat_str)determine_extExtractorErrorfix_xml_ampersandsint_or_nonemerge_dicts
orderedSetparse_duration	qualitiesstr_or_nonestrip_jsonpunified_strdateunified_timestampurl_or_noneurlencode_postdatac               @   s   e Zd Zdd ZdS )	NPOBaseIEc             C   s   | j d|ddd S )Nz!http://ida.omroep.nl/app.php/authzDownloading token)notetoken)_download_json)selfvideo_id r   DC:\Users\Broad\Desktop\All-Down\binaries\youtube_dl\extractor\npo.py
_get_token   s    zNPOBaseIE._get_tokenN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                   sV  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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#id$d*d+dd,d-d.d/dd"d#id$d0d1dd2d3d.d4dd"d#id$d5d6d7d8d9d:d"d#id$d;d#d<d=d#d<d>d#d<d?d#d<d@d#d<dAd#d<dBd#d<dCd#d<dDd#d<gZe fdEdFZdGdH Z	dIdJ Z
dKdL Z  ZS )MNPOIEnpoz1npo.nl, ntr.nl, omroepwnl.nl, zapp.nl and npo3.nla  (?x)
                    (?:
                        npo:|
                        https?://
                            (?:www\.)?
                            (?:
                                npo\.nl/(?:[^/]+/)*|
                                (?:ntr|npostart)\.nl/(?:[^/]+/){2,}|
                                omroepwnl\.nl/video/fragment/[^/]+__|
                                (?:zapp|npo3)\.nl/(?:[^/]+/){2,}
                            )
                        )
                        (?P<id>[^/?#]+)
                z4http://www.npo.nl/nieuwsuur/22-06-2014/VPWON_1220719Z 4b3f9c429157ec4775f2c9cb7b911016ZVPWON_1220719m4vZ	Nieuwsuurz=Dagelijks tussen tien en elf: nieuws, sport en achtergronden.20140622)idexttitledescriptionupload_date)urlmd5	info_dictzIhttp://www.npo.nl/de-mega-mike-mega-thomas-show/27-02-2009/VARA_101191800Z da50a5787dbfc1603c4ad80f31c5120bZVARA_101191800z-De Mega Mike & Mega Thomas show: The best of.z$md5:3b74c97fc9d6901d5a665aac0e5400f4Z20090227i`	  )r&   r'   r(   r)   r*   durationz5http://www.npo.nl/tegenlicht/25-02-2013/VPWON_1169289 f8065e4e5a7824068ed3c7e783178f2cVPWON_1169289z3Tegenlicht: Zwart geld. De toekomst komt uit Afrikaz$md5:52cf4eefbc96fffcbdc06d024147abea20130225i  zAhttp://www.npo.nl/de-nieuwe-mens-deel-1/21-07-2010/WO_VPRO_043706ZWO_VPRO_043706zDe nieuwe mens - Deel 1z$md5:518ae51ba1293ffb80d8d8ce90b74e4biH  )r&   r'   r(   r)   r.   skip_downloadT)r+   r-   paramszKhttp://www.npo.nl/hoe-gaat-europa-verder-na-parijs/10-01-2015/WO_NOS_762771ZWO_NOS_762771mp4z!Hoe gaat Europa verder na Parijs?)r&   r'   r(   zMhttp://www.ntr.nl/Aap-Poot-Pies/27/detail/Aap-poot-pies/VPWON_1233944#contentZVPWON_1233944zAap, poot, piesz$md5:c9c8005d1869ae65b858e82c01a91fdeZ20150508iW  zShttp://www.omroepwnl.nl/video/fragment/vandaag-de-dag-verkiezingen__POMS_WNL_853698ZPOW_00996502z"Dit is wel een 'landslide'..."z$md5:f8d66d537dfb641380226e31ca57b8e8i  zRhttp://www.npo.nl/jouw-stad-rotterdam/29-01-2017/RBX_FUNX_6683215/RBX_FUNX_7601437ZRBX_FUNX_6683215mp3zJouw Stad Rotterdamz$md5:db251505244f097717ec59fabc372d9f)r&   r'   r(   r)   z0http://www.zapp.nl/de-bzt-show/gemist/KN_1687547)r+   only_matchingz7http://www.zapp.nl/de-bzt-show/filmpjes/POMS_KN_7315118zChttp://www.zapp.nl/beste-vrienden-quiz/extra-video-s/WO_NTR_1067990z8https://www.npo3.nl/3onderzoekt/16-09-2015/VPWON_1239870znpo:LI_NL1_4188102z5http://www.npo.nl/radio-gaga/13-06-2017/BNN_101383373z]https://www.zapp.nl/1803-skelterlab/instructie-video-s/740-instructievideo-s/POMS_AT_11736927z?https://www.npostart.nl/broodje-gezond-ei/28-05-2018/KN_1698996zhttps://npo.nl/KN_1698996c                s0   t  fddtttfD r dS tt| j S )Nc             3   s   | ]}|j  V  qd S )N)suitable).0ie)r+   r   r   	<genexpr>   s   z!NPOIE.suitable.<locals>.<genexpr>F)any	NPOLiveIE
NPORadioIENPORadioFragmentIEsuperr"   r7   )clsr+   )	__class__)r+   r   r7      s    zNPOIE.suitablec             C   s    | j |}| j||p| j|S )N)	_match_id	_get_info_get_old_info)r   r+   r   r   r   r   _real_extract   s    
zNPOIE._real_extractc             C   s  | j d|d|dddd }| j d| |dtd	d
|d	|dd}|d }d}t }g }xBdBD ]8}	| j d| |d|	 d|	d|ddd}
|
sq`|
jd}t|tsq`t|jd}| s`||krq`|j| |jdd k	s|jdd k	rd}q`|jd}t|}|dks|dkr2|j	| j
||d dd! q`|d"ksF|d#krd|j	| j||d$d%ddd& q`tjd'|r|j	| j||d(dd) q`|jd*|i q`W |s|rtd+dd,d S | j| |||d-}t|jd.}|r| j||d/dd0}|r| j| jd1|d2d3d4|}|r|jd5}i }|jd6}t|trxP|D ]H}t|jd}|sbqFt|jd7ptd8}|j|g jd*|i qFW t||jd9t|jd:p|jd;t|jd<t|jd=|jd>|jd?|t|jd@|dA
|S |S )CNz!https://www.npostart.nl/api/tokenzDownloading tokenXMLHttpRequest)RefererzX-Requested-With)headersr   z!https://www.npostart.nl/player/%szDownloading player JSONr   r   )autoplayshareZpageUrlZhasAdConsent_token)dataFhlsdash-widevinedash-playreadysmoothz,https://start-player.npo.nl/video/%s/streamszDownloading %s profile JSONr#   	broadcast)profilequalityZtokenId
streamType)fatalquerystreamsrcZ
protectionZkeySystemOptionsTtypezapplication/dash+xmlmpddash)mpd_idrU   zapplication/vnd.apple.mpegurlm3u8r4   m3u8_native)r'   entry_protocolm3u8_idrU   z\.isml?/Manifestmss)ism_idrU   r+   zThis video is DRM protected.)expected)r&   r(   formatsZembedUrlzDownloading embed page)rU   z\bvideo\s*=\s*({.+?})\s*;videoz{})defaultepisodeTitle	subtitleslanguagenlr)   Zstill_image_urlZorig_image_urlr.   broadcastDatechannelr(   episodeNumber)
r(   r)   	thumbnailr.   	timestampcreatorseriesepisodeepisode_numberrh   )rM   rN   rO   rP   )r   r   setget
isinstancedictr   addr   extend_extract_mpd_formats_extract_m3u8_formatsresearch_extract_ism_formatsappendr	   _sort_formats_download_webpage_parse_json_search_regexlistr   
setdefaultr   r   r   )r   r+   r   r   playerZplayer_tokendrmformat_urlsrd   rR   streamsrW   
stream_urlstream_typeZ
stream_extinfo	embed_urlwebpagere   r(   rh   subtitles_listcccc_urllangr   r   r   rC      s    









zNPOIE._get_infoc                s  j d| |td}|jd}|r.t|dd|jdp:|}|d }|jd}|rf||krf|d	| 7 }j|}g t fd
d}dUdV tt j d| |dd|ddd d }xt|D ]\}	}
|
jd}|| sqΈj| j	d|dd d |
jd! fd"d#}|
jd$dWkrH|| qy2j |d& |d' pt|
jd(ptpt|	}W nz tk
r } z\t
|jtr|jjd)krj|jj j |d*d+pi jd,}|rt|dd W Y d d }~X nX t
|tr|jd-sq|}n
|jd}| sd.|ks|kr:qΈj| t|d/krpjj||d0d1d2d*d3 q|| qW |jd4d5k}|sxjt|jd6g D ]T\}	}|jd}||sƐqj| |jd7d8j }|dXkrq|d;kr,j||d*d+}x|D ]}dY|d=< qW j| n|d2krPjj||d0d*d> nd?|krj||d@|	 td*dA}|s|q|jdB}|d krq|jdC}| s|krqj| j||jdDdE|jdFdZdH nj||jdFdI qW j i }|jdJdKkr0dLdM| dNg|dO< ||rBj|n||jdP|jdQdd igd[ d t|jdRt|jdS||dT	S )\Nzhttp://e.omroep.nl/metadata/%s)transform_sourceerrorT)rc   ZpridZtitelZaflevering_titelz: %sc                s   | o|  kot jd| S )Nz^(?:https?:)?//)r|   match)
format_url)urlsr   r   is_legal_urlH  s    z)NPOIE._get_old_info.<locals>.is_legal_urlLaagNormaalHoogadaptivewmv_sbh264_sbwmv_bbh264_bbwvc1_stdh264_stdzhttp://ida.omroep.nl/app.php/%szDownloading formats JSONyes)r   r   )rV   itemsr   r+   zvideo/ida/([^/]+)z	format id)rf   labelc                s   t jd| dd d}t jd| dd d}krB}}n$ krX}}nd gd \}}j| ||||d d S )Nz(\d+)[xX]\d+width)rf   z\d+[xX](\d+)heightr   )r+   	format_idr   r   rS   )r   r   r   )r   r   r   rS   f_id)QUALITY_FORMATSQUALITY_LABELSr   rd   
item_labelquality_from_format_idquality_from_labelr   r   r   add_format_urlb  s"    z+NPOIE._get_old_info.<locals>.add_format_urlcontentTypeaudioz
&type=jsonzDownloading %s stream JSONformati  F)rU   Zerrorstringhttpzvodnotavailable.r]   r4   r^   rM   )r'   r_   r`   rU   mediumliver   rY    ssmshdsr   
preference)r'   rU   z.asfz"Downloading stream %d ASX playlist)r   rU   z./ENTRY/RefhrefZformaatasfZ	kwaliteit
   )r+   r'   rS   r   )r+   rS   Ztt888javttzhttp://tt888.omroep.nl/tt888/%s)r'   r+   rj   r   imagesZ	gidsdatumZ	tijdsduur)	r&   r(   r)   rn   r*   r.   rd   rh   is_live)r   r   r   )r   r   r   r   r   r   r   )r+   r   )r   r   ir   ) r   r   ru   r	   r   rt   r   	enumeraterx   r   rv   causer   coder   readdecoder   
startswithr   ry   r{   lower_extract_f4m_formats_download_xmlr
   findr   r   _live_titler   r   )r   r   metadatar   r(   	sub_titler   r   r   numitemitem_urlr   stream_infoee	video_urlr   rW   r   r   f4m_formatsZ
f4m_formatasxrefrh   r   )	r   r   r   rd   r   r   r   r   r   r   rD   +  s    








$
















zNPOIE._get_old_info)r   r    r!   IE_NAMEIE_DESC
_VALID_URL_TESTSclassmethodr7   rE   rC   rD   __classcell__r   r   )rA   r   r"   #   s   








qr"   c               @   sJ   e Zd ZdZdZddddddd	d
didddddddgZdd ZdS )r<   znpo.nl:livez?https?://(?:www\.)?npo(?:start)?\.nl/live(?:/(?P<id>[^/?#&]+))?zhttp://www.npo.nl/live/npo-1ZLI_NL1_4188102znpo-1r4   z7re:^NPO 1 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$T)r&   
display_idr'   r(   r   r2   )r+   r-   r3   zhttp://www.npo.nl/live)r+   r6   z"https://www.npostart.nl/live/npo-1c             C   sD   | j |pd}| j||}| jddg|d}dd| tj ||dS )Nznpo-1zmedia-id="([^"]+)"zdata-prid="([^"]+)"zlive idurl_transparentznpo:%s)_typer+   ie_keyr&   r   )rB   r   r   r"   r   )r   r+   r   r   Zlive_idr   r   r   rE     s    zNPOLiveIE._real_extractN)r   r    r!   r   r   r   rE   r   r   r   r   r<     s   

r<   c                   sV   e Zd ZdZdZddddddd	did
Ze fddZedd Z	dd Z
  ZS )r=   znpo.nl:radioz.https?://(?:www\.)?npo\.nl/radio/(?P<id>[^/]+)zhttp://www.npo.nl/radio/radio-1zradio-1r5   z=re:^NPO Radio 1 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$T)r&   r'   r(   r   r2   )r+   r-   r3   c                s   t j|rdS tt| j|S )NF)r>   r7   r?   r=   )r@   r+   )rA   r   r   r7     s    zNPORadioIE.suitablec             C   s
   dj | S )Nz{0}\s*=\s*\'([^\']+)\')r   )	attributer   r   r   _html_get_attribute_regex   s    z$NPORadioIE._html_get_attribute_regexc             C   sl   | j |}| j||}| j| jd|d}| j| j| jd|d|}|jd}||d | j|||ddS )Nzdata-channelr(   zdata-streamscodecr+   T)r&   r+   r(   acodecr'   r   )rB   r   _html_search_regexr   r   ru   r   )r   r+   r   r   r(   rW   r   r   r   r   rE   $  s    

zNPORadioIE._real_extract)r   r    r!   r   r   _TESTr   r7   staticmethodr   rE   r   r   r   )rA   r   r=     s   r=   c               @   s0   e Zd ZdZdZddddddd	Zd
d ZdS )r>   znpo.nl:radio:fragmentz;https?://(?:www\.)?npo\.nl/radio/[^/]+/fragment/(?P<id>\d+)z/http://www.npo.nl/radio/radio-5/fragment/174356Z dd8cc470dad764d0fdc70a9a1e2d18c2Z174356r5   zJubileumconcert Willeke Alberti)r&   r'   r(   )r+   r,   r-   c             C   sB   | j |}| j||}| jd| |d}| jd|d}|||dS )Nz/href="/radio/[^/]+/fragment/%s" title="([^"]+)"r(   zdata-streams='([^']+)'z	audio url)r&   r+   r(   )rB   r   r   r   )r   r+   audio_idr   r(   	audio_urlr   r   r   rE   J  s    

z NPORadioFragmentIE._real_extractN)r   r    r!   r   r   r   rE   r   r   r   r   r>   <  s   r>   c               @   s   e Zd Zdd ZdS )NPODataMidEmbedIEc             C   s:   | j |}| j||}| jd|ddd}ddd| |dS )	Nz&data-mid=(["\'])(?P<id>(?:(?!\1).)+)\1r   r&   )groupr   ZNPOznpo:%s)r   r   r+   r   )rB   r   r   )r   r+   r   r   r   r   r   r   rE   ^  s    
zNPODataMidEmbedIE._real_extractN)r   r    r!   rE   r   r   r   r   r   ]  s   r   c               @   s0   e Zd ZdZdZddddddd	d
didZdS )
SchoolTVIEZschooltvz6https?://(?:www\.)?schooltv\.nl/video/(?P<id>[^/?#&]+)zqhttp://www.schooltv.nl/video/ademhaling-de-hele-dag-haal-je-adem-maar-wat-gebeurt-er-dan-eigenlijk-in-je-lichaam/ZWO_NTR_429477zSademhaling-de-hele-dag-haal-je-adem-maar-wat-gebeurt-er-dan-eigenlijk-in-je-lichaamzVAdemhaling: De hele dag haal je adem. Maar wat gebeurt er dan eigenlijk in je lichaam?r4   z$md5:abfa0ff690adb73fd0297fd033aaa631)r&   r   r(   r'   r)   r2   T)r+   r-   r3   N)r   r    r!   r   r   r   r   r   r   r   r   k  s   r   c               @   s2   e Zd ZdZdZddddddd	d
ddidZdS )HetKlokhuisIEZhetklokhuisz=https?://(?:www\.)?hetklokhuis\.nl/[^/]+/\d+/(?P<id>[^/?#&]+)z=http://hetklokhuis.nl/tv-uitzending/3471/ZwaartekrachtsgolvenZVPWON_1260528ZZwaartekrachtsgolvenr$   z"Het Klokhuis: Zwaartekrachtsgolvenz$md5:c94f31fb930d76c2efa4a4a71651dd48Z20170223)r&   r   r'   r(   r)   r*   r2   T)r+   r-   r3   N)r   r    r!   r   r   r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd ZdS )NPOPlaylistBaseIEc                sb    j |} j||} fddttj j|D } j j|dd dpR j|} j	|||S )Nc                s(   g | ] } j |jd sd| n|qS )r   znpo:%s)
url_resultr   )r8   r   )r   r   r   
<listcomp>  s   z3NPOPlaylistBaseIE._real_extract.<locals>.<listcomp>zplaylist title)rf   )
rB   r   r   r|   findall_PLAYLIST_ENTRY_REr   _PLAYLIST_TITLE_RE_og_search_titleplaylist_result)r   r+   playlist_idr   entriesplaylist_titler   )r   r   rE     s    

zNPOPlaylistBaseIE._real_extractN)r   r    r!   rE   r   r   r   r   r     s   r   c               @   s   e Zd 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dddddddddddd	ddd dd!d"id#gZd$S )&VPROIEZvprozThttps?://(?:www\.)?(?:(?:tegenlicht\.)?vpro|2doc)\.nl/(?:[^/]+/)*(?P<id>[^/]+)\.htmlC<h1[^>]+class=["\'].*?\bmedia-platform-title\b.*?["\'][^>]*>([^<]+)F<h5[^>]+class=["\'].*?\bmedia-platform-subtitle\b.*?["\'][^>]*>([^<]+)zdata-media-id="([^"]+)"zQhttp://tegenlicht.vpro.nl/afleveringen/2012-2013/de-toekomst-komt-uit-afrika.htmlr/   r0   r$   zDe toekomst komt uit Afrikaz$md5:52cf4eefbc96fffcbdc06d024147abear1   )r&   r'   r(   r)   r*   z
Video gone)r+   r,   r-   skipz:http://www.vpro.nl/programmas/2doc/2015/sergio-herman.htmlzsergio-hermanzsergio herman: fucking perfect)r&   r(   r   )r+   r-   playlist_countz@http://www.vpro.nl/programmas/2doc/2015/education-education.htmlzeducation-educationzeducation educationzPhttp://www.2doc.nl/documentaires/series/2doc/2015/oktober/de-tegenprestatie.htmlzde-tegenprestatiezDe TegenprestatiezMhttp://www.2doc.nl/speel~VARA_101375237~mh17-het-verdriet-van-nederland~.htmlZVARA_101375237z MH17: Het verdriet van Nederlandz$md5:09e1a37c1fdb144621e22479691a9f18Z20150716r2   T)r+   r-   r3   N)r   r   )r   r    r!   r   r   r   r   r   r   r   r   r   r     s@    r   c               @   s0   e Zd ZdZdZdZdZddddd	d
gZdS )WNLIEZwnlz@https?://(?:www\.)?omroepwnl\.nl/video/detail/(?P<id>[^/]+)__\d+z+(?s)<h1[^>]+class="subject"[^>]*>(.+?)</h1>z6<a[^>]+href="([^"]+)"[^>]+class="js-mid"[^>]*>Deel \d+zAhttp://www.omroepwnl.nl/video/detail/vandaag-de-dag-6-mei__060515zvandaag-de-dag-6-meizVandaag de Dag 6 mei)r&   r(      )r+   r-   r   N)r   r    r!   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s0   e Zd ZdZdZdZdZddddd	d
gZdS )AndereTijdenIEZanderetijdenzIhttps?://(?:www\.)?anderetijden\.nl/programma/(?:[^/]+/)+(?P<id>[^/?#&]+)z@(?s)<h1[^>]+class=["\'].*?\bpage-title\b.*?["\'][^>]*>(.+?)</h1>zX<figure[^>]+class=["\']episode-container episode-page["\'][^>]+data-prid=["\'](.+?)["\']zghttp://anderetijden.nl/programma/1/Andere-Tijden/aflevering/676/Duitse-soldaten-over-de-Slag-bij-Arnhemz'Duitse-soldaten-over-de-Slag-bij-Arnhemz'Duitse soldaten over de Slag bij Arnhem)r&   r(      )r+   r-   r   N)r   r    r!   r   r   r   r   r   r   r   r   r   r    s   r  )#
__future__r   r|   commonr   compatr   r   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r"   r<   r=   r>   r   r   r   r   r   r   r  r   r   r   r   <module>   s&   @   B)1!=