U
    ¦y^"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/authúDownloading token)ÚnoteÚtoken)Ú_download_json)ÚselfÚvideo_id© r   úKC:\Users\TaGoRe\Desktop\beinconnect-dl\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 Afrikaú$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+   r1   Úskip_downloadT©r.   r0   Ú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| ƒ ˆ ¡S )Nc                 3   s   | ]}|  ˆ ¡V  qd S ©N)Úsuitable)Ú.0Úie©r.   r   r   Ú	<genexpr>²   s   ÿz!NPOIE.suitable.<locals>.<genexpr>F)ÚanyÚ	NPOLiveIEÚ
NPORadioIEÚNPORadioFragmentIEÚsuperr#   r?   ©Úclsr.   ©Ú	__class__rB   r   r?   °   s
    ÿþzNPOIE.suitablec                 C   s    |   |¡}|  ||¡p|  |¡S r>   )Ú	_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 }dD �]6}	| j d| |d|	 d|	d|ddœd�}
|
sŽq\|
 d¡}t|tƒs¤q\t| d¡ƒ}|r\||krÀq\| |¡ | d¡d k	sæ| d¡d k	rìd}q\| d¡}t|ƒ}|dk�s|dk�r,| 	| j
||ddd�¡ q\|dk�s@|d k�r^| 	| j||d!d"d#dd$�¡ q\t d%|¡�r†| 	| j||d&dd'�¡ q\| d(|i¡ q\|�s²|�r®td)dd*�‚d S |  |¡ |||d+œ}t| d,¡ƒ}|�rì| j||d-dd.�}|�rì|  | jd/|d0d1d2�|¡}|�rì| d3¡}i }| d4¡}t|tƒ�r†|D ]H}t| d¡ƒ}|�sX�q<t| d5¡ƒ�pjd6}| |g ¡ d(|i¡ �q<t|| d7¡t| d8¡�p¨| d9¡ƒt| d:¡ƒt| d;¡ƒ| d<¡| d=¡|t| d>¡ƒ|d?œ
|ƒS |S )@Nz!https://www.npostart.nl/api/tokenr   ÚXMLHttpRequest)ÚRefererzX-Requested-With)Úheadersr   z!https://www.npostart.nl/player/%szDownloading player JSONr   r   )ÚautoplayÚshareZpageUrlZhasAdConsentÚ_token)ÚdataF)Úhlszdash-widevinezdash-playreadyÚsmoothz,https://start-player.npo.nl/video/%s/streamszDownloading %s profile JSONr$   Z	broadcast)ÚprofileÚqualityZtokenIdÚ
streamType)ÚfatalÚqueryÚstreamÚsrcZ
protectionZkeySystemOptionsTÚtypezapplication/dash+xmlÚmpdÚdash)Úmpd_idr]   zapplication/vnd.apple.mpegurlÚm3u8r9   Úm3u8_nativerX   ©r)   Úentry_protocolÚm3u8_idr]   z\.isml?/ManifestÚmss)Úism_idr]   r.   zThis video is DRM protected.©Úexpected)r(   r*   ÚformatsZembedUrlzDownloading embed page©r]   z\bvideo\s*=\s*({.+?})\s*;Úvideoz{}©ÚdefaultÚepisodeTitleÚ	subtitlesÚlanguageÚnlr+   Zstill_image_urlZorig_image_urlr1   ÚbroadcastDateÚchannelr*   ÚepisodeNumber)
r*   r+   Ú	thumbnailr1   Ú	timestampÚcreatorÚseriesÚepisodeÚepisode_numberrt   )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_urlsrn   rZ   Ústreamsr_   Ú
stream_urlÚstream_typeZ
stream_extÚinfoÚ	embed_urlÚwebpagerp   r*   rt   Úsubtitles_listÚccÚcc_urlÚlangr   r   r   rN   º   s    þþû  ûþ

  üý	



   ÿ
    þ
   ÿ
 ÿ
ý   ÿ  þý

 ÿ
ÿõôzNPOIE._get_infoc                    sr  ˆj d| |td�}| d¡}|r.t|dd�‚| d¡p:|}|d }| d¡}|rf||krf|d	| 7 }ˆ |¡}g ‰tƒ ‰‡fd
d„}d‰d‰ tˆƒ‰tˆ ƒ‰ˆj d| |dd|dœd�d d }t|ƒD �]¤\}	}
|
 d¡}||ƒsèqÊˆ |¡ ˆj	d|dd d�‰|
 d¡‰‡ ‡‡‡‡‡‡‡fdd„}|
 d¡dk�rB||ƒ qÊz2ˆ  |d |dˆ �pn|
 d ¡�pnˆ�pn|	¡}W nz tk
�rî } zZt
|jtƒ�rÜ|jjd!k�rÜˆj|j ¡  ¡ |d"d#��pÂi  d$¡}|�rÜt|dd�‚‚ W 5 d }~X Y nX t
|tƒ�r| d%¡�s
qÊ|}n
| d¡}|rÊd&|ksÊ|ˆk�r2qÊˆ |¡ t|ƒd'k�rhˆ ˆj||d(d)d*d"d+�¡ qÊ||ƒ qÊ| d,¡d-k}|�sèt| d.g ¡ƒD �]N\}	}| d¡}||ƒ�s¸�q–ˆ |¡ | d/d0¡ ¡ }|d1k�rà�q–|d2k�rˆj||d"d#�}|D ]}d3|d4< �qþˆ |¡ nÊ|d*k�r>ˆ ˆj||d(d"d5�¡ n¦d6|k�rÎˆj||d7|	 td"d8�}|�sj�q–| d9¡}|d k�r‚�q–| d:¡}|�r–|ˆk�r �q–ˆ |¡ ˆ || d;d<¡| d=¡d>d?œ¡ nˆ || d=¡d@œ¡ �q–ˆ ˆ¡ i }| dA¡dBk�rdCdD| dEœg|dF< ||�r,ˆ |¡n|| dG¡| dHdd ig¡d3 d t| dI¡ƒt| dJ¡ƒˆ||dKœ	S )LNzhttp://e.omroep.nl/metadata/%s)Útransform_sourceÚerrorTrl   ZpridZtitelZaflevering_titelz: %sc                    s   | o| ˆ kot  d| ¡S )Nz^(?:https?:)?//)rˆ   Úmatch)Ú
format_url)Úurlsr   r   Úis_legal_urlH  s     ÿz)NPOIE._get_old_info.<locals>.is_legal_url)ZLaagZNormaalZHoog)ÚadaptiveZwmv_sbZh264_sbZwmv_bbZh264_bbZwvc1_stdZh264_stdzhttp://ida.omroep.nl/app.php/%szDownloading formats JSONÚyes)r¥   r   )r^   Úitemsr   r.   zvideo/ida/([^/]+)z	format idrq   Úlabelc                    s€   t ˆjd| dd d�ƒ}t ˆjd| dd d�ƒ}ˆˆkrBˆˆƒ}ˆ}n$ˆˆ krXˆˆƒ}ˆ}nd gd \}}ˆ | ||||dœ¡ d S )Nz(\d+)[xX]\d+Úwidthrq   z\d+[xX](\d+)Úheightr   )r.   Ú	format_idr©   rª   r[   )r   r�   r‹   )r¢   r©   rª   r[   Úf_id)ÚQUALITY_FORMATSÚQUALITY_LABELSr«   rn   Ú
item_labelÚquality_from_format_idÚquality_from_labelr   r   r   Úadd_format_urlb  s4       ÿ   ÿûz+NPOIE._get_old_info.<locals>.add_format_urlÚcontentType)r.   Úaudioz
&type=jsonzDownloading %s stream JSONÚformati”  Fro   ZerrorstringÚhttpzvodnotavailable.re   r9   rf   rX   rg   ÚmediumÚliver•   ra   Ú )ÚssÚmsÚhdséÿÿÿÿÚ
preference)r)   r]   z.asfz"Downloading stream %d ASX playlist)rŸ   r]   z./ENTRY/RefÚhrefZformaatÚasfZ	kwaliteitiöÿÿÿ)r.   r)   r[   r¾   )r.   r[   Ztt888ÚjaÚvttzhttp://tt888.omroep.nl/tt888/%s)r)   r.   rv   r˜   ÚimagesZ	gidsdatumZ	tijdsduur)	r(   r*   r+   rz   r,   r1   rn   rt   Úis_live) r   r   r�   r	   r   r€   r   Ú	enumerater„   r�   r‚   Úcauser   ÚcoderŽ   ÚreadÚdecoder   Ú
startswithr   r…   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Ä   r_   r–   r—   Úf4m_formatsZ
f4m_formatÚasxÚrefrt   r   )	r­   r®   r«   rn   r¯   r°   r±   r   r£   r   rO   +  sF   ü


 þþûû

  þ
 ÿÿÿý þþþ

    þ






  ÿ
   ÿ

  ý




ü
þ
þ÷zNPOIE._get_old_info)r    r!   r"   ÚIE_NAMEÚIE_DESCÚ
_VALID_URLÚ_TESTSÚclassmethodr?   rP   rN   rO   Ú__classcell__r   r   rK   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 )rE   znpo.nl:livez?https?://(?:www\.)?npo(?:start)?\.nl/live(?:/(?P<id>[^/?#&]+))?zhttp://www.npo.nl/live/npo-1ZLI_NL1_4188102únpo-1r9   z7re:^NPO 1 [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$T)r(   Ú
display_idr)   r*   rÄ   r6   r7   zhttp://www.npo.nl/liver<   z"https://www.npostart.nl/live/npo-1c                 C   sD   |   |¡pd}|  ||¡}|  ddg|d¡}dd| t ¡ ||dœS )Nrá   zmedia-id="([^"]+)"zdata-prid="([^"]+)"zlive idÚurl_transparentúnpo:%s)Ú_typer.   Úie_keyr(   râ   )rM   r�   r�   r#   ræ   )r   r.   râ   rš   Zlive_idr   r   r   rP   ú  s      ÿûzNPOLiveIE._real_extractN)r    r!   r"   rÛ   rÝ   rÞ   rP   r   r   r   r   rE   â  s*   û ÿ÷þþñrE   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 )rF   znpo.nl:radioz.https?://(?:www\.)?npo\.nl/radio/(?P<id>[^/]+)zhttp://www.npo.nl/radio/radio-1zradio-1r;   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Ä   r6   r7   c                    s   t  |¡rdS tt| ƒ |¡S )NF)rG   r?   rH   rF   rI   rK   r   r   r?     s    zNPORadioIE.suitablec                 C   s
   d  | ¡S )Nz{0}\s*=\s*\'([^\']+)\')rµ   )Ú	attributer   r   r   Ú_html_get_attribute_regex   s    z$NPORadioIE._html_get_attribute_regexc                 C   sl   |   |¡}|  ||¡}|  |  d¡|d¡}|  |  |  d¡|d¡|¡}| d¡}||d |  |¡||ddœS )Nzdata-channelr*   zdata-streamsÚcodecr.   T)r(   r.   r*   Úacodecr)   rÄ   )rM   r�   Ú_html_search_regexrè   rŽ   r�   rÏ   )r   r.   r   rš   r*   r_   ré   r   r   r   rP   $  s&    
  ÿþ
úzNPORadioIE._real_extract)r    r!   r"   rÛ   rÝ   Ú_TESTrß   r?   Ústaticmethodrè   rP   rà   r   r   rK   r   rF     s"   ü ÿø
rF   c                   @   s0   e Zd ZdZdZddddddœd	œZd
d„ ZdS )rG   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174356r;   zJubileumconcert Willeke Albertir:   r-   c                 C   sB   |   |¡}|  ||¡}|  d| |d¡}|  d|d¡}|||dœS )Nz/href="/radio/[^/]+/fragment/%s" title="([^"]+)"r*   zdata-streams='([^']+)'z	audio url)r(   r.   r*   )rM   r�   rë   r�   )r   r.   Úaudio_idrš   r*   Ú	audio_urlr   r   r   rP   J  s     
 þ  ÿýz NPORadioFragmentIE._real_extractN)r    r!   r"   rÛ   rÝ   rì   rP   r   r   r   r   rG   <  s   ýý
rG   c                   @   s   e Zd Zdd„ ZdS )ÚNPODataMidEmbedIEc                 C   s:   |   |¡}|  ||¡}| jd|ddd�}ddd| |dœS )	Nz&data-mid=(["\'])(?P<id>(?:(?!\1).)+)\1r   r(   )Úgrouprã   ZNPOrä   )rå   ræ   r.   râ   )rM   r�   r�   )r   r.   râ   rš   r   r   r   r   rP   ^  s    
   ÿüzNPODataMidEmbedIE._real_extractN©r    r!   r"   rP   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?r9   z$md5:abfa0ff690adb73fd0297fd033aaa631)r(   râ   r*   r)   r+   r6   Tr7   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,   r6   Tr7   Nrô   r   r   r   r   rõ     s   ú	 ÿörõ   c                   @   s   e Zd Zdd„ ZdS )ÚNPOPlaylistBaseIEc                    sb   ˆ   |¡}ˆ  ||¡}‡ fdd„tt ˆ j|¡ƒD ƒ}ˆ jˆ j|dd d�pRˆ  |¡}ˆ  	|||¡S )Nc                    s(   g | ] }ˆ   | d ¡sd| n|¡‘qS )r¶   rä   )Ú
url_resultrÊ   )r@   r   ©r   r   r   Ú
<listcomp>™  s   ÿz3NPOPlaylistBaseIE._real_extract.<locals>.<listcomp>zplaylist titlerq   )
rM   r�   r   rˆ   ÚfindallÚ_PLAYLIST_ENTRY_RErë   Ú_PLAYLIST_TITLE_REÚ_og_search_titleÚplaylist_result)r   r.   Úplaylist_idrš   ÚentriesÚplaylist_titler   rø   r   rP   ”  s    

þ  þþzNPOPlaylistBaseIE._real_extractNrò   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)zC<h1[^>]+class=["\'].*?\bmedia-platform-title\b.*?["\'][^>]*>([^<]+)zF<h5[^>]+class=["\'].*?\bmedia-platform-subtitle\b.*?["\'][^>]*>([^<]+)zdata-media-id="([^"]+)"zQhttp://tegenlicht.vpro.nl/afleveringen/2012-2013/de-toekomst-komt-uit-afrika.htmlr2   r3   r%   zDe toekomst komt uit Afrikar4   r5   r'   z
Video gone)r.   r/   r0   Úskipz:http://www.vpro.nl/programmas/2doc/2015/sergio-herman.htmlzsergio-hermanzsergio herman: fucking perfect©r(   r*   r   ©r.   r0   Ú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20150716r6   Tr7   N©r    r!   r"   rÛ   rÝ   rü   rû   rÞ   r   r   r   r   r  ¥  sX   ûöþú
þù
þúû	 þ÷Û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 meir  é   r  Nr  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 Arnhemr  é   r  Nr  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#   rE   rF   rG   rð   ró   rõ   rö   r  r  r
  r   r   r   r   Ú<module>   s&   @   B)1!=