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�}
|
s’q`|
jdƒ}t|tƒs¨q`t|jdƒƒ}| s`||krÆq`|j|ƒ |jdƒd k	sì|jdƒd k	ròd}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º|�r¶t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ƒ�r’xP|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 }�x¶t|ƒD �]¨\}	}
|
jdƒ}||ƒ� sîqÎˆj|ƒ ˆj	d|dd d �‰|
jd!ƒ‰‡ ‡‡‡‡‡‡‡fd"d#„}|
jd$ƒdWk�rH||ƒ qÎy2ˆ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+��pÈi jd,ƒ}|�rât|dd�‚‚ W Y d d }~X nX t
|tƒ�r|jd-ƒ�sqÎ|}n
|jdƒ}| sÎd.|ksÎ|ˆk�r:qÎˆj|ƒ t|ƒd/k�rpˆjˆj||d0d1d2d*d3�ƒ qÎ||ƒ qÎW |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>�ƒ n¨d?|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œƒ �q¤W ˆ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¸   éÿÿÿÿiöÿÿÿrÂ   ) 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>[^/]+)\.htmlúC<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!=