:Download ... ECHO. SETLOCAL DISABLEDELAYEDEXPANSION FOR /F "delims=" %%A IN ('^"%xidel% -e "replace(replace(normalize-space('%name%'),':','-'),'[<>/\\|?*^]','')" --output-encoding^=oem^"') DO SET "name=%%A" ECHO Bestandsnaam: %name% -------------------------------------------------------------------------------------------------------------------------------- http://www.npo.nl/hart-ziel/14-10-2016/VPWON_1266931 SET name=NTR - Hart ^& Ziel ^(14102016^) Vanwege de ampersand kan %name% niet 'ge-ECHO-ed' worden in Xidel, want anders krijg je deze foutmelding: 'Ziel' is not recognized as an internal or external command, operable program or batch file. 'NTR' is not recognized as an internal or external command, operable program or batch file. http://www.npo.nl/waar-gaat-beyonce-s-formation-over/12-10-2016/WO_VARA_5488570 SET name=VARA - Waar gaat Beyoncé''s Formation over? - De Wereld Draait Door - 8 feb 2016 ^(12102016^)) En omdat er niet 'ge-ECHO-ed' kan worden is replace(...,'["']','''''') nodig bij iedere extractor, want anders krijg je deze foutmelding: err:XPST0003: Unknown or unexpected operator: s in: name:=replace(replace(normalize-space('VARA - Waar gaat Beyoncé' [<- error occurs before here] s Formation over? - De Wereld Draait Door - 8 feb 2016 ^(12102016^)'),':','-'),'[<>/\\|?*^]','') http://www.npo.nl/baby-s-op-campagne-we-love-them-echt-waar-echt-niet/07-10-2016/WO_NOS_5422302 SET name=NOS - Baby''s op campagne^, we love them! Echt waar! ^(Echt niet^) ^(07102016^) SET name=NOS - Baby's op campagne^, we love them ^(Echt niet^) ^(07102016^) http://www.npo.nl/colombianen-deze-is-voor-jullie/07-10-2016/WO_NOS_5417645 SET name=NOS - ''Colombianen^, deze is voor jullie!'' ^(07102016^) err:XPST0003: Expected closing parenthesis: ) in: name:=replace(replace(normalize-space('NOS - ''Colombianen, deze is voor jullie','-'),'[<>/\\|?*]','' [<- error occurs before here] ) http://www.npo.nl/pas-op-een-heckler-in-de-zaal/12-10-2016/WO_NOS_5504847 SET name=NOS - Pas op. Een heckler in de zaal! ^(12102016^) err:XPST0003: Expected closing parenthesis: ) in: name:=replace(replace(normalize-space('Pas op. Een heckler in de zaal','-'),'[<>/\\|?*]','' [<- error occurs before here] ) Daarnaast is een tijdelijke SETLOCAL DISABLEDELAYEDEXPANSION nog nodig, omdat anders, vanwege SETLOCAL ENABLEDELAYEDEXPANSION onder :Task, uitroeptekens verdwijnen. Omdat er bij het eerste videofragment 2 uitroeptekens in de naam staan, zorgt dat er hier alleen nog voor dat hetgeen tussen de 2 uitroeptekens wegvalt, maar bij de 2 andere videofragmenten valt er daardoor een gedeelte van de query zelf weg, met de nodige foutmeldingen tot gevolg. ================================================================================================================================ for /f "delims=" %a in ('xidel-0.9.5.4998.exe -s --color=never VPWON_1226681.json -e "pubopties:=$json/pubopties" --output-format^=cmd') do %a echo %pubopties% ["adaptive", "h264_bb", "h264_sb", "h264_std"] xidel-0.9.5.4998.exe -s --color=never -e "environment-variable('pubopties')" [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] xidel-0.9.5.4998.exe -s --color=never -e "replace(environment-variable('pubopties'),'\^','')" ["adaptive", "h264_bb", "h264_sb", "h264_std"] xidel-0.9.5.4998.exe -s --color=never -e "json(replace(environment-variable('pubopties'),'\^',''))()" adaptive h264_bb h264_sb h264_std ================================================================================================================================ http://www.npo.nl/vrouwenfinale-australian-open-williams-kerber/30-01-2016/WO_NOS_3174462 (beveiligd progressief videofragment) http://www.npo.nl/widm-seizoen-9-aflevering-1/08-01-2009/AVRO_1316544 ("pubopties":["h264_bb","h264_sb","wmv_bb","wmv_sb"]) http://www.npo.nl/ademhaling/04-11-2002/WO_NTR_429477 (pubopties: adaptive) http://www.npo.nl/vrolijk-voorjaar/14-03-2016/WO_POWN_3465960 (progressief videofragment met gecodeerde tekens in de videolink: http://download.omroep.nl/powned/95%20HEMA%20VIERT%20GEEN%20PASEN%20MEER.mp4) http://www.npo.nl/2doc-makers-van-morgen/13-07-2016/WO_VPRO_4463270 ("streams":[{"type":"h264","url":"*.mp4"}]) http://www.npo.nl/promo-opgelicht-06-09-2016/05-09-2016/WO_AT_4993516 ("streams":[{"formaat":"h264","kwaliteit":2,"url":"..."},{"formaat":"h264","kwaliteit":1,"url":"..."},{"type":"h264","url":"..."}]) http://www.npo.nl/willem-wever/14-01-2006/NCRV_1210567/POMS_NCRV_090735 (streams: h264_2, wmv_1, wmv_2) http://www.npo.nl/2doc/06-08-2015/VPWON_1241661 (niet beschikbare video, "pubopties":["adaptive","h264_bb","h264_sb","h264_std"], http://ida.omroep.nl-url werkt, http://odi.omroep.nl-url werkt niet en geeft terug: {"errorstring":"De opgevraagde aflevering is niet beschikbaar."}) echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=',if ($x='adaptive') then 'yes' else 'no','&token=',$token)" token := apboengkgtj9olkt6ted8b9s03 http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=adaptive&adaptive=yes&token=apboengkgtj9olkt6ted8b9s03 http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=h264_bb,h264_sb,h264_std&adaptive=no&token=apboengkgtj9olkt6ted8b9s03 echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -f "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=',if ($x='adaptive') then 'yes' else 'no','&token=',$token)" -e "$json" token := mg823nqtfkt1kr52iaeic2q373 {"success": true, "streams": ["http://odi.omroep.nl/video/ida/adaptive/9bd489e1407d34f497ea322a10ee3a4b/57b9c5ae/POW_02990866/1?extension=m3u8&type=jsonp&callback=?"], "family": "adaptive"} {"success": true, "streams": ["http://odi.omroep.nl/video/ida/h264_std/cee5725260308f9d2bb9f81a7134f165/57b9c5ae/POW_02990866/1?type=jsonp&callback=?", "http://odi.omroep.nl/video/ida/h264_bb/1a1065050ff18e0daa2de9ccf570b63e/57b9c5ae/POW_02990866/1?type=jsonp&callback=?", "http://odi.omroep.nl/video/ida/h264_sb/eeebe2cadf1f321d58756242acb2b941/57b9c5ae/POW_02990866/1?type=jsonp&callback=?"], "family": "progressive"} echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -f "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=',if ($x='adaptive') then 'yes' else 'no','&token=',$token)" -e "$json/(if (family='adaptive') then aformats:=for $x in json(substring-before((streams)(),'p&callback')) return [{'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}] else pformats:=[(streams)() ! json(substring-before(.,'p&callback'))/{'format':concat('h264_',extract(url,'.+/(.+?)\.',1)),'url':substring-before(url,'?')}])" token := shn5r2sf0trs8rj2t0uehku2v2 aformats := [{"format": "meta", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m746dadc6e80057b9d649000000.2fb6947b29239e8b.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}] pformats := [{"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m0343a06a7f8f52c30057b9d649000000.d311293f785cf624f5953a98998fa14f/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m68efd020745835f10057b9d649000000.022935e8d25da8c19ca401751c1e942e/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m3e098e350b1b8e170057b9d649000000.cbdeae31eddc382ddb42642600f95100/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -f "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=',if ($x='adaptive') then 'yes' else 'no','&token=',$token)" -e "$json/(let $odi:=substring-before((streams)(),'p&callback') return if (unparsed-text-available($odi)) then (if (family='adaptive') then aformats:=for $x in json($odi) return [{'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}] else pformats:=[(streams)() ! json(substring-before(.,'p&callback'))/{'format':concat('h264_',extract(url,'.+/(.+?)\.',1)),'url':substring-before(url,'?')}]) else ())" token := pfh5l6d48lhao3emjpotuil4s6 aformats := [{"format": "meta", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m7a9d116bfa0057ba21be000000.b57ef373a287f9c5.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}] pformats := [{"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m222d233f2f2b49900057ba21be000000.576e17085f35114154dd4b771fe34135/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1b.omroep.nl/urishieldv2/l27m4d07296f70adffe70057ba21be000000.e61f8c85a4e30d1a9bb5a32e581a1dae/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m587635da30b0bf060057ba21be000000.d78eb4021852d378ae5da83a5ee11315/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -f "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return concat('http://ida.omroep.nl/odi/?prid=VPWON_1241661&puboptions=',$x,'&adaptive=',if ($x='adaptive') then 'yes' else 'no','&token=',$token)" -e "$json/(let $odi:=substring-before((streams)(),'p&callback') return if (unparsed-text-available($odi)) then (if (family='adaptive') then aformats:=for $x in json($odi) return [{'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}] else pformats:=[(streams)() ! json(substring-before(.,'p&callback'))/{'format':concat('h264_',extract(url,'.+/(.+?)\.',1)),'url':substring-before(url,'?')}]) else ())" token := 0mjm7na4e74e96ukkjf3ecc8v0 -------------------------------------------------------------------------------------------------------------------------------- echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then let $odi:=substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') return if (unparsed-text-available($odi)) then for $x in json($odi) return [{'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}] else () else ()" token := 0t1i0givnaqgvn336mggdjsmb7 [{"format": "meta", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m7a07a1fbc70057bb6aa5000000.531ba75c1fafd33c.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') ! (if (unparsed-text-available(.)) then for $x in json(.) return [{'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}] else ()) else ()" token := fe0ho6toqb0nvg7r1bo0sa7013 [{"format": "meta", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m1cb98c12700057bb820e000000.6728cb301d812a02.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then () else [for $x in json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() return if (unparsed-text-available(substring-before($x,'p&callback'))) then json(substring-before($x,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else ()]" token := tqaukrqt7l6dq2l4f2ibr39tl1 [{"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m1e41d79d304f14220057bb7f32000000.175dfaa725e338a0e4088519f82650ad/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m1cc1cac111ed5de20057bb7f32000000.88e94a1f35b397d7ea3330870badee4b/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m6b1114e11db22d690057bb7f32000000.829474944b8d84a9f452cf47e2f1bc1e/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then () else [json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() ! (if (unparsed-text-available(substring-before(.,'p&callback'))) then json(substring-before(.,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else ())]" token := 9qd5dmn3bt3gqu3jfrt1oghk15 [{"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m3824721e668a42ad0057bb805a000000.982ba562742e1c92fcfae8d1ce9c4f9a/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m2232fc86574ad9260057bb805a000000.ccf8f5885a46516403cabf9d90239183/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m7f682e7e01cf0acd0057bb805a000000.f0772ebb8c7202791c60df0b401654fb/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] -------------------------------------------------------------------------------------------------------------------------------- echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "[for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive'||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then let $odi:=substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') return if (unparsed-text-available($odi)) then for $x in json($odi) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else () else for $x in json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() return if (unparsed-text-available(substring-before($x,'p&callback'))) then json(substring-before($x,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else ()]" token := tbad2fldkket0qge7ea7n90d86 [{"format": "meta", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m1369eb5b610057bb7ae7000000.3f6d19ec96be5e72.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}, {"format": "h264_std", "url": "http://content50c1b.omroep.nl/urishieldv2/l27m5ba844e134b47ee90057bb7ae7000000.81ea68a4525020c3da532705a24d09de/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1b.omroep.nl/urishieldv2/l27m7fca686d102553880057bb7ae7000000.da1f00e87e7c54d41e548d307c3072d8/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m5e0b00e8024e12760057bb7ae7000000.9bb6f28f07583fdbbee23ee86c2c212a/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "[for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive'||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then let $odi:=substring-before(json(concat('http://ida.omroep.nl/odi/?prid=VPWON_1241661&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') return if (unparsed-text-available($odi)) then for $x in json($odi) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else () else for $x in json(concat('http://ida.omroep.nl/odi/?prid=VPWON_1241661&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() return if (unparsed-text-available(substring-before($x,'p&callback'))) then json(substring-before($x,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else ()]" token := c6ka5j5eamevvj7i0t32005ng7 [] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "let $var:=for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then let $odi:=substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') return if (unparsed-text-available($odi)) then for $x in json($odi) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else () else for $x in json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() return if (unparsed-text-available(substring-before($x,'p&callback'))) then json(substring-before($x,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else () return if ($var) then json:=[$var] else ()" token := at8ucsev68q7kobk8qm43dnsh1 json := [{"format": "meta", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m69b91814dc0057bb7deb000000.88b4681433279467.adaptive-e50c1a.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}, {"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m4283808956d6aa8f0057bb7deb000000.98e7cfdf879ebb895f5fbf44bab55fef/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m29ea0c3c0d844a8b0057bb7deb000000.8980d036a353e73701dc8b2ad7b98b83/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m1b51dddc47b41f1c0057bb7deb000000.8b973bb412948701c8937fb68be8fc73/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "let $var:=for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then let $odi:=substring-before(json(concat('http://ida.omroep.nl/odi/?prid=VPWON_1241661&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') return if (unparsed-text-available($odi)) then for $x in json($odi) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else () else for $x in json(concat('http://ida.omroep.nl/odi/?prid=VPWON_1241661&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() return if (unparsed-text-available(substring-before($x,'p&callback'))) then json(substring-before($x,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else () return if ($var) then json:=[$var] else ()" token := 5s81vjfaao6u8ajm4b51k268b5 echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - -e "let $var:=for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') ! (if (unparsed-text-available(.)) then for $x in json(.) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else ()) else json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() ! (if (unparsed-text-available(substring-before(.,'p&callback'))) then json(substring-before(.,'p&callback'))/{'format':extract(.//odiredirecturl,'ida/(.+?)/',1),'url':substring-before(url,'?')} else ()) return if ($var) then json:=[$var] else ()" token := h9a8l7a85arf0goiskdnmvsd32 json := [{"format": "meta", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m2d5ececeb90057bb84c9000000.c14c2d2052c09d6c.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}, {"format": "h264_std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m5835352d4fe6ea8b0057bb84c9000000.b47ef4b8ede34095736d4e8c9fa7c64e/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "h264_bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m45dcb103105487ab0057bb84ca000000.b6a533686e3a31eddad0809715dc3e11/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "h264_sb", "url": "http://content50c2b.omroep.nl/urishieldv2/l27m43e21d38119d72630057bb84ca000000.ed1e41bdef3f34514ed589d3951573fa/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never npo-extractor-revised.json --xquery "let $a:=(reverse($json()[contains(format,'h264')]/format),$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()])" formats := h264_sb, h264_bb, h264_std, meta, 135, 281, 666, 878, 1196 best := 1196 xidel-0.9.5.4998.exe -s --color=never npo-extractor-revised2.json --xquery "let $a:=(reverse($json()[contains(format,'h264')]/format),$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()])" formats := h264_sb, h264_bb best := h264_bb xidel-0.9.5.4998.exe -s --xquery "let $json:=[ {'format': 'meta'}, {'format': '1536'}, {'format': '819'}, {'format': '1536'}, {'format': 'mp4-std'}, {'format': 'mp4-bb'}, {'format': 'mp4-sb'}, {'format': '3gp-480'}, {'format': 'wmv-2'}, {'format': 'wmv-1'}, {'format': 'rtsp-300'}, {'format': 'rtsp-1000'}, {'format': 'rtsp-3000'} ] return let $a:=( $json()[contains(format,'rtsp')]/format, for $x in $json()[contains(format,'wmv')]/format order by $x return $x, $json()[contains(format,'3gp')]/format, reverse($json()[contains(format,'mp4')]/format), $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($a,', '), best:=$a[last()] )" formats := rtsp-300, rtsp-1000, rtsp-3000, wmv-1, wmv-2, 3gp-480, mp4-sb, mp4-bb, mp4-std, meta, 819, 1024, 1536 best := 1536 -------------------------------------------------------------------------------------------------------------------------------- echo [^"adaptive^"^, ^"h264_bb^"^, ^"h264_sb^"^, ^"h264_std^"] | xidel-0.9.5.4998.exe -s --color=never "http://ida.omroep.nl/npoplayer/i.js" -e "token:=replace(extract($raw,'\"(.+^)\"',1),'^(.{5})((.*?)(\d)(.*?)(\d)(.*)|(.{6})(.)(.)(.*))(.{5})$','$1$3$6$5$4$7$8$10$9$11$12')" - --xquery "let $a:=for $x in $json/(if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',')) return if ($x='adaptive') then substring-before(json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=yes&token=',$token))/(streams)(),'p&callback') ! (if (unparsed-text-available(.)) then for $x in json(.) return ({'format':'meta','url':$x/url},tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1))}) else ()) else json(concat('http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=',$x,'&adaptive=no&token=',$token))/(streams)() ! (if (unparsed-text-available(substring-before(.,'p&callback'))) then json(substring-before(.,'p&callback'))/{'format':concat('mp4-',extract(url,'.+/([a-z]+)',1)),'url':substring-before(url,'?')} else ()) return if ($a) then (json:=[$a],let $b:=(reverse($a[contains(format,'mp4')]/format),$a[format='meta']/format,for $x in $a[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else ()" token := l3dsaljnjpfgje78c4qn48o3c2 json := [{"format": "meta", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866.m3u8"}, {"format": "281", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=65000-video=201000.m3u8"}, {"format": "666", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=501000.m3u8"}, {"format": "878", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=701000.m3u8"}, {"format": "1196", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000-video=1001000.m3u8"}, {"format": "135", "url": "http://l24m5492afa5520057bccae3000000.340810e608980bef.adaptive-e50c1b.npostreaming.nl/lmshieldv2/3/nos/rest/2016/POW_02990866/POW_02990866.ism/POW_02990866-audio_eng=128000.m3u8"}, {"format": "mp4-std", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m5782ccc172c5c6db0057bccae3000000.b4b66405615bba422486850ebda25881/s01/ceresodi/h264/1/nos/rest/2016/POW_02990866/std.20160817.m4v"}, {"format": "mp4-bb", "url": "http://content50c1a.omroep.nl/urishieldv2/l27m1933b0f6369580e00057bccae3000000.a7b51e0a474d524dc6b14e54005d3212/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/bb.20160817.m4v"}, {"format": "mp4-sb", "url": "http://content50c2a.omroep.nl/urishieldv2/l27m132e2e315c10fd800057bccae3000000.46af9c9694c11b72c4390566d79c727b/s05/ceresodi/h264/1/nos/rest/2016/POW_02990866/sb.20160817.m4v"}] formats := mp4-sb, mp4-bb, mp4-std, meta, 135, 281, 666, 878, 1196 best := 1196 --xquery "let $a:= for $x in $json/( if (contains(.(),'adaptive')) then tokenize(('adaptive '||join(.()[.!='adaptive'],',')),' ') else join(.(),',') ) return if ($x='adaptive') then substring-before( json( concat( 'http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=', $x, '&adaptive=yes&token=', $token ) )/(streams)(), 'p&callback' ) ! ( if (unparsed-text-available(.)) then for $x in json(.) return ( { 'format':'meta', 'url':$x/url }, tail(tokenize(unparsed-text($x/url),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x/url),extract(.,'(.+m3u8)',1)) } ) else () ) else json( concat( 'http://ida.omroep.nl/odi/?prid=POW_02990866&puboptions=', $x, '&adaptive=no&token=', $token ) )/(streams)() ! ( if (unparsed-text-available(substring-before(.,'p&callback'))) then json(substring-before(.,'p&callback'))/{ 'format':concat('mp4-',extract(url,'.+/([a-z]+)',1)), 'url':substring-before(url,'?') } else () ) return if ($a) then ( json:=[$a], let $b:=( reverse($a[contains(format,'mp4')]/format), $a[format='meta']/format, for $x in $a[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] ) ) else ()" ================================================================================================================================ [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 3^, ^"url^": ^"http://download.omroep.nl/nos/content/mp4/web03/2016/08/20/274108.mp4^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://download.omroep.nl/nos/content/ipod/2016/08/20/274108.mp4^"}] [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 3^, ^"url^": ^"http://download.omroep.nl/nos/content-ip/mp4/web03/2016/08/20/274109.mp4^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://download.omroep.nl/nos/content-ip/ipod/2016/08/20/274109.mp4^"}] [{^"formaat^": ^"wmv^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://cgi.omroep.nl/cgi-bin/streams?/tv/ncrv/willemwever/bb.20060114.asf^"}^, {^"formaat^": ^"wmv^"^, ^"kwaliteit^": 1^, ^"url^": ^"http://cgi.omroep.nl/cgi-bin/streams?/tv/ncrv/willemwever/sb.20060114.asf^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://content.omroep.nl/tv/ncrv/willemwever/bb.20060114.mp4^"}] [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/640x360_1000.m4v^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 1^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/320x180_180.m4v^"}^, {^"type^": ^"h264^"^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/854x480_1500.m4v^"}] [{^"type^": ^"h264^"^, ^"url^": ^"http://download.omroep.nl/vpro/geoblock/npodoc/Documentaire_Spring_maar_achterop-Dorine^&Dominique.mp4^"}] echo [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 3^, ^"url^": ^"http://download.omroep.nl/nos/content/mp4/web03/2016/08/20/274108.mp4^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://download.omroep.nl/nos/content/ipod/2016/08/20/274108.mp4^"}] | xidel-0.9.5.4998.exe -s --color=never - --xquery "if (count($json()/url)=1) then _url:=$json()/url else (json:=[$json()/{'format':if (type) then concat('mp4-',max($json()/kwaliteit)+1) else concat(if (formaat='h264') then 'mp4' else formaat,'-',kwaliteit),'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url}],let $a:=(for $x in $json()[contains(format,'wmv')]/format order by $x return $x,for $x in $json()[contains(format,'mp4')]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()]))" json := [{"format": "mp4-3", "url": "http://download.omroep.nl/nos/content/mp4/web03/2016/08/20/274108.mp4"}, {"format": "mp4-2", "url": "http://download.omroep.nl/nos/content/ipod/2016/08/20/274108.mp4"}] formats := mp4-2, mp4-3 best := mp4-3 echo [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 3^, ^"url^": ^"http://download.omroep.nl/nos/content-ip/mp4/web03/2016/08/20/274109.mp4^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://download.omroep.nl/nos/content-ip/ipod/2016/08/20/274109.mp4^"}] | xidel-0.9.5.4998.exe -s --color=never - --xquery "if (count($json()/url)=1) then _url:=$json()/url else (json:=[$json()/{'format':if (type) then concat('mp4-',max($json()/kwaliteit)+1) else concat(if (formaat='h264') then 'mp4' else formaat,'-',kwaliteit),'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url}],let $a:=(for $x in $json()[contains(format,'wmv')]/format order by $x return $x,for $x in $json()[contains(format,'mp4')]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()]))" json := [{"format": "mp4-3", "url": "http://video.omroep.nl/secure/71f9bb39c1a31b1806a126f0de2bdceb/57c3477d/nos/content-ip/mp4/web03/2016/08/20/274109.mp4\r\n"}, {"format": "mp4-2", "url": "http://video.omroep.nl/secure/d6430936943bd3dcccb0a4a2b2ed193d/57c3477d/nos/content-ip/ipod/2016/08/20/274109.mp4\r\n"}] formats := mp4-2, mp4-3 best := mp4-3 echo [{^"formaat^": ^"wmv^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://cgi.omroep.nl/cgi-bin/streams?/tv/ncrv/willemwever/bb.20060114.asf^"}^, {^"formaat^": ^"wmv^"^, ^"kwaliteit^": 1^, ^"url^": ^"http://cgi.omroep.nl/cgi-bin/streams?/tv/ncrv/willemwever/sb.20060114.asf^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://content.omroep.nl/tv/ncrv/willemwever/bb.20060114.mp4^"}] | xidel-0.9.5.4998.exe -s --color=never - --xquery "if (count($json()/url)=1) then _url:=$json()/url else (json:=[$json()/{'format':if (type) then concat('mp4-',max($json()/kwaliteit)+1) else concat(if (formaat='h264') then 'mp4' else formaat,'-',kwaliteit),'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url}],let $a:=(for $x in $json()[contains(format,'wmv')]/format order by $x return $x,for $x in $json()[contains(format,'mp4')]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()]))" json := [{"format": "wmv-2", "url": "mms://blaster.omroep.nl/public/ug-od/media4/ru_08/ap/media/tv/ncrv/willemwever/bb.20060114.asf?wmt=57c34643&wmhash=2b74066b"}, {"format": "wmv-1", "url": "mms://blaster.omroep.nl/public/ug-od/media4/ru_08/ap/media/tv/ncrv/willemwever/sb.20060114.asf?wmt=57c34643&wmhash=15164d62"}, {"format": "mp4-2", "url": "http://content.omroep.nl/tv/ncrv/willemwever/bb.20060114.mp4"}] formats := wmv-1, wmv-2, mp4-2 best := mp4-2 echo [{^"formaat^": ^"h264^"^, ^"kwaliteit^": 2^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/640x360_1000.m4v^"}^, {^"formaat^": ^"h264^"^, ^"kwaliteit^": 1^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/320x180_180.m4v^"}^, {^"type^": ^"h264^"^, ^"url^": ^"http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/854x480_1500.m4v^"}] | xidel-0.9.5.4998.exe -s --color=never - --xquery "if (count($json()/url)=1) then _url:=$json()/url else (json:=[$json()/{'format':if (type) then concat('mp4-',max($json()/kwaliteit)+1) else concat(if (formaat='h264') then 'mp4' else formaat,'-',kwaliteit),'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url}],let $a:=(for $x in $json()[contains(format,'wmv')]/format order by $x return $x,for $x in $json()[contains(format,'mp4')]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()]))" json := [{"format": "mp4-2", "url": "http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/640x360_1000.m4v"}, {"format": "mp4-1", "url": "http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/320x180_180.m4v"}, {"format": "mp4-3", "url": "http://content.omroep.nl/avrotros/transcoding/opgelicht/1473070014300/854x480_1500.m4v"}] formats := mp4-1, mp4-2, mp4-3 best := mp4-3 echo [{^"type^": ^"h264^"^, ^"url^": ^"http://download.omroep.nl/vpro/geoblock/npodoc/Documentaire_Spring_maar_achterop-Dorine^&Dominique.mp4^"}] | xidel-0.9.5.4998.exe -s --color=never - --xquery "if (count($json()/url)=1) then _url:=$json()/url else (json:=[$json()/{'format':if (type) then concat('mp4-',max($json()/kwaliteit)+1) else concat(if (formaat='h264') then 'mp4' else formaat,'-',kwaliteit),'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url}],let $a:=(for $x in $json()[contains(format,'wmv')]/format order by $x return $x,for $x in $json()[contains(format,'mp4')]/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()]))" _url := http://download.omroep.nl/vpro/geoblock/npodoc/Documentaire_Spring_maar_achterop-Dorine&Dominique.mp4 --xquery "if (count($json()/url)=1) then _url:=$json()/url else ( json:=[ $json()/{ 'format':if (type) then concat( 'mp4-', max($json()/kwaliteit)+1 ) else concat( if (formaat='h264') then 'mp4' else formaat, '-', kwaliteit ), 'url':if (ends-with(url,'asf')) then doc(url)//@href else if (contains(url,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{url}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else url } ], let $a:=( for $x in $json()[contains(format,'wmv')]/format order by $x return $x, for $x in $json()[contains(format,'mp4')]/format order by $x return $x ) return ( formats:=join($a,', '), best:=$a[last()] ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.kijk.nl/veronicatv/jupilerleague/videos/nWGl56o2kCg/aflevering-7" -f "replace(replace(//meta[@property='og:video']/@content,'federated_f9','htmlFederated'),'videoId','@videoPlayer')" --xquery "json(extract(//body,'experienceJSON = (.+\});',1))/(if (.//mediaDTO) then .//mediaDTO/(name:=customFields/concat(if (sbs_station='veronicatv') then 'Veronica' else upper-case(sbs_station),' - ',sbs_program,replace(sko_dt,'(\d{4})(\d{2})(\d{2})',' ($3$2$1)')),json:=[let $a:=(renditions)()[size=0]/defaultURL return ({'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}),json(concat('http://hbb.sbs6.nl/backend/veamerapi/index/method/video/brightCoveId/',id))/(videos)() ! {'format':replace(.,'.+-(\d+).+\.(.+)','$2-$1'),'url':.}],let $b:=($json()[contains(format,'mp4')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else())" name := Veronica - Jupiler League (26082016) json := [{"format": "meta", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/veronica_jupilerleague_S20162017E07_160827003945615472-hls-main.m3u8"}, {"format": "610", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/r1/veronica_jupilerleague_S20162017E07_160827002630615472-hls-350.m3u8"}, {"format": "928", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/r2/veronica_jupilerleague_S20162017E07_160827003852615472-hls-650.m3u8"}, {"format": "1288", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/r3/veronica_jupilerleague_S20162017E07_160827003414615472-hls-900.m3u8"}, {"format": "1643", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/r4/veronica_jupilerleague_S20162017E07_160827003345615472-hls-1200.m3u8"}, {"format": "2179", "url": "http://l3c.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/hls/r8/veronica_jupilerleague_S20162017E07_160827003049615472-hls-1885.m3u8"}, {"format": "mp4-350", "url": "http://stv.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/mp4/veronica_jupilerleague_S20162017E07_160827003733615472-bg-350.mp4"}, {"format": "mp4-650", "url": "http://stv.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/mp4/veronica_jupilerleague_S20162017E07_160827003952615472-bg-650.mp4"}, {"format": "mp4-900", "url": "http://stv.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/mp4/veronica_jupilerleague_S20162017E07_160827002731615472-bg-900.mp4"}, {"format": "mp4-1200", "url": "http://stv.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/mp4/veronica_jupilerleague_S20162017E07_160827002833615472-bg-1200.mp4"}, {"format": "mp4-1885", "url": "http://stv.cdn.sbsnet.nl/ra/01/61547203ef517cbb2dd9133147e5f4d5ad4a60/mp4/veronica_jupilerleague_S20162017E07_160827002445615472-bg-1885.mp4"}] formats := mp4-350, mp4-650, mp4-900, mp4-1200, mp4-1885, meta, 610, 928, 1288, 1643, 2179 best := 2179 xidel-0.9.5.4998.exe -s --color=never "http://www.kijk.nl/sbs6/hartvannederland/videos/FwVcLzG2ETBK/cameraploeg-hart-van-nederland-straat-uitgejaagd-in-zaandam" -f "replace(replace(//meta[@property='og:video']/@content,'federated_f9','htmlFederated'),'videoId','@videoPlayer')" --xquery "json(extract(//body,'experienceJSON = (.+\});',1))/(if (.//mediaDTO) then .//mediaDTO/(name:=customFields/concat(if (sbs_station='veronicatv') then 'Veronica' else upper-case(sbs_station),' - ',sbs_program,replace(sko_dt,'(\d{4})(\d{2})(\d{2})',' ($3$2$1)')),json:=[let $a:=(renditions)()[size=0]/defaultURL return ({'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}),json(concat('http://hbb.sbs6.nl/backend/veamerapi/index/method/video/brightCoveId/',id))/(videos)() ! {'format':replace(.,'.+-(\d+).+\.(.+)','$2-$1'),'url':.}],let $b:=($json()[contains(format,'mp4')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else())" name := SBS6 - Hart van Nederland (08092016) json := [{"format": "meta", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181135045528-hls-main-pv.m3u8"}, {"format": "610", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/r1/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181134045528-hls-350-pv.m3u8"}, {"format": "928", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/r2/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181112045528-hls-650-pv.m3u8"}, {"format": "1288", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/r3/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181103045528-hls-900-pv.m3u8"}, {"format": "1643", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/r4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181052045528-hls-1200-pv.m3u8"}, {"format": "2179", "url": "http://l3c.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/hls/r8/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181124045528-hls-1885-pv.m3u8"}, {"format": "mp4-350", "url": "http://stv.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/mp4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181020045528-bg-350-pv.mp4"}, {"format": "mp4-650", "url": "http://stv.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/mp4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181015045528-bg-650-pv.mp4"}, {"format": "mp4-900", "url": "http://stv.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/mp4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181013045528-bg-900-pv.mp4"}, {"format": "mp4-1200", "url": "http://stv.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/mp4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181011045528-bg-1200-pv.mp4"}, {"format": "mp4-1885", "url": "http://stv.cdn.sbsnet.nl/ra/02/0455289c35f05bcd3299e8f9723263ca36d12b/mp4/sbs6_hartvannederlandvroeg_S00E2016090801025654_160908181017045528-bg-1885-pv.mp4"}] formats := mp4-350, mp4-650, mp4-900, mp4-1200, mp4-1885, meta, 610, 928, 1288, 1643, 2179 best := 2179 -f "replace( replace( //meta[@property='og:video']/@content, 'federated_f9', 'htmlFederated' ), 'videoId', '@videoPlayer' )" --xquery "json(extract(//body,'experienceJSON = (.+\});',1))/( if (.//mediaDTO) then .//mediaDTO/( name:=customFields/concat( if (sbs_station='veronicatv') then 'Veronica' else upper-case(sbs_station), ' - ', sbs_program, replace(sko_dt,'(\d{4})(\d{2})(\d{2})',' ($3$2$1)') ), json:=[ let $a:=(renditions)()[size=0]/defaultURL return ( { 'format':'meta', 'url':$a }, tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1)) } ), json(concat('http://hbb.sbs6.nl/backend/veamerapi/index/method/video/brightCoveId/',id))/(videos)() ! { 'format':replace(.,'.+-(\d+).+\.(.+)','$2-$1'), 'url':. } ], let $b:=( $json()[contains(format,'mp4')]/format, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] ) ) else () )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never 702085ad-7464-4f30-8ef8-d84391972f18.json -e "$json//original_date" 1436031000 xidel-0.9.5.4998.exe -s --color=never 702085ad-7464-4f30-8ef8-d84391972f18.json -e "$json//original_date * dayTimeDuration('PT1S') + date('1970-01-01')" 2015-07-04 xidel-0.9.5.4998.exe -s --color=never 702085ad-7464-4f30-8ef8-d84391972f18.json -e "$json/(.//original_date,.//start,.//stop) ! (. * dayTimeDuration('PT1S') + dateTime('1970-01-01T00:00:00'))" 2015-07-04T17:30:00 2015-07-04T17:29:58 2016-07-03T17:29:58 ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "Violetta - Aflevering 180 - Seizoen 3.json" --xquery "name:=$json(2)/concat('Disney - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),json:=[let $a:=concat(substring-before($json(2)/dataUrl,'format'),'flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http?referrer=','aHR0cDovL3d3dy5kaXNuZXkubmw=') return ({'format':'meta','url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {$a} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')}[url],tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))})]" name := Disney - Violetta - Aflevering 180 - Seizoen 3 (25032015) json := [{"format": "meta", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/master.m3u8\r\n"}, {"format": "463", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_0_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}, {"format": "663", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_1_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}, {"format": "960", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_2_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}, {"format": "1608", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_3_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}, {"format": "2623", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_4_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}, {"format": "3718", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_5_av.m3u8?null=&id=AgBQZTEFUl7qX9xgw1cQaohyiSc3o+uLvDg2G77bAqarGqbni2SgrbEOqGhoHqMzFUz/UFLqfjF59Q=="}] xidel-0.9.5.4998.exe -s --color=never "Violetta - Aflevering 180 - Seizoen 3.json" --xquery "name:=$json(2)/concat('Disney - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),json:=[let $a:=concat(substring-before($json(2)/dataUrl,'format'),'flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http?referrer=','aHR0cDovL3d3dy5kaXNuZXkubmw=') return ({'format':'meta','url':x:request({'data':$a,'method':'HEAD','error-handling':'4xx=accept'})/url},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))})]" **** Retrieving (HEAD): http://cdnapi.kaltura.com/p/1068292/sp/106829200/playManifest/entryId/1_kmwy2jey/flavorIds/1_jrrevruc,1_1ia63cq4,1_qco8ufle,1_gk6zz9vy,1_f6bcq56a,1_ypsl6c95/format/applehttp/protocol/http?referrer=aHR0cDovL3d3dy5kaXNuZXkubmw= **** name := Disney - Violetta - Aflevering 180 - Seizoen 3 (25032015) url := file://D:\Storage\Media\Encoding, Decoding\Binaries\Violetta - Aflevering 180 - Seizoen 3.json host := D:\Storage\Media\Encoding, Decoding\Binaries\Violetta - Aflevering 180 - Seizoen 3.json path := raw := headers := json := [{"format": "meta", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/master.m3u8"}, {"format": "463", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_0_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}, {"format": "663", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_1_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}, {"format": "960", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_2_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}, {"format": "1608", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_3_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}, {"format": "2623", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_4_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}, {"format": "3718", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_5_av.m3u8?null=&id=AgBQZTEFUl7qXutnw1ekk3TsFQx5xnoBHqnHtGJb7XYhpfRVgrTj382KMEBlinGJDdc6WgUaiaIe3A=="}] xidel-0.9.5.4998.exe -s --color=never "http://www.disney.nl/disney-channel/gemist/violetta#/videoId/violetta-aflevering-180-seizoen-3" -e "ref:=string-to-base64Binary(concat('http://',$host)),//script/(if (@class) then json(extract(.,'Config = (.+?\});',1,'s')[.])/(pid:=partnerId,eid:=entryId) else json(extract(.,'burger=(.+):\(',1)[.])/(.//externals)()/(pid:='_'||account,eid:=data_id))" -f "concat('http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=',$pid,'&2:service=baseentry&2:action=get&2:entryId=',$eid,'&3:service=flavorAsset&3:action=getByEntryId&3:entryId=',$eid)" -e "name:=$json(2)/concat('Disney - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),pformats:=$json(3)()/{'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate),'url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {concat($json(2)/dataUrl,'/flavorId/',id,'?referrer=',$ref)} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')}[url]" --error-handling^=4xx^=accept -f "concat(substring-before($json(2)/dataUrl,'format'),'flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http?referrer=',$ref)" --xquery "json:=[if ($raw) then ({'format':'meta','url':$url},tail(tokenize($raw,'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))}) else (),$pformats],let $b:=(for $x in $json()[contains(format,'-')]/format order by $x return $x,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" --output-encoding=oem ref := aHR0cDovL3d3dy5kaXNuZXkubmw= pid := _1068292 eid := 1_kmwy2jey name := Disney - Violetta - Aflevering 180 - Seizoen 3 (25032015) pformats := {"format": "mp4-469", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_jrrevruc_1.mp4\r\n"}{"format": "mp4-669", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_1ia63cq4_1.mp4\r\n"}{"format": "webm-839", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_9wbsfw7d_1.webm\r\n"}{"format": "mp4-968", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_qco8ufle_1.mp4\r\n"}{"format": "mp4-1628", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_gk6zz9vy_1.mp4\r\n"}{"format": "mp4-2631", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_f6bcq56a_1.mp4\r\n"}{"format": "mp4-3726", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_ypsl6c95_1.mp4\r\n"}{"format": "3gp-369", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_4txyt25v_1.3gp\r\n"} json := [{"format": "meta", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/master.m3u8"}, {"format": "463", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_0_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "663", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_1_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "960", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_2_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "1608", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_3_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "2623", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_4_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "3718", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_5_av.m3u8?null=&id=AgBQZTEFUl7qXt8hxFdcwiGF/KqPCDhmumZCK5qjJV2eFfEck6h1kXRkt/KcTqM2168K8SUeJQApsw=="}, {"format": "mp4-469", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_jrrevruc_1.mp4\r\n"}, {"format": "mp4-669", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_1ia63cq4_1.mp4\r\n"}, {"format": "webm-839", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_9wbsfw7d_1.webm\r\n"}, {"format": "mp4-968", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_qco8ufle_1.mp4\r\n"}, {"format": "mp4-1628", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_gk6zz9vy_1.mp4\r\n"}, {"format": "mp4-2631", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_f6bcq56a_1.mp4\r\n"}, {"format": "mp4-3726", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_ypsl6c95_1.mp4\r\n"}, {"format": "3gp-369", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_4txyt25v_1.3gp\r\n"}] formats := 3gp-369, mp4-469, mp4-669, mp4-968, mp4-1628, mp4-2631, mp4-3726, webm-839, meta, 463, 663, 960, 1608, 2623, 3718 best := 3718 xidel-0.9.5.4998.exe -s --color=never "http://www.disney.nl/disney-channel/gemist/violetta#/videoId/violetta-aflevering-180-seizoen-3" -e "ref:=string-to-base64Binary(concat('http://',$host)),//script/(if (@class) then json(extract(.,'Config = (.+?\});',1,'s')[.])/(pid:=partnerId,eid:=entryId) else json(extract(.,'burger=(.+):\(',1)[.])/(.//externals)()/(pid:='_'||account,eid:=data_id))" -f "concat('http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=',$pid,'&2:service=baseentry&2:action=get&2:entryId=',$eid,'&3:service=flavorAsset&3:action=getByEntryId&3:entryId=',$eid)" --xquery "name:=$json(2)/concat('Disney - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),json:=[let $a:=concat(substring-before($json(2)/dataUrl,'format'),'flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http?referrer=',$ref) return ({'format':'meta','url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {$a} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))},$json(3)()/{'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate),'url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {concat($json(2)/dataUrl,'/flavorId/',id,'?referrer=',$ref)} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')}[url])],let $b:=(for $x in $json()[contains(format,'-')]/format order by $x return $x,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" --output-encoding=oem ref := aHR0cDovL3d3dy5kaXNuZXkubmw= pid := _1068292 eid := 1_kmwy2jey name := Disney - Violetta - Aflevering 180 - Seizoen 3 (25032015) json := [{"format": "meta", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/master.m3u8\r\n"}, {"format": "463", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_0_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "663", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_1_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "960", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_2_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "1608", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_3_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "2623", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_4_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "3718", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_5_av.m3u8?null=&id=AgBQZTEFUl7qX/4gxFfwJxXFaFUMl8Mn9sJbceReIIirFRnuYCcO8SG9x5B7biwymQE47RjyxcBbEA=="}, {"format": "mp4-469", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_jrrevruc_1.mp4\r\n"}, {"format": "mp4-669", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_1ia63cq4_1.mp4\r\n"}, {"format": "webm-839", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_9wbsfw7d_1.webm\r\n"}, {"format": "mp4-968", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_qco8ufle_1.mp4\r\n"}, {"format": "mp4-1628", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_gk6zz9vy_1.mp4\r\n"}, {"format": "mp4-2631", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_f6bcq56a_1.mp4\r\n"}, {"format": "mp4-3726", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_ypsl6c95_1.mp4\r\n"}, {"format": "3gp-369", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_4txyt25v_1.3gp\r\n"}] formats := 3gp-369, mp4-469, mp4-669, mp4-968, mp4-1628, mp4-2631, mp4-3726, webm-839, meta, 463, 663, 960, 1608, 2623, 3718 best := 3718 xidel-0.9.5.4998.exe -s --color=never "http://www.disney.nl/disney-channel/gemist/violetta#/videoId/violetta-aflevering-180-seizoen-3" -e "ref:=string-to-base64Binary(concat('http://',$host)),//script/(if (@class) then json(extract(.,'Config = (.+?\});',1,'s')[.])/(pid:=partnerId,eid:=entryId) else json(extract(.,'burger=(.+):\(',1)[.])/(.//externals)()/(pid:='_'||account,eid:=data_id))" -f "concat('http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=',$pid,'&2:service=baseentry&2:action=get&2:entryId=',$eid,'&3:service=flavorAsset&3:action=getByEntryId&3:entryId=',$eid)" --xquery "name:=$json(2)/concat('Disney - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),json:=[let $a:=concat(substring-before($json(2)/dataUrl,'format'),'flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http?referrer=',$ref) return ({'format':'meta','url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {$a} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))},$json(3)()/{'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate),'url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {concat($json(2)/dataUrl,'/flavorId/',id,'?referrer=',$ref)} -e \"if (contains($headers[1]^,''404''^)^) then (^)else $url\"')}[url])],let $b:=(for $x in $json()[contains(format,'-')]/format order by $x return $x,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" --output-encoding=oem ref := aHR0cDovL3d3dy5kaXNuZXkubmw= pid := _1068292 eid := 1_kmwy2jey name := Disney - Violetta - Aflevering 180 - Seizoen 3 (25032015) json := [{"format": "meta", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/master.m3u8\r\n"}, {"format": "463", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_0_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "663", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_1_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "960", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_2_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "1608", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_3_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "2623", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_4_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "3718", "url": "https://kalturahd-vh.akamaihd.net/i/content/r71v1/entry/data/412/100/1_kmwy2jey_1_,jrrevruc,1ia63cq4,qco8ufle,gk6zz9vy,f6bcq56a,ypsl6c95,_1.mp4.csmil/index_5_av.m3u8?null=&id=AgBQZTEFUl7qX3lDxFf80NoCL1VK0llukyHyyO0mry4V0r+a0vfVydPBSv1LKELwq5IDH/W36TOndA=="}, {"format": "mp4-469", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_jrrevruc_1.mp4\r\n"}, {"format": "mp4-669", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_1ia63cq4_1.mp4\r\n"}, {"format": "webm-839", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_9wbsfw7d_1.webm\r\n"}, {"format": "mp4-968", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_qco8ufle_1.mp4\r\n"}, {"format": "mp4-1628", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_gk6zz9vy_1.mp4\r\n"}, {"format": "mp4-2631", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_f6bcq56a_1.mp4\r\n"}, {"format": "mp4-3726", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_ypsl6c95_1.mp4\r\n"}, {"format": "3gp-369", "url": "http://disintlmedia-a.akamaihd.net/emea/kaltura/content/r71v1/entry/data/412/100/1_kmwy2jey_1_4txyt25v_1.3gp\r\n"}] formats := 3gp-369, mp4-469, mp4-669, mp4-968, mp4-1628, mp4-2631, mp4-3726, webm-839, meta, 463, 663, 960, 1608, 2623, 3718 best := 3718 -e "ref:=string-to-base64Binary(concat('http://',$host)), //script/( if (@class) then json(extract(.,'Config = (.+?\});',1,'s')[.])/( pid:=partnerId, eid:=entryId ) else json(extract(.,'burger=(.+):\(',1)[.])/(.//externals)()/( pid:='_'||account, eid:=data_id ) )" -f "concat( 'http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=', $pid, '&2:service=baseentry&2:action=get&2:entryId=', $eid, '&3:service=flavorAsset&3:action=getByEntryId&3:entryId=', $eid )" --xquery "name:=$json(2)/concat( 'Disney - ', name, replace( createdAt * dayTimeDuration('PT1S') + date('1970-01-01'), '(\d+)-(\d+)-(\d+)',' ($3$2$1)' ) ), json:=[ let $a:=concat( substring-before($json(2)/dataUrl,'format'), 'flavorIds/', join($json(3)()[isWeb='true']/id,','), '/format/applehttp/protocol/http?referrer=', $ref ) return ( { 'format':'meta', 'url':system( x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {$a} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"' ) }, tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':uri-decode( replace( extract(.,'(.+m3u8.+)',1), '\+','%2b' ) ) }, $json(3)()/{ 'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate), 'url':system( x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD { concat( $json(2)/dataUrl, '/flavorId/', id, '?referrer=', $ref ) } -e \"if (contains($headers[1]^,''404''^)^) then (^)else $url\"' ) }[url] ) ], let $b:=( for $x in $json()[contains(format,'-')]/format order by $x return $x, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.cartoonnetwork.nl/videos/intro-lied" -f "concat('http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=_',//@data-partner-id,'&2:ks={1:result:ks}&2:service=baseentry&2:action=get&2:entryId=',//@data-video-id,'&3:ks={1:result:ks}&3:service=flavorAsset&3:action=getByEntryId&3:entryId=',//@data-video-id)" --xquery "$json(2)/(name:=concat('Cartoon Network - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),durl:=concat(substring-before(downloadUrl,'raw'),'playManifest/entryId/',id)),json:=[let $a:=concat($durl,'/flavorIds/',join($json(3)()[isWeb='true']/id,','),'/format/applehttp/protocol/http/a.m3u8') return if (unparsed-text-available($a)) then ({'format':'meta','url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {$a} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':uri-decode(replace(extract(.,'(.+m3u8.+)',1),'\+','%2b'))}) else (),$json(3)()/{'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate),'url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {concat($durl,'/flavorId/',id,'/format/url/protocol/http/a.',fileExt)} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')}[url]],let $b:=(for $x in $json()[contains(format,'-')]/format order by $x return $x,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" name := Cartoon Network - OTGW - Intro Song - NL (27102015) durl := http://cdnbakmi.kaltura.com/p/1745101/sp/174510100/playManifest/entryId/1_wcq8svyb json := [{"format": "mp4-source", "url": "http://cfvod.kaltura.com/pd/p/1745101/sp/174510100/serveFlavor/entryId/1_wcq8svyb/v/11/flavorId/1_vmo6w5me/name/a.mp4\r\n"}, {"format": "mp4-468", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_4yxhgjqf_1.mp4\r\n"}, {"format": "mp4-665", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_hrfcq5kv_1.mp4\r\n"}, {"format": "mp4-808", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_157xchqy_1.mp4\r\n"}, {"format": "mp4-1410", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_t1sgf7sq_1.mp4\r\n"}, {"format": "mp4-2297", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_y4zh6jf7_1.mp4\r\n"}, {"format": "mp4-3805", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_7vssax6s_1.mp4\r\n"}] formats := mp4-468, mp4-665, mp4-808, mp4-1410, mp4-2297, mp4-3805, mp4-source best := mp4-source xidel-0.9.5.4998.exe -s --color=never "http://www.cartoonnetwork.nl/videos/intro-lied" -f "concat('http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=_',//@data-partner-id,'&2:ks={1:result:ks}&2:service=baseentry&2:action=get&2:entryId=',//@data-video-id,'&3:ks={1:result:ks}&3:service=flavorAsset&3:action=getByEntryId&3:entryId=',//@data-video-id)" --xquery "name:=$json(2)/concat('Cartoon Network - ',name,replace(createdAt * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),json:=[$json(3)()/{'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate),'url':system(x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD {concat(substring-before($json(2)/downloadUrl,'raw'),'playManifest/entryId/',$json(2)/id,'/flavorId/',id,'/format/url/protocol/http/a.',fileExt)} -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"')}[url]],let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()])" name := Cartoon Network - OTGW - Intro Song - NL (27102015) json := [{"format": "mp4-source", "url": "http://cfvod.kaltura.com/pd/p/1745101/sp/174510100/serveFlavor/entryId/1_wcq8svyb/v/11/flavorId/1_vmo6w5me/name/a.mp4\r\n"}, {"format": "mp4-468", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_4yxhgjqf_1.mp4\r\n"}, {"format": "mp4-665", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_hrfcq5kv_1.mp4\r\n"}, {"format": "mp4-808", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_157xchqy_1.mp4\r\n"}, {"format": "mp4-1410", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_t1sgf7sq_1.mp4\r\n"}, {"format": "mp4-2297", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_y4zh6jf7_1.mp4\r\n"}, {"format": "mp4-3805", "url": "http://ht.cdn.turner.com/tbseurope/big/CN3.0/20151027/1745/1_wcq8svyb_1_7vssax6s_1.mp4\r\n"}] formats := mp4-468, mp4-665, mp4-808, mp4-1410, mp4-2297, mp4-3805, mp4-source best := mp4-source -f "concat( 'http://cdnapi.kaltura.com/api_v3/index.php?service=multirequest&format=1&1:service=session&1:action=startWidgetSession&1:widgetId=_', //@data-partner-id, '&2:ks={1:result:ks}&2:service=baseentry&2:action=get&2:entryId=', //@data-video-id, '&3:ks={1:result:ks}&3:service=flavorAsset&3:action=getByEntryId&3:entryId=', //@data-video-id )" --xquery "name:=$json(2)/concat( 'Cartoon Network - ', name, replace( createdAt * dayTimeDuration('PT1S') + date('1970-01-01'), '(\d+)-(\d+)-(\d+)',' ($3$2$1)' ) ), json:=[ $json(3)()/{ 'format':if (isOriginal='true') then 'mp4-source' else concat(fileExt,'-',bitrate), 'url':system( x'xidel-0.9.5.4998.exe --error-handling=4xx=accept --method=HEAD { concat( substring-before($json(2)/downloadUrl,'raw'), 'playManifest/entryId/', $json(2)/id, '/flavorId/', id, '/format/url/protocol/http/a.', fileExt ) } -e \"if (contains($headers[1]^,''404''^)^) then (^) else $url\"' ) }[url] ], let $a:=for $x in $json()/format order by $x return $x return ( formats:=join($a,', '), best:=$a[last()] )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/livestream/npo-nieuws.html" -e "name:=concat(//h1,replace('%date%','.+?(\d+)-(\d+)-(\d+)',' - Livestream ($1$2$3)')),pjson:=serialize-json({'stream':string(//@data-stream)})" -d "{$pjson}" "http://www-ipv4.nos.nl/livestream/resolve/" -f "{'data':substring-before($json/url,'p&callback'),'input-format':'json'}" -f "$json" --xquery "json:=[{'format':'meta','url':substring-before($url,'?')},tail(tokenize($raw,'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.'),extract(.,'(.+m3u8)',1))}],let $a:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()])" name := NPO Nieuws - Livestream (30082016) pjson := {"stream": "/live/npo/thematv/journaal24/journaal24.isml/journaal24.m3u8"} json := [{"format": "meta", "url": "http://195.121.69.236:80/session/2f0cad82-6e34-11e6-932e-9cb65498b840/n62ktb/b2b/live/npo/live/npo/thematv/journaal24/journaal24.isml/journaal24.m3u8"}, {"format": "279", "url": "http://195.121.69.236:80/session/2f0cad82-6e34-11e6-932e-9cb65498b840/n62ktb/b2b/live/npo/live/npo/thematv/journaal24/journaal24.isml/journaal24-audio_1=64000-video=200000.m3u8"}, {"format": "597", "url": "http://195.121.69.236:80/session/2f0cad82-6e34-11e6-932e-9cb65498b840/n62ktb/b2b/live/npo/live/npo/thematv/journaal24/journaal24.isml/journaal24-audio_1=64000-video=500000.m3u8"}, {"format": "809", "url": "http://195.121.69.236:80/session/2f0cad82-6e34-11e6-932e-9cb65498b840/n62ktb/b2b/live/npo/live/npo/thematv/journaal24/journaal24.isml/journaal24-audio_1=64000-video=700000.m3u8"}, {"format": "1127", "url": "http://195.121.69.236:80/session/2f0cad82-6e34-11e6-932e-9cb65498b840/n62ktb/b2b/live/npo/live/npo/thematv/journaal24/journaal24.isml/journaal24-audio_1=64000-video=1000000.m3u8"}] formats := meta, 279, 597, 809, 1127 best := 1127 -e "name:=concat(//h1,replace('%date%','.+?(\d+)-(\d+)-(\d+)',' - Livestream ($1$2$3)')), pjson:=serialize-json({'stream':string(//@data-stream)})" -d "{$pjson}" "http://www-ipv4.nos.nl/livestream/resolve/" -f "{'data':substring-before($json/url,'p&callback'),'input-format':'json'}" -f "$json" --xquery "json:=[ { 'format':'meta', 'url':substring-before($url,'?') }, tail(tokenize($raw,'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.'),extract(.,'(.+m3u8)',1)) } ], let $a:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return ( formats:=join($a,', '), best:=$a[last()] )" -------------------------------------------------------------------------------------------------------------------------------- http://nos.nl/artikel/2129259-nederlands-gasbesluit-kost-belgie-honderden-miljoenen.html (artikel met 1 video) http://nos.nl/video/2129265-gasbesluit-nederland-kost-belgen-honderden-miljoenen.html (1 video) http://nos.nl/artikel/2128692-het-eredivisieweekend-in-vogelvlucht.html (artikel met 1 beveiligde video) http://nos.nl/video/2128675-het-eredivisieweekend-in-vogelvlucht.html (1 beveiligde video) http://nos.nl/artikel/2128751-nabestaanden-tegen-doodrijder-a2-voor-ons-is-geen-straf-te-hoog.html (artikel met 2 losse video's) http://nos.nl/artikel/2128795-van-oostveen-vertrekt-als-directeur-bij-knvb.html (artikel met 2 video's in slide) http://nos.nl/artikel/2128783-net-als-bij-dafne-verwachten-we-ook-veel-van-kiki.html (artikel met 4 beveiligde video's) xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/uitzending/18162-nos-journaal.html" --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/(name:=concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]) else json:=[//div[@class='video-play']/a/doc(@href)/{position()||'e':{'name':concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats'://source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}}}] else (name:=concat('NOS - ',if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]),if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()]) else videos:=join($json()(),', ')" name := NOS - Journaal (29082016) json := [{"format": "mp4-360", "url": "http://download.omroep.nl/nos/content/mp4/web01/2016/08/29/18162/mp4_web01.mp4"}, {"format": "mp4-720", "url": "http://download.omroep.nl/nos/content/mp4/web02/2016/08/29/18162/mp4_web02.mp4"}, {"format": "mp4-480", "url": "http://download.omroep.nl/nos/content/mp4/web03/2016/08/29/18162/mp4_web03.mp4"}] formats := mp4-360, mp4-480, mp4-720 best := mp4-720 xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/artikel/2136609-ankara-wil-journalisten-het-ware-verhaal-vertellen.html" --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/(name:=concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]) else json:=[//div[@class='video-play']/a/doc(@href)/{position()||'e':{'name':concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats'://source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}}}] else (name:=concat('NOS - ',if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]),if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()]) else videos:=join($json()(),', ')" name := NOS - Korte film van de Turkse regering (08102016) json := [{"format": "mp4-360", "url": "http://download.omroep.nl/nos/content/video/2016/10/07/174119/vod01.mp4"}, {"format": "mp4-480", "url": "http://download.omroep.nl/nos/content/video/2016/10/07/174119/web03.mp4"}] formats := mp4-360, mp4-480 best := mp4-480 xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/video/2136610-korte-film-van-de-turkse-regering.html" --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/(name:=concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]) else json:=[//div[@class='video-play']/a/doc(@href)/{position()||'e':{'name':concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats'://source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}}}] else (name:=concat('NOS - ',if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]),if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()]) else videos:=join($json()(),', ')" name := NOS - Korte film van de Turkse regering (08102016) json := [{"format": "mp4-360", "url": "http://download.omroep.nl/nos/content/video/2016/10/07/174119/vod01.mp4"}, {"format": "mp4-480", "url": "http://download.omroep.nl/nos/content/video/2016/10/07/174119/web03.mp4"}] formats := mp4-360, mp4-480 best := mp4-480 xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/artikel/2128795-van-oostveen-vertrekt-als-directeur-bij-knvb.html" --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/(name:=concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]) else json:=[//div[@class='video-play']/a/doc(@href)/{position()||'e':{'name':concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats'://source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}}}] else (name:=concat('NOS - ',if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]),if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()]) else videos:=join($json()(),', ')" json := [{"1e": {"name": "NOS - 2015: Van Oostveen geeft aan Hiddink te willen behouden voor KNVB (29082016)", "formats": [{"format": "mp4-360", "url": "http://download.omroep.nl/nos/content/video/2015/07/14/120145/vod01.mp4"}, {"format": "mp4-480", "url": "http://download.omroep.nl/nos/content/video/2015/07/14/120145/web03.mp4"}]}}, {"2e": {"name": "NOS - ''KNVB stapelt fout op fout'' (21082016)", "formats": [{"format": "mp4-360", "url": "http://download.omroep.nl/nos/content/video/2016/08/21/171068/vod01.mp4"}, {"format": "mp4-480", "url": "http://download.omroep.nl/nos/content/video/2016/08/21/171068/web03.mp4"}]}}] videos := 1e, 2e xidel-0.9.5.4998.exe -s --color=never "http://nos.nl/artikel/2128783-net-als-bij-dafne-verwachten-we-ook-veel-van-kiki.html" --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/(name:=concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]) else json:=[//div[@class='video-play']/a/doc(@href)/{position()||'e':{'name':concat('NOS - ',replace(//meta[@property='og:title']/@content,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats'://source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}}}] else (name:=concat('NOS - ',if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[//source/{'format':replace(@data-label,'.+?(\d+).','mp4-$1'),'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src}]),if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()]) else videos:=join($json()(),', ')" json := [{"1e": {"name": "NOS - Bertens niet opgewassen tegen Halep (02072016)", "formats": [{"formt": "mp4-360", "url": "http://video.omroep.nl/secure/5ed999fd4a6e727199582660419824ff/57f90de3/nos/content-ip/video/2016/07/02/166777/vod01.mp4\r\n"}, {"format": "mp4-480", "url": "http://video.omroep.nl/secure/3633dca7a9ed3f49acebabb699f89df7/57f90de4/nos/content-ip/video/2016/07/02/166777/web03.mp4\r\n"}]}}, {"2e": {"name": "NOS - Bertens komt net tekort voor titel in Gstaad (17072016)", "formats": [{"format": "mp4-360", "url": "http://video.omroep.nl/secure/e43e763faf7f4597645b4a28a2c34470/57f90de4/nos/content-ip/video/2016/07/17/168011/vod01.mp4\r\n"}, {"format": "mp4-480", "url": "http://video.omroep.nl/secure/f282c497917959e1d7b6b76c28d45fc4/57f90de4/nos/content-ip/video/2016/07/17/168011/web03.mp4\r\n"}]}}, {"3e": {"name": "NOS - Bertens in eerste ronde Rio onderuit (06082016)", "formats": [{"format": "mp4-360", "url": "http://video.omroep.nl/secure/33c5a151d617dea268f4b0c8c68418ea/57f90de4/nos/content-ip/video/2016/08/06/169289/vod01.mp4\r\n"}, {"format": "mp4-480", "url": "http://video.omroep.nl/secure/0acdc7c7ddd2f42acf9458d1e8078044/57f90de5/nos/content-ip/video/2016/08/06/169289/web03.mp4\r\n"}]}}, {"4e": {"name": "NOS - Bertens na snelle exit: zware omstandigheden (06082016)", "formats": [{"format": "mp4-360", "url": "http://video.omroep.nl/secure/46e124badcdb8497b9d3588cb0c039f4/57f90de5/nos/content-ip/video/2016/08/06/169295/vod01.mp4\r\n"}, {"format": "mp4-480", "url": "http://video.omroep.nl/secure/acf41c7cb263997d1838e5c608e5f2b9/57f90de5/nos/content-ip/video/2016/08/06/169295/web03.mp4\r\n"}]}}] videos := 1e, 2e, 3e, 4e --xquery "if (//div[@class='video-play']) then if (count(//div[@class='video-play'])=1) then doc(//div[@class='video-play']/a/@href)/( name:=concat( 'NOS - ', replace(//meta[@property='og:title']/@content,'["']',''''''), replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), json:=[ //source/{ 'format':replace(@data-label,'.+?(\d+).','mp4-$1'), 'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src } ] ) else json:=[ //div[@class='video-play']/a/doc(@href)/{ position()||'e':{ 'name':concat( 'NOS - ', replace(//meta[@property='og:title']/@content,'["']',''''''), replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), 'formats'://source/{ 'format':replace(@data-label,'.+?(\d+).','mp4-$1'), 'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src } } } ] else ( name:=concat( 'NOS - ', if (//meta[@property='og:title']) then replace(//meta[@property='og:title']/@content,'["']','''''') else substring-after(//h1,'NOS '), replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), json:=[ //source/{ 'format':replace(@data-label,'.+?(\d+).','mp4-$1'), 'url':if (contains(@src,'content-ip')) then system(x'xidel-0.9.5.4998.exe -d \"[{{{{\\\"file\\\":\\\"{@src}\\\"}}}}]\" \"http://nos.nl/video/resolve/\" -e \"$json(^)/file\"') else @src } ] ), if ($json(1)/format) then let $a:=for $x in $json()/format order by $x return $x return ( formats:=join($a,', '), best:=$a[last()] ) else videos:=join($json()(),', ')" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.eenvandaag.nl/broadcast/5277" --xquery "prid:=//script/extract(.,'prid: \"(.+)\"',1)[.],if (not(contains($url,'broadcast'))) then (name:=concat('EenVandaag - ',replace(//meta[@name='twitter:title']/@content,'["']',''''''),replace(//meta[@name='twitter:player:stream']/@content,'.+std\.(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')),//script/json(extract(.,'options:(.+?\})',1,'s'))/(ss:=startAt,to:=endAt,t:=($to)-($ss)),pubopties:=json(extract(unparsed-text(concat('http://e.omroep.nl/metadata/',$prid)),'\((.+)\)',1))/pubopties) else ()" prid := AT_2055254 xidel-0.9.5.4998.exe -s --color=never "http://binnenland.eenvandaag.nl/tv-items/69703/weer_ophef_over_financi_n_koningshuis" --xquery "prid:=//script/extract(.,'prid: \"(.+)\"',1)[.],if (not(contains($url,'broadcast'))) then (name:=concat('EenVandaag - ',replace(//meta[@name='twitter:title']/@content,'["']',''''''),replace(//meta[@name='twitter:player:stream']/@content,'.+std\.(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')),//script/json(extract(.,'options: (.+?\})',1,'s'))/(ss:=startAt,to:=endAt,t:=($to)-($ss)),pubopties:=json(extract(unparsed-text(concat('http://e.omroep.nl/metadata/',$prid)),'\((.+)\)',1))/pubopties) else ()" prid := AT_2055254 name := EenVandaag - Weer ophef over financiën koningshuis (11102016) ss := 33 to := 321 t := 288 pubopties := ["adaptive", "h264_bb", "h264_sb", "h264_std"] --xquery "prid:=//script/extract(.,'prid: \"(.+)\"',1)[.], if (not(contains($url,'broadcast'))) then ( name:=concat( 'EenVandaag - ', replace(//meta[@name='twitter:title']/@content,'["']',''''''), replace(//meta[@name='twitter:player:stream']/@content,'.+std\.(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)') ), //script/json(extract(.,'options: (.+?\})',1,'s'))/( ss:=startAt, to:=endAt, t:=($to)-($ss) ), pubopties:=json(extract(unparsed-text(concat('http://e.omroep.nl/metadata/',$prid)),'\((.+)\)',1))/pubopties ) else ()" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "https://collegerama.tudelft.nl/Mediasite/Play/585a43626e544bdd97aeb71a0ec907a01d" -e "pjson:=serialize-json({'getPlayerOptionsRequest':{'ResourceId':extract($url,'.+/([\da-z]+)',1),'QueryString':''}})" -H "Content-Type: application/json" -d "{$pjson}" "https://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions" -e "$json/(name:=concat('Collegerama TU Delft - ',join(.//Presenters/Name,', '),' - ',.//Title,' (',join(tokenize(.//AirDate,'-') ! (if (.<10) then '0'||. else .),''),')'),if (count((.//VideoUrls)()[MediaType!='SS'])=1) then _url:=(.//VideoUrls)()[MediaType!='SS']/Location else (json:=[(.//VideoUrls)()[MediaType!='SS']/{'format':if (position()=1) then 'slides' else lower-case(MediaType),'url':Location}],formats:=join($json()/format,', '),best:=$json()[last()]/format))" --output-encoding=oem pjson := {"getPlayerOptionsRequest": {"ResourceId": "585a43626e544bdd97aeb71a0ec907a01d", "QueryString": ""}} name := Collegerama TU Delft - H. Wijffels - Een nieuwe wereld: waarden, bewustzijn en techniek van de mensheid 2.0. (14102014) _url := https://collegerama-vs-stream-v6.tudelft.net/SmoothStreaming7/mp4/6775a61b-03df-418b-8fe0-f133cd90385c.mp4?playbackTicket=bacb6d57122b4c5980da8d00417863e0&site=collegerama.tudelft.nl xidel-0.9.5.4998.exe -s --color=never "https://collegerama.tudelft.nl/Mediasite/Play/585a43626e544bdd97aeb71a0ec907a01d" -e "pjson:=serialize-json({'getPlayerOptionsRequest':{'ResourceId':extract($url,'.+/([\da-z]+)',1),'QueryString':''}})" -H "Content-Type: application/json" -d "{$pjson}" "https://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions" -e "$json/(name:=concat('Collegerama TU Delft - ',join(.//Presenters/Name,', '),' - ',.//Title,' (',join(tokenize(.//AirDate,'-') ! (if (.<10) then '0'||. else .),''),')'),if (count((.//VideoUrls)()[MediaType!='SS'])=1) then _url:=(.//VideoUrls)()[MediaType!='SS']/Location else (json:=[(.//VideoUrls)()[MediaType!='SS']/{'format':if (position()=1) then 'slides' else lower-case(MediaType),'url':Location}],formats:=join($json()/format,', '),best:=$json()[last()]/format))" --output-encoding=oem pjson := {"getPlayerOptionsRequest": {"ResourceId": "d24d0dada455417eb5ca910c11c9de3a1d", "QueryString": ""}} name := Collegerama TU Delft - D. Wäppling - 102 - Industrial Robotics (14102015) _url := https://collegerama-vs-stream-v6.tudelft.net/SmoothStreaming7/mp4/ae29c1d9-2ffb-4f19-9250-eb57cb2caf9a.mp4?playbackTicket=32ad0e185ba34033800f9102ab8c0ebd&site=collegerama.tudelft.nl xidel-0.9.5.4998.exe -s --color=never "https://collegerama.tudelft.nl/Mediasite/Play/8e012ef46d244c9899502a94304a503f1d?playfrom=0&player=50a54cab1d3541bc913f556ea1b6df590a" -e "pjson:=serialize-json({'getPlayerOptionsRequest':{'ResourceId':extract($url,'.+/([\da-z]+)',1),'QueryString':''}})" -H "Content-Type: application/json" -d "{$pjson}" "https://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions" -e "$json/(name:=concat('Collegerama TU Delft - ',join(.//Presenters/Name,', '),' - ',.//Title,' (',join(tokenize(.//AirDate,'-') ! (if (.<10) then '0'||. else .),''),')'),if (count((.//VideoUrls)()[MediaType!='SS'])=1) then _url:=(.//VideoUrls)()[MediaType!='SS']/Location else (json:=[(.//VideoUrls)()[MediaType!='SS']/{'format':if (position()=1) then 'slides' else lower-case(MediaType),'url':Location}],formats:=join($json()/format,', '),best:=$json()[last()]/format))" --output-encoding=oem pjson := {"getPlayerOptionsRequest": {"ResourceId": "8e012ef46d244c9899502a94304a503f1d", "QueryString": ""}} name := Collegerama TU Delft - A. de Fockert - Ocean Energy at Deltares (27062016) json := [{"format": "slides", "url": "https://collegerama-vs-stream-v6.tudelft.net/SmoothStreaming7/mp4/bfa72a60-ce0f-4e28-b78d-278d95b43aaf.mp4?playbackTicket=ac3d8c6aced84bce90235ca89a6c69b0&site=collegerama.tudelft.nl"}, {"format": "mp4", "url": "https://collegerama-vs-stream-v6.tudelft.net/SmoothStreaming7/mp4/8baeb890-ce58-44b0-9167-42858a725cc7.mp4?playbackTicket=ac3d8c6aced84bce90235ca89a6c69b0&site=collegerama.tudelft.nl"}] formats := slides, mp4 best := mp4 -e "pjson:=serialize-json( { 'getPlayerOptionsRequest':{ 'ResourceId':extract($url,'.+/([\da-z]+)',1), 'QueryString':'' } } )" -H "Content-Type: application/json" -d "{$pjson}" "https://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions" -e "$json/( name:=concat( 'Collegerama TU Delft - ', join(.//Presenters/Name,', '), ' - ', .//Title, ' (', join( tokenize(.//AirDate,'-') ! ( if (.<10) then '0'||. else . ), '' ), ')' ), if (count((.//VideoUrls)()[MediaType!='SS'])=1) then _url:=(.//VideoUrls)()[MediaType!='SS']/Location else ( json:=[ (.//VideoUrls)()[MediaType!='SS']/{ 'format':if (position()=1) then 'slides' else lower-case(MediaType), 'url':Location } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.foxsports.nl/meer-sport/video/ufc-vancouver-rawlings-vanzandt/" -f "concat('http://www.foxsports.nl/videodata/',//@data-videoid,'.xml')" -e "name:=concat('FOX Sports - ',//title,replace(//publicationDate,'(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)'))" -f "//videoSource[@format='HLS']/uri" --xquery "json:=[{'format':'meta','url':$url},tail(tokenize($raw,'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.'),extract(.,'(.+m3u8)',1))}],let $a:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($a,', '),best:=$a[last()])" name := FOX Sports - UFC Vancouver - Rawlings vs. VanZant (28082016) json := [{"format": "meta", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/playlist.m3u8"}, {"format": "4000", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/chunklist_w969443784_b4000000.m3u8"}, {"format": "2500", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/chunklist_w969443784_b2500000.m3u8"}, {"format": "1500", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/chunklist_w969443784_b1500000.m3u8"}, {"format": "1000", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/chunklist_w969443784_b1000000.m3u8"}, {"format": "750", "url": "http://lb-fox-vod.streamgate.nl/vod/_definst_/content1/fox/geo_nl/Endemol/2016/08/28/UFC_Vancouver_Rawlings-VanZandt_201608280126514783_HLS.smil/chunklist_w969443784_b750000.m3u8"}] formats := meta, 750, 1000, 1500, 2500, 4000 best := 4000 -f "concat( 'http://www.foxsports.nl/videodata/', //@data-videoid, '.xml' )" -e "name:=concat( 'FOX Sports - ', //title, replace(//publicationDate,'(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)') )" -f "//videoSource[@format='HLS']/uri" --xquery "json:=[ { 'format':'meta', 'url':$url }, tail(tokenize($raw,'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.'),extract(.,'(.+m3u8)',1)) } ], let $a:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return ( formats:=join($a,', '), best:=$a[last()] )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never --method=POST "https://tweakers.net/video/player/12913/pokemon-go-videoreport-brak-onvolledig-maar-mateloos-populair.html?width=620&height=349&zone=3" --xquery "if (//iframe) then let $a:=replace(//span[@itemprop='datePublished']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return if (count(//iframe)=1) then json(doc(substring-before(//iframe/@src,'?'))//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1],$a),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]) else json:=[//iframe/doc(substring-before(./@src,'?'))/{position()||'e':json(//script/extract(.,',(\{.+)\)',1)[.])/{'name':concat('Tweakers - ',(.//title)[1],$a),'formats':(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}}}] else json(//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1]),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]),if ($json(1)/format) then let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()]) else videos:=join($json()(),', ')" --output-encoding=oem name := Tweakers - Pokémon Go Videoreport - Brak, onvolledig, maar mateloos populair json := [{"format": "mp4-1080", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=giku26yQE8kk/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-720", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=kR8n_4yCX1IA/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-360", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=gj0u_6GCH4Ak/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-270", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=Eg9v_4iAV9gE/mZ8m2MgCW5Ek.mp4"}] formats := mp4-270, mp4-360, mp4-720, mp4-1080 best := mp4-1080 xidel-0.9.5.4998.exe -s --color=never --method=POST "https://tweakers.net/reviews/4841/f1-2016-veel-racen-weinig-simulatie.html" --xquery "if (//iframe) then let $a:=replace(//span[@itemprop='datePublished']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return if (count(//iframe)=1) then json(doc(substring-before(//iframe/@src,'?'))//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1],$a),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]) else json:=[//iframe/doc(substring-before(./@src,'?'))/{position()||'e':json(//script/extract(.,',(\{.+)\)',1)[.])/{'name':concat('Tweakers - ',(.//title)[1],$a),'formats':(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}}}] else json(//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1]),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]),if ($json(1)/format) then let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()]) else videos:=join($json()(),', ')" --output-encoding=oem name := Tweakers - Gameplay F1 2016 - Een race op het legendarische Spa Francorchamps (28082016) json := [{"format": "mp4-1080", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=ZY0u6-lZ4csk/file=7K8m3YXJz5Ek/ZY0u6-lZ4csk.mp4"}, {"format": "mp4-720", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=ZY0u6-lZ4csk/file=bosm3uHZhgsA/ZY0u6-lZ4csk.mp4"}, {"format": "mp4-360", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=ZY0u6-lZ4csk/file=ZLkm6MBJ4xAg/ZY0u6-lZ4csk.mp4"}, {"format": "mp4-270", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=ZY0u6-lZ4csk/file=5olmzIxL6pAg/ZY0u6-lZ4csk.mp4"}] formats := mp4-270, mp4-360, mp4-720, mp4-1080 best := mp4-1080 xidel-0.9.5.4998.exe -s --color=never --method=POST "https://tweakers.net/reviews/4743/pokemon-go-brak-en-onvolledig-maar-mateloos-populair.html" --xquery "if (//iframe) then let $a:=replace(//span[@itemprop='datePublished']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return if (count(//iframe)=1) then json(doc(substring-before(//iframe/@src,'?'))//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1],$a),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]) else json:=[//iframe/doc(substring-before(./@src,'?'))/{position()||'e':json(//script/extract(.,',(\{.+)\)',1)[.])/{'name':concat('Tweakers - ',(.//title)[1],$a),'formats':(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}}}] else json(//script/extract(.,',(\{.+)\)',1)[.])/(name:=concat('Tweakers - ',(.//title)[1]),json:=[(.//progressive)()/{'format':concat('mp4-',height),'url':(sources)()/src}]),if ($json(1)/format) then let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()]) else videos:=join($json()(),', ')" --output-encoding=oem json := [{"1e": {"name": "Tweakers - Pokémon Go Videoreport - Brak, onvolledig, maar mateloos populair (16072016)", "formats": [{"format": "mp4-1080", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=giku26yQE8kk/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-720", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=kR8n_4yCX1IA/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-360", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=gj0u_6GCH4Ak/mZ8m2MgCW5Ek.mp4"}, {"format": "mp4-270", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=mZ8m2MgCW5Ek/file=Eg9v_4iAV9gE/mZ8m2MgCW5Ek.mp4"}]}}, {"2e": {"name": "Tweakers - Pokémon Go-trailer brengt franchise naar augmented reality (16072016)", "formats": [{"format": "mp4-1080", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=_hsGu-ZI2pkw/file=uZxDy-DBfsgi/_hsGu-ZI2pkw.mp4"}, {"format": "mp4-720", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=_hsGu-ZI2pkw/file=hy5DF6nBzEMm/_hsGu-ZI2pkw.mp4"}, {"format": "mp4-360", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=_hsGu-ZI2pkw/file=fo1Hm-LY20EU/_hsGu-ZI2pkw.mp4"}, {"format": "mp4-270", "url": "https://media.tweakers.tv/progressive/account=s7JeEm/item=_hsGu-ZI2pkw/file=fr8Pu8fIklMU/_hsGu-ZI2pkw.mp4"}]}}] videos := 1e, 2e --xquery "if (//iframe) then let $a:=replace(//span[@itemprop='datePublished']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return if (count(//iframe)=1) then json(doc(substring-before(//iframe/@src,'?'))//script/extract(.,',(\{.+)\)',1)[.])/( name:=concat('Tweakers - ',(.//title)[1],$a), json:=[ (.//progressive)()/{ 'format':concat('mp4-',height), 'url':(sources)()/src } ] ) else json:=[ //iframe/doc(substring-before(./@src,'?'))/{ position()||'e':json(//script/extract(.,',(\{.+)\)',1)[.])/{ 'name':concat('Tweakers - ',(.//title)[1],$a), 'formats':(.//progressive)()/{ 'format':concat('mp4-',height), 'url':(sources)()/src } } } ] else json(//script/extract(.,',(\{.+)\)',1)[.])/( name:=concat('Tweakers - ',(.//title)[1]), json:=[ (.//progressive)()/{ 'format':concat('mp4-',height), 'url':(sources)()/src } ] ), if ($json(1)/format) then let $b:=for $x in $json()/format order by $x return $x return ( formats:=join($b,', '), best:=$b[last()] ) else videos:=join($json()(),', ')" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never -H "Cookie: nsfw=1;cpc=10" --user-agent "BatchGemist 1.5" "http://www.dumpert.nl/mediabase/6678198/4301bfad/goud._dafne_schippers_wint_200m_bejing_.html" --xquery "let $a:=json(if (//@data-files) then binary-to-string(base64Binary(//div/@data-files)) else //script/extract(.,'(\{.+\}),',1)[.]) return if ($a/embed) then _url:=replace($a/embed,'youtube:','https://youtu.be/') else (name:=concat('Dumpert - ',//meta[@name='title']/@content),json:=[$a()[.!='still'] ! {'format':.,'url':$a(.)}],let $b:=(for $x in $json()[format!='720p']/format order by $x return $x,$json()[format='720p']/format) return (formats:=join($b,', '),best:=$b[last()]))" name := Dumpert - GOUD. Dafne Schippers wint 200m Bejing! json := [{"format": "flv", "url": "http://media.dumpert.nl/flv/4301bfad_schippers.mp4.mp4.flv"}, {"format": "tablet", "url": "http://media.dumpert.nl/tablet/4301bfad_schippers.mp4.mp4.mp4"}, {"format": "mobile", "url": "http://media.dumpert.nl/mobile/4301bfad_schippers.mp4.mp4.mp4"}, {"format": "720p", "url": "http://media.dumpert.nl/720p/4301bfad_schippers.mp4.mp4.mp4"}] formats := flv, mobile, tablet, 720p best := 720p xidel-0.9.5.4998.exe -s --color=never -H "Cookie: nsfw=1;cpc=10" --user-agent "BatchGemist 1.5" "http://www.dumpert.nl/embed/6678198/4301bfad/" --xquery "let $a:=json(if (//@data-files) then binary-to-string(base64Binary(//div/@data-files)) else //script/extract(.,'(\{.+\}),',1)[.]) return if ($a/embed) then _url:=replace($a/embed,'youtube:','https://youtu.be/') else (name:=concat('Dumpert - ',//meta[@name='title']/@content),json:=[$a()[.!='still'] ! {'format':.,'url':$a(.)}],let $b:=(for $x in $json()[format!='720p']/format order by $x return $x,$json()[format='720p']/format) return (formats:=join($b,', '),best:=$b[last()]))" name := Dumpert - GOUD. Dafne Schippers wint 200m Bejing! json := [{"format": "flv", "url": "http://media.dumpert.nl/flv/4301bfad_schippers.mp4.mp4.flv"}, {"format": "tablet", "url": "http://media.dumpert.nl/tablet/4301bfad_schippers.mp4.mp4.mp4"}, {"format": "mobile", "url": "http://media.dumpert.nl/mobile/4301bfad_schippers.mp4.mp4.mp4"}, {"format": "720p", "url": "http://media.dumpert.nl/720p/4301bfad_schippers.mp4.mp4.mp4"}] formats := flv, mobile, tablet, 720p best := 720p xidel-0.9.5.4998.exe -s --color=never -H "Cookie: nsfw=1;cpc=10" --user-agent "BatchGemist 1.5" "http://www.dumpert.nl/mediabase/6828451/3eb28cf2/auto_vast_in_de_tunnel_.html" --xquery "let $a:=json(if (//@data-files) then binary-to-string(base64Binary(//div/@data-files)) else //script/extract(.,'(\{.+\}),',1)[.]) return if ($a/embed) then _url:=replace($a/embed,'youtube:','https://youtu.be/') else (name:=concat('Dumpert - ',//meta[@name='title']/@content),json:=[$a()[.!='still'] ! {'format':.,'url':$a(.)}],let $b:=(for $x in $json()[format!='720p']/format order by $x return $x,$json()[format='720p']/format) return (formats:=join($b,', '),best:=$b[last()]))" _url := https://youtu.be/C629x8UVwPU --xquery "let $a:=json( if (//@data-files) then binary-to-string(base64Binary(//div/@data-files)) else //script/extract(.,'(\{.+\}),',1)[.] ) return if ($a/embed) then _url:=replace($a/embed,'youtube:','https://youtu.be/') else ( name:=concat('Dumpert - ',//meta[@name='title']/@content), json:=[ $a()[.!='still'] ! { 'format':., 'url':$a(.) } ], let $b:=(for $x in $json()[format!='720p']/format order by $x return $x,$json()[format='720p']/format) return ( formats:=join($b,', '), best:=$b[last()] ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.24kitchen.nl/recepten/tilburgse-beenham-met-kruidenbittersaus" -e "name:=concat('24Kitchen - ',//h1[@class='fn title'])" -f "extract($raw,'tp:releaseUrl=\"(.+^)\"',1)" --xquery "json:=[//video/{'format':concat('mp4-',@system-bitrate idiv 1000),'url':@src}],let $a:=for $x in $json()/format order by $x return $x return (formats:=join($a,', '),best:=$a[last()])" name := 24Kitchen - Tilburgse beenham met kruidenbittersaus json := [{"format": "mp4-1801", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_1280x760_1672k_25fps.mp4"}, {"format": "mp4-1211", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_720x406_1072k_25fps.mp4"}, {"format": "mp4-784", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_640x360_704k_25fps.mp4"}, {"format": "mp4-520", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_480x270_448k_25fps.mp4"}, {"format": "mp4-336", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_400x226_260k.mp4"}, {"format": "mp4-148", "url": "http://mpx.fichub.com/FIC_24kitchen_NL/907/655/FTC_S20009_-_Tilburgse_beenham_met_kruidenbittersaus_400x226_110k.mp4"}] formats := mp4-148, mp4-336, mp4-520, mp4-784, mp4-1211, mp4-1801 best := mp4-1801 -e "name:=concat('24Kitchen - ',//h1[@class='fn title'])" -f "extract($raw,'tp:releaseUrl=\"(.+^)\"',1)" --xquery "json:=[ //video/{ 'format':concat('mp4-',@system-bitrate idiv 1000), 'url':@src } ], let $a:=for $x in $json()/format order by $x return $x return ( formats:=join($a,', '),best:=$a[last()] )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "https://www.ketnet.be/kijken/tik-tak" --xquery "let $a:=replace(//script/extract(.,'= new Date\((.+?)\);',1)[.] div 1000 * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)') return json(//script/extract(.,'playerConfig = (.+\})',1)[.])/(if (unparsed-text-available(.//hls)) then (name:=concat('Ketnet - ',title,$a),let $b:=.//hls return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}],let $c:=($json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else ())" name := Ketnet - Tik tak: Aflevering 250 (02102016) json := [{"format": "meta", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/playlist.m3u8"}, {"format": "1296", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/chunklist_w159731986_b1296000_slnl.m3u8"}, {"format": "664", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/chunklist_w159731986_b664000_slnl.m3u8"}, {"format": "464", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/chunklist_w159731986_b464000_slnl.m3u8"}, {"format": "264", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/chunklist_w159731986_b264000_slnl.m3u8"}, {"format": "64", "url": "http://vod.stream.vrt.be/mediazone_ketnet/_definst_/smil:2016/06/mz-ast-110fa7e7-7e59-4f55-8f34-bc98350231d4/video.smil/chunklist_w159731986_b64000_ao.m3u8"}] formats := meta, 64, 264, 464, 664, 1296 best := 1296 xidel-0.9.5.4998.exe -s --color=never "https://www.ketnet.be/kijken/piet-piraat" --xquery "let $a:=replace(//script/extract(.,'= new Date\((.+?)\);',1)[.] div 1000 * dayTimeDuration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)') return json(//script/extract(.,'playerConfig = (.+\})',1)[.])/(if (unparsed-text-available(.//hls)) then (name:=concat('Ketnet - ',title,$a),let $b:=.//hls return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}],let $c:=($json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else ())" --xquery "let $a:=replace( //script/extract(.,'= new Date\((.+?)\);',1)[.] div 1000 * dayTimeDuration('PT1S') + date('1970-01-01'), '(\d+)-(\d+)-(\d+)', ' ($3$2$1)' ) return json(//script/extract(.,'playerConfig = (.+\})',1)[.])/( if (unparsed-text-available(.//hls)) then ( name:=concat('Ketnet - ',title,$a), let $b:=.//hls return json:=[ { 'format':'meta', 'url':$b }, tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1)) } ], let $c:=( $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($c,', '), best:=$c[last()] ) ) else () )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.telegraaf.nl/tv/opmerkelijk/26538545/__Spectaculaire_beelden_van_lawine__.html" -e "name:=concat('Telegraaf - ',//h2,replace(//script/extract(.,'getPubDate.+?(\d+)',1,'s')[.],'(\d{4})(\d{2})(\d{2})',' ($3$2$1)'))" -f "//iframe/@src" -f "//script/extract(.,'playlist: \"(.+^)\"',1)[.]" --xquery "json:=$json//locations/[let $a:=(adaptive)(2)/src return ({'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}),(progressive)()/{'format':concat('mp4-',height),'url':.//src}],let $b:=(for $x in $json()[contains(format,'mp4')]/format order by $x return $x,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" name := Telegraaf - Spectaculaire beelden van lawine (04092016) json := [{"format": "meta", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/nStoMqVT_tol.m3u8"}, {"format": "408", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=64000-video=320000.m3u8"}, {"format": "692", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=128000-video=524000.m3u8"}, {"format": "1196", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=128000-video=1000000.m3u8"}, {"format": "2468", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=128000-video=2200000.m3u8"}, {"format": "68", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=64000.m3u8"}, {"format": "136", "url": "http://media.tmgvideo.nl/hls/account=Kx1PKc/item=nStoMqVT_tol/H7koEqBDv9Mh-HbkhMqTT95IB-HbkoNoRDttoh-j7sgEoBBvpol-audio=128000.m3u8"}, {"format": "mp4-720", "url": "http://media.tmgvideo.nl/progressive/account=Kx1PKc/item=nStoMqVT_tol/file=Dh8pFa1R95Il/nStoMqVT_tol.mp4"}, {"format": "mp4-480", "url": "http://media.tmgvideo.nl/progressive/account=Kx1PKc/item=nStoMqVT_tol/file=nA8hMa3DvpoF/nStoMqVT_tol.mp4"}, {"format": "mp4-360", "url": "http://media.tmgvideo.nl/progressive/account=Kx1PKc/item=nStoMqVT_tol/file=jBlpNYBR9oEB/nStoMqVT_tol.mp4"}, {"format": "mp4-270", "url": "http://media.tmgvideo.nl/progressive/account=Kx1PKc/item=nStoMqVT_tol/file=HglpEYTD_4AB/nStoMqVT_tol.mp4"}] formats := mp4-270, mp4-360, mp4-480, mp4-720, meta, 68, 136, 408, 692, 1196, 2468 best := 2468 -e "name:=concat( 'Telegraaf - ', //h2, replace(//script/extract(.,'getPubDate.+?(\d+)',1,'s')[.],'(\d{4})(\d{2})(\d{2})',' ($3$2$1)') )" -f "//iframe/@src" -f "//script/extract(.,'playlist: \"(.+^)\"',1)[.]" --xquery "json:=$json//locations/[ let $a:=(adaptive)(2)/src return ( { 'format':'meta', 'url':$a }, tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1)) } ), (progressive)()/{ 'format':concat('mp4-',height), 'url':.//src } ], let $b:=( for $x in $json()[contains(format,'mp4')]/format order by $x return $x, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.nickelodeon.nl/shows/1397-totally-spies/videos/43777-vakantie" -e "let $a:=//meta[@itemprop='name']/@content return doc(//@data-mrss)/(name:=concat('Nickelodeon - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[doc(//media:content/@url)//rendition/{'format':concat('mp4-',@bitrate),'url':src}]),formats:=join($json()/format,', '),best:=$json()[last()]/format" name := Nickelodeon - Totally Spies - Vakantie (23122014) json := [{"format": "mp4-160", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/12/23/8006f39c68bda893197a244da858e22b/mp4_416px_160k_b30_seg0_416x312_97000.mp4"}, {"format": "mp4-583", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/12/23/8006f39c68bda893197a244da858e22b/mp4_416px_576k_b30_seg0_416x312_488000.mp4"}, {"format": "mp4-1317", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/12/23/8006f39c68bda893197a244da858e22b/mp4_640px_1296k_m31_seg0_640x480_1222000.mp4"}] formats := mp4-160, mp4-583, mp4-1317 best := mp4-1317 -e "let $a:=//meta[@itemprop='name']/@content return doc(//@data-mrss)/( name:=concat( 'Nickelodeon - ', $a, replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), json:=[ doc(//media:content/@url)//rendition/{ 'format':concat('mp4-',@bitrate), 'url':src } ] ), formats:=join($json()/format,', '), best:=$json()[last()]/format" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.mtv.nl/shows/511-the-hills/seizoen/1278/aflevering/18698-put-on-a-happy-face" -e "json(//script/extract(.,'pagePlaylist = (.+);',1)[.])()[id=extract($url,'.+/(\d+)-',1)]/(let $a:=if (subtitle!=null) then concat(title,' - ',subtitle) else title return doc(mrss)/(name:=concat('MTV - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ())))" name := MTV - The Hills #601 - Put on a Happy Face (08072012) json := [{"format": "mp4-158", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2012/07/08/a6b0672fee1755c034a00696b8c4c77e/mp4_416px_160k_b30_seg0_416x234_94560.mp4"}, {"format": "mp4-570", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2012/07/08/a6b0672fee1755c034a00696b8c4c77e/mp4_416px_576k_b30_seg0_416x234_474720.mp4"}, {"format": "mp4-1242", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2012/07/08/a6b0672fee1755c034a00696b8c4c77e/mp4_640px_1296k_m31_seg0_640x360_1146016.mp4"}] formats := mp4-158, mp4-570, mp4-1242 best := mp4-1242 xidel-0.9.5.4998.exe -s --color=never "http://www.mtv.nl/artiesten/13001-lukas-graham/muziekvideos/137007-7-years" -e "json(//script/extract(.,'pagePlaylist = (.+);',1)[.])()[id=extract($url,'.+/(\d+)-',1)]/(let $a:=if (subtitle!=null) then concat(title,' - ',subtitle) else title return doc(mrss)/(name:=concat('MTV - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ())))" name := MTV - Lukas Graham - 7 Years (22012016) -e "json(//script/extract(.,'pagePlaylist = (.+);',1)[.])()[id=extract($url,'.+/(\d+)-',1)]/( let $a:= if (subtitle!=null) then concat(title,' - ',subtitle) else title return doc(mrss)/( name:=concat( 'MTV - ', $a, replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), doc(//media:content/@url)/( if (//rendition) then ( json:=[ //rendition/{ 'format':concat('mp4-',@bitrate), 'url':src } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else () ) ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.comedycentral.nl/nieuws/95726-20-photoshop-trolls-die-geweldig-zijn-ingegaan-op-slechte-verzoeken" -e "let $a:=if (count(//@data-mrss)=1) then concat(//h1,' - ',(//h2)[1]) else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])] ! (if (@data-franchise) then concat(@data-franchise,' - ',a/@title) else replace(@data-title,':','')) return doc(if (count(//@data-mrss)=1) then //@data-mrss else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])]/@data-mrss)/(name:=concat('Comedy Central - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ()))" name := Comedy Central - 20 Photoshop-trolls die geweldig zijn ingegaan op slechte verzoeken - Kim K. the hobbit (07092016) json := [{"format": "mp4-150", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/01/08/c14b7a8a7eca436db04f8a7f61961181/mp4_416px_160k_b30_seg0_416x234_89000.mp4"}, {"format": "mp4-538", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/01/08/c14b7a8a7eca436db04f8a7f61961181/mp4_416px_576k_b30_seg0_416x234_445000.mp4"}, {"format": "mp4-1220", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2014/01/08/c14b7a8a7eca436db04f8a7f61961181/mp4_640px_1296k_m31_seg0_640x360_1127000.mp4"}] formats := mp4-150, mp4-538, mp4-1220 best := mp4-1220 xidel-0.9.5.4998.exe -s --color=never "http://www.comedycentral.nl/nieuws/94952-hoe-south-park-begon-als-kerstkaart-waarop-jezus-een-sneeuwpop-vermoordt?video=028c18bfc6d7e84effbf" -e "let $a:=if (count(//@data-mrss)=1) then concat(//h1,' - ',(//h2)[1]) else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])] ! (if (@data-franchise) then concat(@data-franchise,' - ',a/@title) else replace(@data-title,':','')) return doc(if (count(//@data-mrss)=1) then //@data-mrss else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])]/@data-mrss)/(name:=concat('Comedy Central - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ()))" name := Comedy Central - Special Olympics (08092016) json := [{"format": "mp4-162", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/09/08/15b14118dd114bd4892291128a0b0bc4/mp4_416px_160k_b30_seg0_416x234_98841.mp4"}, {"format": "mp4-554", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/09/08/15b14118dd114bd4892291128a0b0bc4/mp4_416px_576k_b30_seg0_416x234_458896.mp4"}, {"format": "mp4-1253", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/09/08/15b14118dd114bd4892291128a0b0bc4/mp4_640px_1296k_m31_seg0_640x360_1157347.mp4"}] formats := mp4-162, mp4-554, mp4-1253 best := mp4-1253 xidel-0.9.5.4998.exe -s --color=never "http://www.comedycentral.nl/seasons/86920-new-timers-season-1-aflevering-3-outlet/aflevering" -e "let $a:=if (count(//@data-mrss)=1) then concat(//h1,' - ',(//h2)[1]) else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])] ! (if (@data-franchise) then concat(@data-franchise,' - ',a/@title) else replace(@data-title,':','')) return doc(if (count(//@data-mrss)=1) then //@data-mrss else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])]/@data-mrss)/(name:=concat('Comedy Central - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ()))" name := Comedy Central - New Timers - Outlet (03032016) json := [{"format": "mp4-160", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/03/01/3e1fabce559a4e0b085e6c52ebed8aee/mp4_416px_160k_b30_seg0_416x234_97000.mp4"}, {"format": "mp4-585", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/03/01/3e1fabce559a4e0b085e6c52ebed8aee/mp4_416px_576k_b30_seg0_416x234_490000.mp4"}, {"format": "mp4-1318", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/03/01/3e1fabce559a4e0b085e6c52ebed8aee/mp4_640px_1296k_m31_seg0_640x360_1223000.mp4"}] formats := mp4-160, mp4-585, mp4-1318 best := mp4-1318 -e "let $a:= if (count(//@data-mrss)=1) then concat(//h1,' - ',(//h2)[1]) else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])] ! ( if (@data-franchise) then concat(@data-franchise,' - ',a/@title) else replace(@data-title,':','') ) return doc( if (count(//@data-mrss)=1) then //@data-mrss else //li[contains(a/@href,extract($url,'.+=(.+)|.+/(\d+)',(1,2))[.])]/@data-mrss )/( name:=concat('Comedy Central - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')), doc(//media:content/@url)/( if (//rendition) then ( json:=[ //rendition/{ 'format':concat('mp4-',@bitrate), 'url':src } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else () ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://nl.funnyclips.cc/video_of_the_day" -e "let $a:=//meta[@property='og:title']/@content return doc(//script/extract(.,'\{\}, ''(.+)''',1)[.])/(name:=concat('Funny Clips - ',$a,replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),doc(//media:content/@url)/(if (//rendition) then (json:=[//rendition/{'format':concat('mp4-',@bitrate),'url':src}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else ()))" name := Funny Clips - TripTank - Karma heeft je te pakken (15072016) json := [{"format": "mp4-153", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/07/15/f504714b7f3263c31d733372ad0bb260/mp4_416px_160k_b30_seg0_416x234_89409.mp4"}, {"format": "mp4-545", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/07/15/f504714b7f3263c31d733372ad0bb260/mp4_416px_576k_b30_seg0_416x234_449788.mp4"}, {"format": "mp4-1240", "url": "rtmp://cp8619.edgefcs.net/ondemand/riptide/r2/production/2016/07/15/f504714b7f3263c31d733372ad0bb260/mp4_640px_1296k_m31_seg0_640x360_1144769.mp4"}] formats := mp4-153, mp4-545, mp4-1240 best := mp4-1240 -e "let $a:=//meta[@property='og:title']/@content return doc(//script/extract(.,'\{\}, ''(.+)''',1)[.])/( name:=concat( 'Funny Clips - ', $a, replace(//pubDate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), doc(//media:content/@url)/( if (//rendition) then ( json:=[ //rendition/{ 'format':concat('mp4-',@bitrate), 'url':src } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else () ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omropfryslan.nl/live/omrop-fryslan-tv" -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return (name:=concat(substring-before(//meta[@itemprop='name']/@content,'TV'),replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)')),json:=[doc($a[type='rtmp']/file)//video/{'format':concat('rtsp-',@system-bitrate idiv 1000),'url':concat(replace(//@base,'rtmp','rtsp'),@src)},let $b:=$a[type='hls']/file return ({'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))})],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then (name:=concat('Omrop Fryslân - ',if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''),$a),json:=[$b/(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b/{position()||'e':{'name':concat('Omrop Fryslân - ',replace(.//idstring,'"',''''''),$a),'formats':(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}}}],videos:=join($json()(),', '))" name := Omrop Fryslân - Livestream (19092016) json := [{"format": "rtsp-400", "url": "rtsp://live.wowza.kpnstreaming.nl/omropfryslanlive/_definst_mp4:stream04_400"}, {"format": "rtsp-800", "url": "rtsp://live.wowza.kpnstreaming.nl/omropfryslanlive/_definst_mp4:stream04_800"}, {"format": "rtsp-1200", "url": "rtsp://live.wowza.kpnstreaming.nl/omropfryslanlive/_definst_mp4:stream04_1200"}, {"format": "rtsp-2000", "url": "rtsp://live.wowza.kpnstreaming.nl/omropfryslanlive/_definst_mp4:stream04_2000"}, {"format": "meta", "url": "http://live.wowza.kpnstreaming.nl/omropfryslanlive/OFstream04.smil/playlist.m3u8"}, {"format": "400", "url": "http://live.wowza.kpnstreaming.nl/omropfryslanlive/OFstream04.smil/chunklist_w1491196635_b400000.m3u8"}, {"format": "800", "url": "http://live.wowza.kpnstreaming.nl/omropfryslanlive/OFstream04.smil/chunklist_w1491196635_b800000.m3u8"}, {"format": "1200", "url": "http://live.wowza.kpnstreaming.nl/omropfryslanlive/OFstream04.smil/chunklist_w1491196635_b1200000.m3u8"}, {"format": "2000", "url": "http://live.wowza.kpnstreaming.nl/omropfryslanlive/OFstream04.smil/chunklist_w1491196635_b2000000.m3u8"}] formats := rtsp-400, rtsp-800, rtsp-1200, rtsp-2000, meta, 400, 800, 1200, 2000 best := 2000 xidel-0.9.5.4998.exe -s --color=never "http://www.omropfryslan.nl/utstjoering/fryslan-hjoed-fan-17-septimber-2016-1800-0" -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return (name:=concat(substring-before(//meta[@itemprop='name']/@content,'TV'),replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)')),json:=[doc($a[type='rtmp']/file)//video/{'format':concat('rtsp-',@system-bitrate idiv 1000),'url':concat(replace(//@base,'rtmp','rtsp'),@src)},let $b:=$a[type='hls']/file return ({'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))})],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then (name:=concat('Omrop Fryslân - ',if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''),$a),json:=[$b/(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b/{position()||'e':{'name':concat('Omrop Fryslân - ',replace(.//idstring,'"',''''''),$a),'formats':(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}}}],videos:=join($json()(),', '))" name := Omrop Fryslân - Fryslân Hjoed (17092016) json := [{"format": "480p", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/FRYSLANHJOED_2016-09-17_1.mp4"}, {"format": "720p", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/FRYSLANHJOED_2016-09-17_1.mp4"}] formats := 480p, 720p best := 720p xidel-0.9.5.4998.exe -s --color=never "http://www.omropfryslan.nl/utstjoering/fryslan-hjoed-fan-17-septimber-2016-1800-0" -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return (name:=concat(substring-before(//meta[@itemprop='name']/@content,'TV'),replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)')),json:=[doc($a[type='rtmp']/file)//video/{'format':concat('rtsp-',@system-bitrate idiv 1000),'url':concat(replace(//@base,'rtmp','rtsp'),@src)},let $b:=$a[type='hls']/file return ({'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))})],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then (name:=concat('Omrop Fryslân - ',if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''),$a),json:=[$b/(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b/{position()||'e':{'name':concat('Omrop Fryslân - ',replace(.//idstring,'"',''''''),$a),'formats':(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}}}],videos:=join($json()(),', '))" name := Omrop Fryslân - Fryslân Hjoed (17092016) json := [{"format": "mp4-480", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/FRYSLANHJOED_2016-09-17_1.mp4"}, {"format": "mp4-720", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/FRYSLANHJOED_2016-09-17_1.mp4"}] formats := mp4-480, mp4-720 best := mp4-720 xidel-0.9.5.4998.exe -s --color=never "http://www.omropfryslan.nl/nijs/664149-update-bran-yn-boalsert-under-kontrole" -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return (name:=concat(substring-before(//meta[@itemprop='name']/@content,'TV'),replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)')),json:=[doc($a[type='rtmp']/file)//video/{'format':concat('rtsp-',@system-bitrate idiv 1000),'url':concat(replace(//@base,'rtmp','rtsp'),@src)},let $b:=$a[type='hls']/file return ({'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))})],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then (name:=concat('Omrop Fryslân - ',if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''),$a),json:=[$b/(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b/{position()||'e':{'name':concat('Omrop Fryslân - ',replace(.//idstring,'"',''''''),$a),'formats':(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}}}],videos:=join($json()(),', '))" name := Omrop Fryslân - Grutte brân yn fytsesaak yn Boalsert (17092016) json := [{"format": "mp4-480", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/FH17IP99.mp4"}, {"format": "mp4-720", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/FH17IP99.mp4"}] formats := mp4-480, mp4-720 best := mp4-720 xidel-0.9.5.4998.exe -s --color=never "http://www.omropfryslan.nl/nijs/664076-rob-maas-kansen-gaan-er-vanzelf-een-keer" -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return (name:=concat(substring-before(//meta[@itemprop='name']/@content,'TV'),replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)')),json:=[doc($a[type='rtmp']/file)//video/{'format':concat('rtsp-',@system-bitrate idiv 1000),'url':concat(replace(//@base,'rtmp','rtsp'),@src)},let $b:=$a[type='hls']/file return ({'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))})],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then (name:=concat('Omrop Fryslân - ',if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''),$a),json:=[$b/(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b/{position()||'e':{'name':concat('Omrop Fryslân - ',replace(.//idstring,'"',''''''),$a),'formats':(sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "Omrop Fryslân - Trainer Rob Maas: ''Het eerste kwartier zijn we dominant'' (17092016)", "formats": [{"format": "mp4-480", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/Rob_Maas.mp4"}, {"format": "mp4-720", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/Rob_Maas.mp4"}]}}, {"2e": {"name": "Omrop Fryslân - Oanfierder Erik Bakker: ''vandaag kwam het er allemaal niet uit'' (17092016)", "formats": [{"format": "mp4-480", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/Erik_Bakker.mp4"}, {"format": "mp4-720", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/Erik_Bakker.mp4"}]}}, {"3e": {"name": "Omrop Fryslân - Ferdigener Gino Bosz hie him syn debút hiel oars foarsteld (17092016)", "formats": [{"format": "mp4-480", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/LQ/Gino_Bosz.mp4"}, {"format": "mp4-720", "url": "https://omropfryslanvod.download.kpnstreaming.nl/video/2013/HQ/Gino_Bosz.mp4"}]}}] videos := 1e, 2e, 3e -e "if (contains($url,'live')) then let $a:=json(doc(//script/extract(.,'playlist: \"(.+)\"',1)[.]))(2)/(sources)() return ( name:=concat( substring-before(//meta[@itemprop='name']/@content,'TV'), replace('%date%','.+?(\d+)-(\d+)-(\d+)','- Livestream ($1$2$3)') ), json:=[ doc($a[type='rtmp']/file)//video/{ 'format':concat('rtsp-',@system-bitrate idiv 1000), 'url':concat(replace(//@base,'rtmp','rtsp'),@src) }, let $b:=$a[type='hls']/file return ( { 'format':'meta', 'url':$b }, tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1)) } ) ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//script/json(extract(.,'(\{\"sources\".+?)\)',1,'s')[.]) return if (count($b)=1) then ( name:=concat( 'Omrop Fryslân - ', if (contains($url,'utstjoering')) then substring-before(//meta[@itemprop='name']/@content,' fan') else replace($b//idstring,'"',''''''), $a ), json:=[ $b/(sources)()/{ 'format':replace(label,'(\d+).','mp4-$1'), 'url':file } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else ( json:=[ $b/{ position()||'e':{ 'name':concat( 'Omrop Fryslân - ', replace(.//idstring,'"',''''''), $a ), 'formats':(sources)()/{ 'format':replace(label,'(\d+).','mp4-$1'), 'url':file } } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnoord.nl/livetv" --xquery "if (contains($url,'livetv')) then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Noord - Livestream ($1$2$3)'),let $a:=doc(doc(doc(//iframe/@src)//@src)/extract(.,'\"playlist\": \"(.+^)\",',1))//@file return json:=[{'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//div[@data-button='player-still-overlay icon-play'] return if (count($b)=1) then (name:=if (//meta[@property='og:type']/@content='video:episode') then concat('RTV Noord - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?/(\d+).{3}(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Noord - ',replace($b/@title,'["']',''''''),$a),_url:=$b/@data-media) else (json:=[$b ! {position()||'e':{'name':concat('RTV Noord - ',replace(@title,'["']',''''''),$a),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Noord - Livestream (18092016) json := [{"format": "meta", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord.m3u8"}, {"format": "279", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=64000-video=200000.m3u8"}, {"format": "665", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=128000-video=500000.m3u8"}, {"format": "945", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=192000-video=700000.m3u8"}, {"format": "1157", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=192000-video=900000.m3u8"}, {"format": "1581", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=192000-video=1300000.m3u8"}, {"format": "2111", "url": "http://livestreams.omroep.nl/live/npo/regionaal/rtvnoord/rtvnoord.isml/rtvnoord-audio=192000-video=1800000.m3u8"}] formats := meta, 279, 665, 945, 1157, 1581, 2111 best := 2111 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnoord.nl/tv/programma/10010/Noord-Vandaag/aflevering/5612" --xquery "if (contains($url,'livetv')) then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Noord - Livestream ($1$2$3)'),let $a:=doc(doc(doc(//iframe/@src)//@src)/extract(.,'\"playlist\": \"(.+^)\",',1))//@file return json:=[{'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//div[@data-button='player-still-overlay icon-play'] return if (count($b)=1) then (name:=if (//meta[@property='og:type']/@content='video:episode') then concat('RTV Noord - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?/(\d+).{3}(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Noord - ',replace($b/@title,'["']',''''''),$a),_url:=$b/@data-media) else (json:=[$b ! {position()||'e':{'name':concat('RTV Noord - ',replace(@title,'["']',''''''),$a),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Noord - Noord Vandaag (16092016) _url := http://content.omroep.nl/rtvnoord/video/2016/160916/160916_NVREC_XHQ.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnoord.nl/nieuws/167874/Midstars-begint-competitie-met-gelijkspel" --xquery "if (contains($url,'livetv')) then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Noord - Livestream ($1$2$3)'),let $a:=doc(doc(doc(//iframe/@src)//@src)/extract(.,'\"playlist\": \"(.+^)\",',1))//@file return json:=[{'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//div[@data-button='player-still-overlay icon-play'] return if (count($b)=1) then (name:=if (//meta[@property='og:type']/@content='video:episode') then concat('RTV Noord - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?/(\d+).{3}(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Noord - ',replace($b/@title,'["']',''''''),$a),_url:=$b/@data-media) else (json:=[$b ! {position()||'e':{'name':concat('RTV Noord - ',replace(@title,'["']',''''''),$a),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Noord - Tomaszuk maakte z''n debuut voor Klimaatgroep Stars (17092016) _url := http://content.omroep.nl/rtvnoord/video/2016/160917/160917_TAFELTENNIS_XHQ.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnoord.nl/nieuws/167149/Jonge-saxofonist-Tariq-leeft-zijn-droom-op-Mysteryland" --xquery "if (contains($url,'livetv')) then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Noord - Livestream ($1$2$3)'),let $a:=doc(doc(doc(//iframe/@src)//@src)/extract(.,'\"playlist\": \"(.+^)\",',1))//@file return json:=[{'format':'meta','url':$a},tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else let $a:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//div[@data-button='player-still-overlay icon-play'] return if (count($b)=1) then (name:=if (//meta[@property='og:type']/@content='video:episode') then concat('RTV Noord - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?/(\d+).{3}(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Noord - ',replace($b/@title,'["']',''''''),$a),_url:=$b/@data-media) else (json:=[$b ! {position()||'e':{'name':concat('RTV Noord - ',replace(@title,'["']',''''''),$a),'url':@data-media}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV Noord - ''Het gaat allemaal zo snel... Bizar eigenlijk'' (29082016)", "url": "http://content.omroep.nl/rtvnoord/video/2016/160829/160829_BC-TARIQ-PIJNING.mario_XHQ.mp4"}}, {"2e": {"name": "RTV Noord - Tariq Pijning gaat los op podium van Mysteryland (29082016)", "url": "http://content.omroep.nl/rtvnoord/video/2016/160829/160829-TARIQ2_XHQ.mp4"}}, {"3e": {"name": "RTV Noord - Even jammen backstage bij Mysteryland (29082016)", "url": "http://content.omroep.nl/rtvnoord/video/2016/160829/160829-TARIQ1_XHQ.mp4"}}] videos := 1e, 2e, 3e --xquery "if (contains($url,'livetv')) then ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Noord - Livestream ($1$2$3)'), let $a:=doc(doc(doc(//iframe/@src)//@src)/extract(.,'\"playlist\": \"(.+^)\",',1))//@file return json:=[ { 'format':'meta', 'url':$a }, tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$a),extract(.,'(.+m3u8)',1)) } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else let $a:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=//div[@data-button='player-still-overlay icon-play'] return if (count($b)=1) then ( name:=if (//meta[@property='og:type']/@content='video:episode') then concat( 'RTV Noord - ', //div[@class='media-details']/h3, replace(//@data-media,'.+?/(\d+).{3}(\d{2})(\d{2}).+',' ($3$2$1)') ) else concat( 'RTV Noord - ', replace($b/@title,'["']',''''''), $a ), _url:=$b/@data-media ) else ( json:=[ $b ! { position()||'e':{ 'name':concat( 'RTV Noord - ', replace(@title,'["']',''''''), $a ), 'url':@data-media } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.rtvdrenthe.nl/tv" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('RTV Drenthe - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Drenthe - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Drenthe - Livestream ($1$2$3)'),_url:=concat(resolve-uri('.',//@data-media),extract(unparsed-text(//@data-media),'(.+m3u8)',1))) else (json:=[$c ! {position()||'e':{'name':concat('RTV Drenthe - ',replace(@title,'["']',''''''),$b),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Drenthe - Livestream (18092016) _url := http://stream.rtvdrenthe.nl/tv/:tvstream1/chunklist_w198743696.m3u8 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvdrenthe.nl/tv/programma/10/Drenthe-Nu/aflevering/13957" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('RTV Drenthe - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Drenthe - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Drenthe - Livestream ($1$2$3)'),_url:=concat(resolve-uri('.',//@data-media),extract(unparsed-text(//@data-media),'(.+m3u8)',1))) else (json:=[$c ! {position()||'e':{'name':concat('RTV Drenthe - ',replace(@title,'["']',''''''),$b),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Drenthe - Drenthe Nu (18092016) _url := http://av.rtvdrenthe.nl/media/drnl20160918-hhuitz.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvdrenthe.nl/nieuws/113234/Automobilist-ramt-containers-bosjes-bloembak-en-auto-s-in-Meppel" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('RTV Drenthe - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Drenthe - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Drenthe - Livestream ($1$2$3)'),_url:=concat(resolve-uri('.',//@data-media),extract(unparsed-text(//@data-media),'(.+m3u8)',1))) else (json:=[$c ! {position()||'e':{'name':concat('RTV Drenthe - ',replace(@title,'["']',''''''),$b),'url':@data-media}}],videos:=join($json()(),', '))" name := RTV Drenthe - Beelden van de schade na het voorval (18092016) _url := http://av.rtvdrenthe.nl/media/nws20160918-automobilist_ramt_co_item_0002.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvdrenthe.nl/nieuws/104086/Veel-ongelukken-en-glijpartijen-in-Drenthe" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('RTV Drenthe - ',//div[@class='media-details']/h3,replace(//@data-media,'.+?(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)')) else concat('RTV Drenthe - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Drenthe - Livestream ($1$2$3)'),_url:=concat(resolve-uri('.',//@data-media),extract(unparsed-text(//@data-media),'(.+m3u8)',1))) else (json:=[$c ! {position()||'e':{'name':concat('RTV Drenthe - ',replace(@title,'["']',''''''),$b),'url':@data-media}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV Drenthe - Beelden van Persbureau Meter (06012016)", "url": "http://av.rtvdrenthe.nl/media/nws20160106-ongelukzuidwolde_item_0002.mp4"}}, {"2e": {"name": "RTV Drenthe - Beelden vanaf de A37 (06012016)", "url": "http://av.rtvdrenthe.nl/media/nws20160106-ongelukken_item_0002.mp4"}}, {"3e": {"name": "RTV Drenthe - Vanmorgen vroeg raakten meerdere vrachtwagens van de weg (beelden: Persbureau Meter) (06012016)", "url": "http://av.rtvdrenthe.nl/media/nws20160106-ongelukkenvroeg_item_0002.mp4"}}] videos := 1e, 2e, 3e --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then ( name:=if ($a='video:episode') then concat( 'RTV Drenthe - ', //div[@class='media-details']/h3, replace(//@data-media,'.+?(\d{4})(\d{2})(\d{2}).+',' ($3$2$1)') ) else concat( 'RTV Drenthe - ', replace($c/@title,'["']',''''''), $b ), _url:=$c/@data-media ) else ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Drenthe - Livestream ($1$2$3)'), _url:=concat( resolve-uri('.',//@data-media), extract(unparsed-text(//@data-media),'(.+m3u8)',1) ) ) else ( json:=[ $c ! { position()||'e':{ 'name':concat( 'RTV Drenthe - ', replace(@title,'["']',''''''), $b ), 'url':@data-media } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never http://www.rtvnh.nl/live/tv --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV NH - Livestream ($1$2$3)'),let $a:=json(replace(replace(//script/extract(.,'sources: (.+),\s+\]',1,'s')[.],',\s+\}','}'),'rtmp','rtsp')||']')() return json:=[$a[type!='hls']/{'format':replace(file,'(.+?):.+(.)','$1-$2'),'url':file},{'format':'meta','url':$a[type='hls']/file},tail(tokenize(unparsed-text($a[type='hls']/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a[type='hls']/file),extract(.,'(.+m3u8)',1))}],let $b:=($json()[contains(format,'rtsp')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" name := RTV NH - Livestream (20092016) json := [{"format": "rtsp-a", "url": "rtsp://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh_a"}, {"format": "rtsp-b", "url": "rtsp://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh_b"}, {"format": "rtsp-c", "url": "rtsp://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh_c"}, {"format": "rtsp-d", "url": "rtsp://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh_d"}, {"format": "meta", "url": "http://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh.smil/playlist.m3u8"}, {"format": "2628", "url": "http://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh.smil/chunklist_w432608329_b2628000.m3u8"}, {"format": "1628", "url": "http://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh.smil/chunklist_w432608329_b1628000.m3u8"}, {"format": "1028", "url": "http://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh.smil/chunklist_w432608329_b1028000.m3u8"}, {"format": "628", "url": "http://lb-nh-live.cdn.streamgate.nl:1935/nh/video/nh.smil/chunklist_w432608329_b628000.m3u8"}] formats := rtsp-a, rtsp-b, rtsp-c, rtsp-d, meta, 628, 1028, 1628, 2628 best := 2628 --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV NH - Livestream ($1$2$3)'), let $a:=json(replace(replace(//script/extract(.,'sources: (.+),\s+\]',1,'s')[.],',\s+\}','}'),'rtmp','rtsp')||']')() return json:=[ $a[type!='hls']/{ 'format':replace(file,'(.+?):.+(.)','$1-$2'), 'url':file }, { 'format':'meta', 'url':$a[type='hls']/file }, tail(tokenize(unparsed-text($a[type='hls']/file),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$a[type='hls']/file),extract(.,'(.+m3u8)',1)) } ], let $b:=( $json()[contains(format,'rtsp')]/format, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] )" -------------------------------------------------------------------------------------------------------------------------------- http://www.rtvnh.nl/nieuws/192220/nh-peilt-politie-gaat-veel-meer-flitsen (artikel met 1 video (//div/@data-video)) http://www.rtvnh.nl/nieuws/189679/video-mountainbikers-behoeden-duingebied-schoorl-voor-ramp (artikel met 2 video's (//div/@data-video en //div[@class='video-container']/@id)) http://www.rtvnh.nl/nieuws/192112/huizenaar-wint-belgisch-kampioenschap-close-up-goochelen- (artikel met 3 video's (2x //div/@data-video en //div[@class='video-container']/@id)) http://www.rtvnh.nl/nieuws/192199/gamewereld-geschokt-door-dood-voormalig-pro-gamer-rush (artikel met 1 video (//iframe/@src)) xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/gemist/tv/6/228352/-" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return [if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH- ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()]" [{"name": "RTV NH - NH Nieuws (20092016)", "id": "153005"}] xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192220/nh-peilt-politie-gaat-veel-meer-flitsen" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return [if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH- ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()]" [{"name": "RTV NH - NH Peilt: Politie gaat veel meer flitsen (21092016)", "id": "153042"}] xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/189679/video-mountainbikers-behoeden-duingebied-schoorl-voor-ramp" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return [if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH- ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()]" [{"name": "RTV NH - Video: Mountainbikers behoeden duingebied Schoorl voor ramp (09082016)", "id": "150879"}, {"name": "RTV NH - Brand Schoorl Go Pro-beelden (09082016)", "id": "150877"}] xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192112/huizenaar-wint-belgisch-kampioenschap-close-up-goochelen-" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return [if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH- ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()]" [{"name": "RTV NH - Huizenaar wint Belgisch kampioenschap close-up goochelen (19092016)", "id": "152908"}, {"name": "RTV NH - Huizenaar wint Belgisch kampioenschap close-up goochelen (19092016)", "id": "152927"}, {"name": "RTV NH - Quintus de goochelaar (19092016)", "id": "152926"}] xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192199/gamewereld-geschokt-door-dood-voormalig-pro-gamer-rush" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return [if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH- ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()]" [{"name": "RTV NH - Gamewereld geschokt door dood voormalig pro-gamer Rush (20092016)", "id": "133784"}] xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/gemist/tv/6/228352/-" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()] return if (count($b())=1) then $b()/(name:=name,json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b()/{position()||'e':{'name':name,'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}]}}],videos:=join($json()(),', '))" name := RTV NH - NH Nieuws (20092016) json := [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_300.mp4/chunklist_w754556371.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_1000.mp4/chunklist_w350997387.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/20/c9faa2bb554b4c7e0ed6df17003fd602_2000.mp4/chunklist_w23953145.m3u8"}] formats := rtsp-300, rtsp-1000, rtsp-2000, 300, 1000, 2000 best := 2000 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192220/nh-peilt-politie-gaat-veel-meer-flitsen" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()] return if (count($b())=1) then $b()/(name:=name,json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b()/{position()||'e':{'name':name,'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}]}}],videos:=join($json()(),', '))" name := RTV NH - NH Peilt: Politie gaat veel meer flitsen (21092016) json := [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_300.mp4/chunklist_w1440269711.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_1000.mp4/chunklist_w905534931.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/21/c4d4ce13e70c90f2004c89b919da457a_2000.mp4/chunklist_w1366534656.m3u8"}] formats := rtsp-300, rtsp-1000, rtsp-2000, 300, 1000, 2000 best := 2000 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/189679/video-mountainbikers-behoeden-duingebied-schoorl-voor-ramp" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()] return if (count($b())=1) then $b()/(name:=name,json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b()/{position()||'e':{'name':name,'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV NH - Video: Mountainbikers behoeden duingebied Schoorl voor ramp (09082016)", "formats": [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_300.mp4/chunklist_w925648810.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_1000.mp4/chunklist_w1968777889.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/2b4defc360db788b167ba45afa1a8daa_2000.mp4/chunklist_w191369238.m3u8"}]}}, {"2e": {"name": "RTV NH - Brand Schoorl Go Pro-beelden (09082016)", "formats": [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_300.mp4/chunklist_w109353145.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_1000.mp4/chunklist_w893452092.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/08/09/19a732898aab22ea53aaf958af860851_2000.mp4/chunklist_w1054647775.m3u8"}]}}] videos := 1e, 2e xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192112/huizenaar-wint-belgisch-kampioenschap-close-up-goochelen-" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()] return if (count($b())=1) then $b()/(name:=name,json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b()/{position()||'e':{'name':name,'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV NH - Huizenaar wint Belgisch kampioenschap close-up goochelen (19092016)", "formats": [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_300.mp4/chunklist_w1630027725.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_1000.mp4/chunklist_w2102363136.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/52f89aa9415c80d0c8122b8a00e6aae8_2000.mp4/chunklist_w1037222427.m3u8"}]}}, {"2e": {"name": "RTV NH - Huizenaar wint Belgisch kampioenschap close-up goochelen (19092016)", "formats": [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_300.mp4/chunklist_w381925999.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_1000.mp4/chunklist_w1334414227.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/e3e75e9929ad11fc0c7c03c9071e1227_2000.mp4/chunklist_w903962694.m3u8"}]}}, {"3e": {"name": "RTV NH - Quintus de goochelaar (19092016)", "formats": [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_300.mp4/chunklist_w48416959.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_1000.mp4/chunklist_w2081330340.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2016/09/19/33d5a0cbf034d394915c18b36f3ec16b_2000.mp4/chunklist_w95266276.m3u8"}]}}] videos := 1e, 2e, 3e xidel-0.9.5.4998.exe -s --color=never "http://www.rtvnh.nl/nieuws/192199/gamewereld-geschokt-door-dood-voormalig-pro-gamer-rush" -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[if (//div/@data-video) then //div/@data-video ! {'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':.} else (),if (//@class='video-container') then //div[@class='video-container']/{'name':if (contains($url,'gemist')) then concat('RTV NH - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)')) else concat('RTV NH - ',//script/extract(.,'title.+: (.+)''',1)[.],$a),'id':substring-after(@id,'video')} else (),if (//iframe) then //iframe/{'name':concat('RTV NH - ',//meta[@property='og:title']/@content,$a),'id':substring-after(@src,'=')} else ()] return if (count($b())=1) then $b()/(name:=name,json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format) else (json:=[$b()/{position()||'e':{'name':name,'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[//@src ! {'format':concat('rtsp-',extract(.,'_(\d+)',1)),'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:'))},//@src ! {'format':extract(.,'_(\d+)',1),'url':let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1))}]}}],videos:=join($json()(),', '))" name := RTV NH - Gamewereld geschokt door dood voormalig pro-gamer Rush (20092016) json := [{"format": "rtsp-300", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_300.mp4"}, {"format": "rtsp-1000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_1000.mp4"}, {"format": "rtsp-2000", "url": "rtsp://lb-nh-vod.cdn.streamgate.nl:1935/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_2000.mp4"}, {"format": "300", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_300.mp4/chunklist_w1007770785.m3u8"}, {"format": "1000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_1000.mp4/chunklist_w1476986823.m3u8"}, {"format": "2000", "url": "http://lb-nh-vod.cdn.streamgate.nl/vod/_definst_/content2/rtv-noordholland/2015/09/13/9f8d4ae61a64bf8ef9b673a2474cf000_2000.mp4/chunklist_w1268477043.m3u8"}] formats := rtsp-300, rtsp-1000, rtsp-2000, 300, 1000, 2000 best := 2000 -e "let $a:=replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $b:=[ if (//div/@data-video) then //div/@data-video ! { 'name':concat( 'RTV NH - ', //meta[@property='og:title']/@content, $a ), 'id':. } else (), if (//@class='video-container') then //div[@class='video-container']/{ 'name': if (contains($url,'gemist')) then concat( 'RTV NH - ', //div[@class='banner_label'], replace(//a[@class='video-player']/@href,'.+?(\d+)/(\d+)/(\d+).+',' ($3$2$1)') ) else concat( 'RTV NH - ', //script/extract(.,'title.+: (.+)''',1)[.], $a ), 'id':substring-after(@id,'video') } else (), if (//iframe) then //iframe/{ 'name':concat( 'RTV NH - ', //meta[@property='og:title']/@content, $a ), 'id':substring-after(@src,'=') } else () ] return if (count($b())=1) then $b()/( name:=name, json:=doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[ //@src ! { 'format':concat('rtsp-',extract(.,'_(\d+)',1)), 'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:')) }, //@src ! { 'format':extract(.,'_(\d+)',1), 'url': let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1)) } ], formats:=join($json()/format,', '), best:=$json()[last()]/format ) else ( json:=[ $b()/{ position()||'e':{ 'name':name, 'formats':doc(concat('http://www.rtvnh.nl/media/smil/video/',id))/[ //@src ! { 'format':concat('rtsp-',extract(.,'_(\d+)',1)), 'url':concat(replace(//@base,'rtmp','rtsp'),substring-after(.,'mp4:')) }, //@src ! { 'format':extract(.,'_(\d+)',1), 'url': let $c:=concat(replace(replace(//@base,'rtmp','http'),':\d+',''),substring-after(.,'mp4:'),'/playlist.m3u8') return concat(resolve-uri('.',$c),extract(unparsed-text($c),'(.+m3u8)',1)) } ] } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/kijken" --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Flevoland - Livestream ($1$2$3)'),json:=[for $x in json(//script/extract(.,concat((//div[@class='jwplayercontainer'])[1]//@id,'.+sources:(.+?\])'),1,'s')[.])() return (if (ends-with($x/file,'m3u8')) then tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1))} else {'format':replace(replace($x/file,'(.+?):.+\.(.+)','$1-$2'),'rtmp','rtsp'),'url':replace($x/file,'rtmp','rtsp')})],let $a:=($json()[contains(format,'rtsp')]/format,$json()[format castable as double]/format) return (formats:=join($a,', '),best:=$a[last()])" name := Omroep Flevoland - Livestream (01102016) json := [{"format": "1130", "url": "http://lb-omroepflevoland-live.cdn.streamgate.nl/omroepflevoland/livestream1.mp4/chunklist_w1118260985.m3u8"}, {"format": "rtsp-mp4", "url": "rtsp://lb-omroepflevoland-live.cdn.streamgate.nl:1935/omroepflevoland/livestream1.mp4"}] formats := rtsp-mp4, 1130 best := 1130 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/kijken" --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Flevoland - Livestream ($1$2$3)'),json:=[for $x in reverse(json(//script/extract(.,concat((//div[@class='jwplayercontainer'])[1]//@id,'.+sources:(.+?\])'),1,'s')[.])()) return (if (ends-with($x/file,'m3u8')) then tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1))} else {'format':replace(replace($x/file,'(.+?):.+\.(.+)','$1-$2'),'rtmp','rtsp'),'url':replace($x/file,'rtmp','rtsp')})],formats:=join($json()/format,', '),best:=$json()[last()]/format" name := Omroep Flevoland - Livestream (01102016) json := [{"format": "rtsp-mp4", "url": "rtsp://lb-omroepflevoland-live.cdn.streamgate.nl:1935/omroepflevoland/livestream1.mp4"}, {"format": "1087", "url": "http://lb-omroepflevoland-live.cdn.streamgate.nl/omroepflevoland/livestream1.mp4/chunklist_w241494296.m3u8"}] formats := rtsp-mp4, 1087 best := 1087 --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Flevoland - Livestream ($1$2$3)'), json:=[ for $x in reverse( json( //script/extract(., concat((//div[@class='jwplayercontainer'])[1]//@id,'.+sources:(.+?\])') ,1,'s')[.] )() ) return ( if (ends-with($x/file,'m3u8')) then tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1)) } else { 'format':replace(replace($x/file,'(.+?):.+\.(.+)','$1-$2'),'rtmp','rtsp'), 'url':replace($x/file,'rtmp','rtsp') } ) ], formats:=join($json()/format,', '), best:=$json()[last()]/format" -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/kijken/nieuws/01-10-2016/17-00" -e "tail(reverse(json(//script/extract(.,concat((//div[@class='jwplayercontainer'])[1]//@id,'.+sources:(.+?\])'),1,'s')[.])()))" {"file": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/middel/161001_NW.mp4"} {"file": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/161001_NW.smil/playlist.m3u8"} xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/kijken/nieuws/01-10-2016/17-00" --xquery "let $a:=if (contains($url,'kijken')) then (//div[@class='jwplayercontainer'])[1] else //div[@class='jwplayercontainer'][@onclick] return if (count($a)=1) then (name:=concat('Omroep Flevoland - ',if (contains($url,'kijken')) then //meta[@name='keywords']/@content else extract($a/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[for $x in tail(reverse(json(//script/extract(.,concat($a/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($x/file,'m3u8')) then ({'format':'meta','url':$x/file},tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($x/file,'middel',.)})],let $b:=($json()[contains(format,'mp4')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else (json:=[for $x at $i in $a return {$i||'e':{'name':concat('Omroep Flevoland - ',extract($x/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':for $y in tail(reverse(json(//script/extract(.,concat($x/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($y/file,'m3u8')) then ({'format':'meta','url':$y/file},tail(tokenize(unparsed-text($y/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$y/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($y/file,'middel',.)})}}],videos:=join($json()(),', '))" name := Omroep Flevoland - Nieuws (01102016) json := [{"format": "mp4-laag", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/laag/161001_NW.mp4"}, {"format": "mp4-middel", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/middel/161001_NW.mp4"}, {"format": "mp4-hoog", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/hoog/161001_NW.mp4"}, {"format": "meta", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/161001_NW.smil/playlist.m3u8"}, {"format": "1536", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/161001_NW.smil/chunklist_w349149336_b1536000_t64SG9vZw==.m3u8"}, {"format": "1024", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/161001_NW.smil/chunklist_w349149336_b1024000_t64TWlkZGVs.m3u8"}, {"format": "819", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/161001_NW.smil/chunklist_w349149336_b819200_t64TGFhZw==.m3u8"}] formats := mp4-laag, mp4-middel, mp4-hoog, meta, 819, 1024, 1536 best := 1536 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/nieuws/138514/ens-storing-ramspolbrug-verholpen" --xquery "let $a:=if (contains($url,'kijken')) then (//div[@class='jwplayercontainer'])[1] else //div[@class='jwplayercontainer'][@onclick] return if (count($a)=1) then (name:=concat('Omroep Flevoland - ',if (contains($url,'kijken')) then //meta[@name='keywords']/@content else extract($a/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[for $x in tail(reverse(json(//script/extract(.,concat($a/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($x/file,'m3u8')) then ({'format':'meta','url':$x/file},tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($x/file,'middel',.)})],let $b:=($json()[contains(format,'mp4')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else (json:=[for $x at $i in $a return {$i||'e':{'name':concat('Omroep Flevoland - ',extract($x/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':for $y in tail(reverse(json(//script/extract(.,concat($x/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($y/file,'m3u8')) then ({'format':'meta','url':$y/file},tail(tokenize(unparsed-text($y/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$y/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($y/file,'middel',.)})}}],videos:=join($json()(),', '))" name := Omroep Flevoland - Storing Ramspolbrug verholpen - Automobilisten wachten voor de openstaande brug (14082016) json := [{"format": "mp4-laag", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/laag/160814_Ramspol_00000G24.mp4"}, {"format": "mp4-middel", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/middel/160814_Ramspol_00000G24.mp4"}, {"format": "mp4-hoog", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/hoog/160814_Ramspol_00000G24.mp4"}, {"format": "meta", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160814_Ramspol_00000G24.mp4.smil/playlist.m3u8"}, {"format": "1536", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160814_Ramspol_00000G24.mp4.smil/chunklist_w48781236_b1536000_t64SG9vZw==.m3u8"}, {"format": "1024", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160814_Ramspol_00000G24.mp4.smil/chunklist_w48781236_b1024000_t64TWlkZGVs.m3u8"}, {"format": "819", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160814_Ramspol_00000G24.mp4.smil/chunklist_w48781236_b819200_t64TGFhZw==.m3u8"}] formats := mp4-laag, mp4-middel, mp4-hoog, meta, 819, 1024, 1536 best := 1536 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepflevoland.nl/nieuws/138485/dronten-meerpaaldagen-een-grote-reunie" --xquery "let $a:=if (contains($url,'kijken')) then (//div[@class='jwplayercontainer'])[1] else //div[@class='jwplayercontainer'][@onclick] return if (count($a)=1) then (name:=concat('Omroep Flevoland - ',if (contains($url,'kijken')) then //meta[@name='keywords']/@content else extract($a/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[for $x in tail(reverse(json(//script/extract(.,concat($a/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($x/file,'m3u8')) then ({'format':'meta','url':$x/file},tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($x/file,'middel',.)})],let $b:=($json()[contains(format,'mp4')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])) else (json:=[for $x at $i in $a return {$i||'e':{'name':concat('Omroep Flevoland - ',extract($x/@data-video-name,'.+?- (.+) -',1),replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':for $y in tail(reverse(json(//script/extract(.,concat($x/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return (if (ends-with($y/file,'m3u8')) then ({'format':'meta','url':$y/file},tail(tokenize(unparsed-text($y/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$y/file),extract(.,'(.+m3u8)',1))}) else ('laag','middel','hoog') ! {'format':concat('mp4-',.),'url':replace($y/file,'middel',.)})}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "Omroep Flevoland - Meerpaaldagen: ''Een grote reünie'' - Meerpaaldagen: ''Een grote reünie'' (12082016)", "formats": [{"format": "mp4-laag", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/laag/160813_Meerpaaldagen_00000G1Z.mp4"}, {"format": "mp4-middel", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/middel/160813_Meerpaaldagen_00000G1Z.mp4"}, {"format": "mp4-hoog", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/hoog/160813_Meerpaaldagen_00000G1Z.mp4"}, {"format": "meta", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_Meerpaaldagen_00000G1Z.mp4.smil/playlist.m3u8"}, {"format": "1536", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_Meerpaaldagen_00000G1Z.mp4.smil/chunklist_w1639613405_b1536000_t64SG9vZw==.m3u8"}, {"format": "1024", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_Meerpaaldagen_00000G1Z.mp4.smil/chunklist_w1639613405_b1024000_t64TWlkZGVs.m3u8"}, {"format": "819", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_Meerpaaldagen_00000G1Z.mp4.smil/chunklist_w1639613405_b819200_t64TGFhZw==.m3u8"}]}}, {"2e": {"name": "Omroep Flevoland - Meerpaaldagen: ''Een grote reünie'' - Optreden op het Meerpaalplein (12082016)", "formats": [{"format": "mp4-laag", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/laag/160813_meerpaaldagen_Int.mp4"}, {"format": "mp4-middel", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/middel/160813_meerpaaldagen_Int.mp4"}, {"format": "mp4-hoog", "url": "http://progressivestream.flevolandstreaming.nl/ondemand/streams/transfer/hoog/160813_meerpaaldagen_Int.mp4"}, {"format": "meta", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_meerpaaldagen_Int.mp4.smil/playlist.m3u8"}, {"format": "1536", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_meerpaaldagen_Int.mp4.smil/chunklist_w1532291170_b1536000_t64SG9vZw==.m3u8"}, {"format": "1024", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_meerpaaldagen_Int.mp4.smil/chunklist_w1532291170_b1024000_t64TWlkZGVs.m3u8"}, {"format": "819", "url": "http://videostream.flevolandstreaming.nl/vod/_definst_/ondemand/streams/transfer/160813_meerpaaldagen_Int.mp4.smil/chunklist_w1532291170_b819200_t64TGFhZw==.m3u8"}]}}] videos := 1e, 2e --xquery "let $a:= if (contains($url,'kijken')) then (//div[@class='jwplayercontainer'])[1] else //div[@class='jwplayercontainer'][@onclick] return if (count($a)=1) then ( name:=concat( 'Omroep Flevoland - ', if (contains($url,'kijken')) then //meta[@name='keywords']/@content else extract($a/@data-video-name,'.+?- (.+) -',1), replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), json:=[ for $x in tail(reverse(json(//script/extract(.,concat($a/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return ( if (ends-with($x/file,'m3u8')) then ( { 'format':'meta', 'url':$x/file }, tail(tokenize(unparsed-text($x/file),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x/file),extract(.,'(.+m3u8)',1)) } ) else ('laag','middel','hoog') ! { 'format':concat('mp4-',.), 'url':replace($x/file,'middel',.) } ) ], let $b:=( $json()[contains(format,'mp4')]/format, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] ) ) else ( json:=[ for $x at $i in $a return { $i||'e':{ 'name':concat( 'Omroep Flevoland - ', extract($x/@data-video-name,'.+?- (.+) -',1), replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), 'formats':for $y in tail(reverse(json(//script/extract(.,concat($x/div/@id,'.+sources:(.+?\])'),1,'s')[.])())) return ( if (ends-with($y/file,'m3u8')) then ( { 'format':'meta', 'url':$y/file }, tail(tokenize(unparsed-text($y/file),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$y/file),extract(.,'(.+m3u8)',1)) } ) else ('laag','middel','hoog') ! { 'format':concat('mp4-',.), 'url':replace($y/file,'middel',.) } ) } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.rtvoost.nl/tv/live.aspx" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//meta[if (@property='video:release_date') then @property='video:release_date' else @property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//script/extract(.,'\$\.ajax\(\"(.+^)\"',1)[.] return if (count($c)=1) then (if ($a='video.other') then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Oost - Livestream ($1$2$3)'),let $d:=json($c)//file return json:=[{'format':'meta','url':$d},tail(tokenize(unparsed-text($d),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$d),extract(.,'(.+m3u8)',1))}]) else (name:=concat('RTV Oost - ',if ($a='video.episode') then extract(//meta[@property='og:title']/@content,'(.+) van \d+',1) else //meta[@property='og:title']/@content,$b),json:=[(json($c)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]),let $e:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($e,', '),best:=$e[last()])) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('RTV Oost - ',//div[@id=concat('video',$i)]/span[@class='mediaTitle'],$b),'formats':[(json($x)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]}}],videos:=join($json()(),', '))" name := RTV Oost - Livestream (03102016) json := [{"format": "meta", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1.m3u8"}, {"format": "347", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=200000.m3u8"}, {"format": "665", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=500000.m3u8"}, {"format": "877", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=700000.m3u8"}, {"format": "1089", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=900000.m3u8"}, {"format": "1513", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=1300000.m3u8"}, {"format": "2043", "url": "http://livestreams.omroep.nl/live/regionaal/rtvoost/livestream1/livestream1.isml/livestream1-audio=128000-video=1800000.m3u8"}] formats := meta, 347, 665, 877, 1089, 1513, 2043 best := 2043 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvoost.nl/tv/uitzending.aspx?uid=402223" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//meta[if (@property='video:release_date') then @property='video:release_date' else @property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//script/extract(.,'\$\.ajax\(\"(.+^)\"',1)[.] return if (count($c)=1) then (if ($a='video.other') then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Oost - Livestream ($1$2$3)'),let $d:=json($c)//file return json:=[{'format':'meta','url':$d},tail(tokenize(unparsed-text($d),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$d),extract(.,'(.+m3u8)',1))}]) else (name:=concat('RTV Oost - ',if ($a='video.episode') then extract(//meta[@property='og:title']/@content,'(.+) van \d+',1) else //meta[@property='og:title']/@content,$b),json:=[(json($c)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]),let $e:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($e,', '),best:=$e[last()])) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('RTV Oost - ',//div[@id=concat('video',$i)]/span[@class='mediaTitle'],$b),'formats':[(json($x)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]}}],videos:=join($json()(),', '))" name := RTV Oost - Overijssel Vandaag (02102016) json := [{"format": "mp4-1024", "url": "http://tvarchief.rtvoost.nl/hi/402223.mp4"}, {"format": "mp4-640", "url": "http://tvarchief.rtvoost.nl/me/402223.mp4"}, {"format": "mp4-320", "url": "http://tvarchief.rtvoost.nl/lo/402223.mp4"}] formats := mp4-320, mp4-640, mp4-1024 best := mp4-1024 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvoost.nl/nieuws/default.aspx?nid=253552&cat=1" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//meta[if (@property='video:release_date') then @property='video:release_date' else @property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//script/extract(.,'\$\.ajax\(\"(.+^)\"',1)[.] return if (count($c)=1) then (if ($a='video.other') then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Oost - Livestream ($1$2$3)'),let $d:=json($c)//file return json:=[{'format':'meta','url':$d},tail(tokenize(unparsed-text($d),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$d),extract(.,'(.+m3u8)',1))}]) else (name:=concat('RTV Oost - ',if ($a='video.episode') then extract(//meta[@property='og:title']/@content,'(.+) van \d+',1) else //meta[@property='og:title']/@content,$b),json:=[(json($c)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]),let $e:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($e,', '),best:=$e[last()])) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('RTV Oost - ',//div[@id=concat('video',$i)]/span[@class='mediaTitle'],$b),'formats':[(json($x)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]}}],videos:=join($json()(),', '))" name := RTV Oost - Ernstig ongeluk op A32 bij Meppel, meerdere gewonden naar ziekenhuis gebracht (UPDATE) (02102016) json := [{"format": "mp4-1024", "url": "http://video.rtvoost.nl/hi/252207.mp4"}, {"format": "mp4-640", "url": "http://video.rtvoost.nl/me/252207.mp4"}, {"format": "mp4-320", "url": "http://video.rtvoost.nl/lo/252207.mp4"}] formats := mp4-320, mp4-640, mp4-1024 best := mp4-1024 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvoost.nl/sport/default.aspx?nid=253541&cat=313" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//meta[if (@property='video:release_date') then @property='video:release_date' else @property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//script/extract(.,'\$\.ajax\(\"(.+^)\"',1)[.] return if (count($c)=1) then (if ($a='video.other') then (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Oost - Livestream ($1$2$3)'),let $d:=json($c)//file return json:=[{'format':'meta','url':$d},tail(tokenize(unparsed-text($d),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$d),extract(.,'(.+m3u8)',1))}]) else (name:=concat('RTV Oost - ',if ($a='video.episode') then extract(//meta[@property='og:title']/@content,'(.+) van \d+',1) else //meta[@property='og:title']/@content,$b),json:=[(json($c)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]),let $e:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($e,', '),best:=$e[last()])) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('RTV Oost - ',//div[@id=concat('video',$i)]/span[@class='mediaTitle'],$b),'formats':[(json($x)//sources)()/{'format':replace(label,'(\d+).','mp4-$1'),'url':file}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV Oost - Lycurgus - VC Zwolle (02102016)", "formats": [{"format": "mp4-1024", "url": "http://video.rtvoost.nl/hi/252201.mp4"}, {"format": "mp4-640", "url": "http://video.rtvoost.nl/me/252201.mp4"}, {"format": "mp4-320", "url": "http://video.rtvoost.nl/lo/252201.mp4"}]}}, {"2e": {"name": "RTV Oost - Jelle Hilarius (02102016)", "formats": [{"format": "mp4-1024", "url": "http://video.rtvoost.nl/hi/252200.mp4"}, {"format": "mp4-640", "url": "http://video.rtvoost.nl/me/252200.mp4"}, {"format": "mp4-320", "url": "http://video.rtvoost.nl/lo/252200.mp4"}]}}] videos := 1e, 2e --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace( //meta[ if (@property='video:release_date') then @property='video:release_date' else @property='article:published_time' ]/@content, '(\d+)-(\d+)-(\d+).+', ' ($3$2$1)' ) return let $c:=//script/extract(.,'\$\.ajax\(\"(.+^)\"',1)[.] return if (count($c)=1) then ( if ($a='video.other') then ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Oost - Livestream ($1$2$3)'), let $d:=json($c)//file return json:=[ { 'format':'meta', 'url':$d }, tail(tokenize(unparsed-text($d),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$d),extract(.,'(.+m3u8)',1)) } ] ) else ( name:=concat( 'RTV Oost - ', if ($a='video.episode') then extract(//meta[@property='og:title']/@content,'(.+) van \d+',1) else //meta[@property='og:title']/@content, $b ), json:=[ (json($c)//sources)()/{ 'format':replace(label,'(\d+).','mp4-$1'), 'url':file } ] ), let $e:=( $json()[format='meta']/format, for $x in $json()[format!='meta']/format order by $x return $x ) return ( formats:=join($e,', '), best:=$e[last()] ) ) else ( json:=[ for $x at $i in $c return { $i||'e':{ 'name':concat( 'RTV Oost - ', //div[@id=concat('video',$i)]/span[@class='mediaTitle'], $b ), 'formats':[ (json($x)//sources)()/{ 'format':replace(label,'(\d+).','mp4-$1'), 'url':file } ] } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.at5.nl/video/json?s=live" --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','AT5 - Livestream ($1$2$3)'),let $a:=json($raw)/source/(def)() return json:=[('a','b','c','d') ! {'format':concat('rtsp-',.),'url':concat(replace($a[type='rtmp']/file,'.+?(:.+).','rtsp$1'),.)},{'format':'meta','url':$a[type='hls']/file},tail(tokenize(unparsed-text($a[type='hls']/file),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$a[type='hls']/file),extract(.,'(.+m3u8)',1))}],let $b:=($json()[contains(format,'rtsp')]/format,$json()[format='meta']/format,for $x in $json()[format castable as double]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()])" name := AT5 - Livestream (03102016) json := [{"format": "rtsp-a", "url": "rtsp://lb-at5-live.cdn.streamgate.nl:1935/at5/video/at5_a"}, {"format": "rtsp-b", "url": "rtsp://lb-at5-live.cdn.streamgate.nl:1935/at5/video/at5_b"}, {"format":"rtsp-c", "url": "rtsp://lb-at5-live.cdn.streamgate.nl:1935/at5/video/at5_c"}, {"format": "rtsp-d","url": "rtsp://lb-at5-live.cdn.streamgate.nl:1935/at5/video/at5_d"}, {"format": "meta", "url": "http://lb-at5-live.cdn.streamgate.nl/at5/video/at5.smil/playlist.m3u8"}, {"format": "2628", "url": "http://lb-at5-live.cdn.streamgate.nl/at5/video/at5.smil/chunklist_w989772257_b2628000.m3u8"}, {"format": "1628", "url": "http://lb-at5-live.cdn.streamgate.nl/at5/video/at5.smil/chunklist_w989772257_b1628000.m3u8"}, {"format": "1028", "url": "http://lb-at5-live.cdn.streamgate.nl/at5/video/at5.smil/chunklist_w989772257_b1028000.m3u8"}, {"format": "628", "url": "http://lb-at5-live.cdn.streamgate.nl/at5/video/at5.smil/chunklist_w989772257_b628000.m3u8"}] formats := rtsp-a, rtsp-b, rtsp-c, rtsp-d, meta, 628, 1028, 1628, 2628 best := 2628 --xquery "name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','AT5 - Livestream ($1$2$3)'), let $a:=json($raw)/source/(def)() return json:=[ ('a','b','c','d') ! { 'format':concat('rtsp-',.), 'url':concat(replace($a[type='rtmp']/file,'.+?(:.+).','rtsp$1'),.) }, { 'format':'meta', 'url':$a[type='hls']/file }, tail(tokenize(unparsed-text($a[type='hls']/file),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$a[type='hls']/file),extract(.,'(.+m3u8)',1)) } ], let $b:=( $json()[contains(format,'rtsp')]/format, $json()[format='meta']/format, for $x in $json()[format castable as double]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] )" -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never "http://www.at5.nl/gemist/tv/123/24816/-" -e "name:=concat('AT5 - ',//div[@class='banner_label'],replace(//a[@class='video-player']/@href,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),let $a:=json(replace(//script/extract(.,'sources: (.+),\s+\]',1,'s')[.],',\s+\}','}')||']')() return json:=[('low','medium','hi') ! {'format':concat('mp4-',.),'url':replace($a[last()]/file,'(.+_).+(\.mp4)',concat('$1',.,'$2'))},for $x in ('low','medium','hi') ! replace($a[type='hls']/file,'(.+_).+(\.mp4)',concat('$1',.,'$2')) return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format" name := AT5 - AT5 Nieuws (03102016) json := [{"format": "mp4-low", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_low.mp4"}, {"format": "mp4-medium", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_medium.mp4"}, {"format": "mp4-hi", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_hi.mp4"}, {"format": "449", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_low.mp4/chunklist_w1867403469.m3u8"}, {"format": "1390", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_medium.mp4/chunklist_w2000700269.m3u8"}, {"format": "2334", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/8db32b4b3e06d586fae975bfd2c228d0_hi.mp4/chunklist_w746466967.m3u8"}] formats := mp4-low, mp4-medium, mp4-hi, 449, 1390, 2334 best := 2334 -e "name:=concat( 'AT5 - ', //div[@class='banner_label'], replace(//a[@class='video-player']/@href,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)') ), let $a:=json(replace(//script/extract(.,'sources: (.+),\s+\]',1,'s')[.],',\s+\}','}')||']')() return json:=[ ('low','medium','hi') ! { 'format':concat('mp4-',.), 'url':replace($a[last()]/file,'(.+_).+(\.mp4)',concat('$1',.,'$2')) }, for $x in ('low','medium','hi') ! replace($a[type='hls']/file,'(.+_).+(\.mp4)',concat('$1',.,'$2')) return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1)) } ], formats:=join($json()/format,', '), best:=$json()[last()]/format" -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never "http://www.at5.nl/artikelen/160937/nieuwe-app-moet-etnisch-profileren-helpen-voorkomen" -e "name:=concat('AT5 - ',//meta[@property='og:title']/@content,replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)'))" -f "concat('http://www.at5.nl/embedder/smil?m=',//div/@data-video)" -e "json:=[//@src ! {'format':concat('mp4-',extract(.,'_(.+)\.',1)),'url':concat('http://rtvnh-dl1.streamgate.nl',substring-after(.,'content2'))},for $x in //@src ! concat(replace(//@base,'rtmp','http'),substring-after(.,'mp4:'),'/playlist.m3u8') return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1))}],formats:=join($json()/format,', '),best:=$json()[last()]/format" name := AT5 - Nieuwe app moet etnisch profileren helpen voorkomen (03102016) json := [{"format": "mp4-low", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_low.mp4"}, {"format": "mp4-medium", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_medium.mp4"}, {"format": "mp4-hi", "url": "http://rtvnh-dl1.streamgate.nl/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_hi.mp4"}, {"format": "393", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_low.mp4/chunklist_w892187925.m3u8"}, {"format": "1403", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_medium.mp4/chunklist_w1579171018.m3u8"}, {"format": "2450", "url": "http://lb-at5-vod.cdn.streamgate.nl/vod/_definst_/content2/at5/at5/2016/10/03/4745c79ba787c3a7b56a894116399e72_hi.mp4/chunklist_w1580554108.m3u8"}] formats := mp4-low, mp4-medium, mp4-hi, 393, 1403, 2450 best := 2450 -e "name:=concat( 'AT5 - ', //meta[@property='og:title']/@content, replace(//meta[@property='article:published_time']/@content,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') )" -f "concat('http://www.at5.nl/embedder/smil?m=',//div/@data-video)" -e "json:=[ //@src ! { 'format':concat('mp4-',extract(.,'_(.+)\.',1)), 'url':concat('http://rtvnh-dl1.streamgate.nl',substring-after(.,'content2')) }, for $x in //@src ! concat(replace(//@base,'rtmp','http'),substring-after(.,'mp4:'),'/playlist.m3u8') return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1)) } ], formats:=join($json()/format,', '), best:=$json()[last()]/format" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.rtvutrecht.nl/live/rtvutrecht/" -e "prid:=//script/extract(.,'\"prid\": \"(.+)\"',1)[.]" prid := LI_RTUT_449889 -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never "http://www.rtvutrecht.nl/gemist/uitzending/rtvutrecht/u-vandaag/20161006-1210/8106766" --xquery "if (count(//div[contains(@id,'videoplayer')])=1) then let $a:=//script/extract(.,'(http.+mp4)',1)[.] return (name:=concat('RTV Utrecht - ',if (contains($url,'gemist')) then substring-before(//h2[@class='h2-large-met-grijs border-top'][1],' -') else replace(if (//p[@class='margin-bottom-5 fragment-bijschrift']/text()) then //p[@class='margin-bottom-5 fragment-bijschrift'] else //meta[@name='og:title']/@content,'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),_url:=$a) else (json:=[for $x at $i in //div[contains(@id,'videoplayer')]/@id return {$i||'e':let $a:=//script[contains(.,$x)]/extract(.,'(http.+mp4)',1)[.] return {'name':concat('RTV Utrecht - ',replace(//p[@class='margin-bottom-5 fragment-bijschrift'][$i],'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),'url':$a}}],videos:=join($json()(),', '))" name := RTV Utrecht - U Vandaag (06102016) _url := http://content.omroep.nl/rtvutrecht/uitzendinggemist/rtvutrecht/2016/10/06/RTV1514348_MQ.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvutrecht.nl/nieuws/1528141/hippe-frietwinkels-en-hamburgertenten-zijn-blijvertje.html" --xquery "if (count(//div[contains(@id,'videoplayer')])=1) then let $a:=//script/extract(.,'(http.+mp4)',1)[.] return (name:=concat('RTV Utrecht - ',if (contains($url,'gemist')) then substring-before(//h2[@class='h2-large-met-grijs border-top'][1],' -') else replace(if (//p[@class='margin-bottom-5 fragment-bijschrift']/text()) then //p[@class='margin-bottom-5 fragment-bijschrift'] else //meta[@name='og:title']/@content,'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),_url:=$a) else (json:=[for $x at $i in //div[contains(@id,'videoplayer')]/@id return {$i||'e':let $a:=//script[contains(.,$x)]/extract(.,'(http.+mp4)',1)[.] return {'name':concat('RTV Utrecht - ',replace(//p[@class='margin-bottom-5 fragment-bijschrift'][$i],'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),'url':$a}}],videos:=join($json()(),', '))" name := RTV Utrecht - ''''Consumenten willen weten waar voedsel vandaan komt'' (05102016) _url := http://content.omroep.nl/rtvutrecht/reportages/video/2016/10/05/875160_MQ.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvutrecht.nl/nieuws/1528134/docent-verliest-weddenschap-en-springt-in-oudegracht.html" --xquery "if (count(//div[contains(@id,'videoplayer')])=1) then let $a:=//script/extract(.,'(http.+mp4)',1)[.] return (name:=concat('RTV Utrecht - ',if (contains($url,'gemist')) then substring-before(//h2[@class='h2-large-met-grijs border-top'][1],' -') else replace(if (//p[@class='margin-bottom-5 fragment-bijschrift']/text()) then //p[@class='margin-bottom-5 fragment-bijschrift'] else //meta[@name='og:title']/@content,'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),_url:=$a) else (json:=[for $x at $i in //div[contains(@id,'videoplayer')]/@id return {$i||'e':let $a:=//script[contains(.,$x)]/extract(.,'(http.+mp4)',1)[.] return {'name':concat('RTV Utrecht - ',replace(//p[@class='margin-bottom-5 fragment-bijschrift'][$i],'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),'url':$a}}],videos:=join($json()(),', '))" name := RTV Utrecht - Docent verliest weddenschap en springt in Oudegracht (05102016) _url := http://content.omroep.nl/rtvutrecht/reportages/video/2016/10/05/876228_MQ.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.rtvutrecht.nl/nieuws/1528065/opas-en-omas-in-het-zonnetje-tijdens-de-kinderboekenweek.html" --xquery "if (count(//div[contains(@id,'videoplayer')])=1) then let $a:=//script/extract(.,'(http.+mp4)',1)[.] return (name:=concat('RTV Utrecht - ',if (contains($url,'gemist')) then substring-before(//h2[@class='h2-large-met-grijs border-top'][1],' -') else replace(if (//p[@class='margin-bottom-5 fragment-bijschrift']/text()) then //p[@class='margin-bottom-5 fragment-bijschrift'] else //meta[@name='og:title']/@content,'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),_url:=$a) else (json:=[for $x at $i in //div[contains(@id,'videoplayer')]/@id return {$i||'e':let $a:=//script[contains(.,$x)]/extract(.,'(http.+mp4)',1)[.] return {'name':concat('RTV Utrecht - ',replace(//p[@class='margin-bottom-5 fragment-bijschrift'][$i],'["']',''''''),replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)')),'url':$a}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV Utrecht - Kinderen verkleed als opa''s en oma''s tijdens Kinderboekenweek (05102016)", "url": "http://content.omroep.nl/rtvutrecht/reportages/video/2016/10/05/875042_MQ.mp4"}}, {"2e": {"name": "RTV Utrecht - De Utrechtse kinderboekenschrijver Marcel van Driel over de Kinderboekenweek. (06102016)", "url": "http://content.omroep.nl/rtvutrecht/reportages/video/2016/10/06/876461_MQ.mp4"}}] videos := 1e, 2e --xquery "if (count(//div[contains(@id,'videoplayer')])=1) then let $a:=//script/extract(.,'(http.+mp4)',1)[.] return ( name:=concat( 'RTV Utrecht - ', if (contains($url,'gemist')) then substring-before(//h2[@class='h2-large-met-grijs border-top'][1],' -') else replace( if (//p[@class='margin-bottom-5 fragment-bijschrift']/text()) then //p[@class='margin-bottom-5 fragment-bijschrift'] else //meta[@name='og:title']/@content, '["']','''''' ), replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)') ), _url:=$a ) else ( json:=[ for $x at $i in //div[contains(@id,'videoplayer')]/@id return { $i||'e':let $a:=//script[contains(.,$x)]/extract(.,'(http.+mp4)',1)[.] return { 'name':concat( 'RTV Utrecht - ', replace(//p[@class='margin-bottom-5 fragment-bijschrift'][$i],'["']',''''''), replace($a,'.+(\d{4})/(\d{2})/(\d{2}).+',' ($3$2$1)') ), 'url':$a } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omroepgelderland.nl/tv" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('Omroep Gelderland - ',(//h3)[1],replace(//@data-media,'.+?(\d+)/(\d+)/\d{4}(\d+).+',' ($3$2$1)')) else concat('Omroep Gelderland - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Gelderland - Livestream ($1$2$3)'),url:=extract(unparsed-text(//@data-media),'(.+m3u8)',1)) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('Omroep Gelderland - ',replace($x/@title,'["']',''''''),$a),'url':$x/@data-media}}],videos:=join($json()(),', '))" name := Omroep Gelderland - Livestream (06102016) url := http://ngx.cr2.streamzilla.xlcdn.com/session/17a338aa7f91fe25a6f7b93598817708/sz/omroepgelderland/wowza4/live/livetv/chunklist.m3u8 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepgelderland.nl/tv/programma/211935511/GLD-Vandaag/aflevering/178131605" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('Omroep Gelderland - ',(//h3)[1],replace(//@data-media,'.+?(\d+)/(\d+)/\d{4}(\d+).+',' ($3$2$1)')) else concat('Omroep Gelderland - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Gelderland - Livestream ($1$2$3)'),url:=extract(unparsed-text(//@data-media),'(.+m3u8)',1)) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('Omroep Gelderland - ',replace($x/@title,'["']',''''''),$a),'url':$x/@data-media}}],videos:=join($json()(),', '))" name := Omroep Gelderland - GLD Vandaag (05102016) _url := http://content.omroep.nl/omroepgelderland/uitzendingen/video/2016/10/161005%20001%20GLD%20Va ndaag.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepgelderland.nl/nieuws/2118135/N18-tijdelijk-afgesloten-voor-nieuwe-brug" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('Omroep Gelderland - ',(//h3)[1],replace(//@data-media,'.+?(\d+)/(\d+)/\d{4}(\d+).+',' ($3$2$1)')) else concat('Omroep Gelderland - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Gelderland - Livestream ($1$2$3)'),url:=extract(unparsed-text(//@data-media),'(.+m3u8)',1)) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('Omroep Gelderland - ',replace($x/@title,'["']',''''''),$a),'url':$x/@data-media}}],videos:=join($json()(),', '))" name := Omroep Gelderland - N18 wordt aangepakt (05102016) _url := http://content.omroep.nl/omroepgelderland/items/video/2016/10/gld_n18_wordt_aangepakt.mp4 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepgelderland.nl/nieuws/2117539/Poep-op-kip-vallende-kuikens-en-Salmonella-Gelderse-kippenslachters-hebben-boel-niet-op-orde?r=achterhoek" --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then (name:=if ($a='video:episode') then concat('Omroep Gelderland - ',(//h3)[1],replace(//@data-media,'.+?(\d+)/(\d+)/\d{4}(\d+).+',' ($3$2$1)')) else concat('Omroep Gelderland - ',replace($c/@title,'["']',''''''),$b),_url:=$c/@data-media) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Gelderland - Livestream ($1$2$3)'),url:=extract(unparsed-text(//@data-media),'(.+m3u8)',1)) else (json:=[for $x at $i in $c return {$i||'e':{'name':concat('Omroep Gelderland - ',replace($x/@title,'["']',''''''),$a),'url':$x/@data-media}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "Omroep Gelderland - Gelderse kippenslachters nemen een loopje met de regels: poep of grondvuil of Salmonella op het vlees (1) (03102016)", "url": "http://content.omroep.nl/omroepgelderland/items/video/2016/10/gld_v2_vieze_kip.mp4"}}, {"2e": {"name": "Omroep Gelderland - Gelderse kippenslachters nemen een loopje met de regels: poep of grondvuil of Salmonella op het vlees (2) (03102016)", "url": "http://content.omroep.nl/omroepgelderland/items/video/2016/10/gld_vervolg_vieze_kip.mp4"}}] videos := 1e, 2e --xquery "let $a:=//meta[@property='og:type']/@content return let $b:=replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') return let $c:=//div[@data-button='player-still-overlay icon-play'] return if (count($c)=1) then if ($a) then ( name:=if ($a='video:episode') then concat( 'Omroep Gelderland - ', (//h3)[1], replace(//@data-media,'.+?(\d+)/(\d+)/\d{4}(\d+).+',' ($3$2$1)') ) else concat( 'Omroep Gelderland - ', replace($c/@title,'["']',''''''), $b ), _url:=$c/@data-media ) else ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Gelderland - Livestream ($1$2$3)'), url:=extract(unparsed-text(//@data-media),'(.+m3u8)',1) ) else ( json:=[ for $x at $i in $c return { $i||'e':{ 'name':concat( 'Omroep Gelderland - ', replace($x/@title,'["']',''''''), $a ), 'url':$x/@data-media } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omroepwest.nl/tv" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=if ($a='video:episode') then replace(clipData/title,'(\d+)-(\d+)-(\d+).+- (.+)','Omroep West - $4 ($3$2$1)') else concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep West - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := Omroep West - Livestream (06102016) json := [{"format": "meta", "url": "http://d2dslh4sd7yvc1.cloudfront.net/live/omroepwest/ngrp:tv-feed_all/playlist.m3u8"}, {"format": "1418", "url": "http://d2dslh4sd7yvc1.cloudfront.net/live/omroepwest/ngrp:tv-feed_all/chunklist_b1298304.m3u8"}, {"format": "538", "url": "http://d2dslh4sd7yvc1.cloudfront.net/live/omroepwest/ngrp:tv-feed_all/chunklist_b498304.m3u8"}] formats := meta, 538, 1418 best := 1418 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepwest.nl/tv/programma/170000115/TV-West-Nieuws/aflevering/170067067" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=if ($a='video:episode') then replace(clipData/title,'(\d+)-(\d+)-(\d+).+- (.+)','Omroep West - $4 ($3$2$1)') else concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep West - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := Omroep West - TV West Nieuws (06102016) json := [{"format": "mp4-2000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/170067067_2000.mp4"}, {"format": "mp4-300", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/170067067_300.mp4"}, {"format": "mp4-1000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/170067067_1000.mp4"}] formats := mp4-300, mp4-1000, mp4-2000 best := mp4-2000 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepwest.nl/nieuws/3255808/Geen-straf-voor-anti-Zwarte-Piet-demonstrant" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=if ($a='video:episode') then replace(clipData/title,'(\d+)-(\d+)-(\d+).+- (.+)','Omroep West - $4 ($3$2$1)') else concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep West - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := Omroep West - Anti-zwarte piet activist niet gestraft voor mishandelen agent (06102016) json := [{"format": "mp4-1000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/3255553_1000.mp4"}, {"format": "mp4-300", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/3255553_300.mp4"}, {"format": "mp4-2000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/06/3255553_2000.mp4"}] formats := mp4-300, mp4-1000, mp4-2000 best := mp4-2000 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepwest.nl/nieuws/3253759/Moeder-bandenprikker-zorgde-voor-doorbraak-in-zaak" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=if ($a='video:episode') then replace(clipData/title,'(\d+)-(\d+)-(\d+).+- (.+)','Omroep West - $4 ($3$2$1)') else concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep West - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('Omroep West - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "Omroep West - Zestien maanden cel geëist tegen bandenprikker Westland: ''Hij was verbitterd na breuk relatie'' (04102016)", "formats": [{"format": "mp4-300", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253528_300.mp4"}, {"format": "mp4-2000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253528_2000.mp4"}, {"format": "mp4-1000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253528_1000.mp4"}]}}, {"2e": {"name": "Omroep West - Officier van justitie vol lof over moeder bandenprikker (04102016)", "formats": [{"format": "mp4-300", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253726_300.mp4"}, {"format": "mp4-2000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253726_2000.mp4"}, {"format": "mp4-1000", "url": "http://d3r6frfb0ko02q.cloudfront.net/video/2016/10/04/3253726_1000.mp4"}]}}] videos := 1e, 2e --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/( if ($a) then ( name:=if ($a='video:episode') then replace(clipData/title,'(\d+)-(\d+)-(\d+).+- (.+)','Omroep West - $4 ($3$2$1)') else concat( 'Omroep West - ', replace(clipData/title,'["']',''''''), replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), let $b:=publicationData/defaultMediaAssetPath return json:=[ clipData/(assets)()/{ 'format':concat('mp4-',bandwidth), 'url':concat($b,src) } ] ) else ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep West - Livestream ($1$2$3)'), let $b:=clipData/(assets)(1)/concat('http:',src) return json:=[ { 'format':'meta', 'url':$b }, tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$b),extract(.,'(.+m3u8)',1)) } ] ), let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return ( formats:=join($c,', '), best:=$c[last()] ) ) else ( json:=[ //@data-script ! { position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{ 'name':concat( 'Omroep West - ', replace(clipData/title,'["']',''''''), replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), 'formats':let $b:=publicationData/defaultMediaAssetPath return [ clipData/(assets)()/{ 'format':concat('mp4-',bandwidth), 'url':concat($b,src) } ] } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.rijnmond.nl/tv" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=concat('RTV Rijnmond - ',if ($a='video:episode') then substring-before(clipData/title,' -') else replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}],let $c:=for $x in $json()/format order by $x return $x return (formats:=join($c,', '),best:=$c[last()])) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Rijnmond - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return _url:=concat(resolve-uri('.',$b),extract(unparsed-text($b),'(.+m3u8)',1)))) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('RTV Rijnmond - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := RTV Rijnmond - Livestream (08102016) _url := http://d2i2s90ze02gic.cloudfront.net/live/rijnmond/tv-high/chunklist.m3u8 xidel-0.9.5.4998.exe -s --color=never "http://www.rijnmond.nl/tv/programma/27/Rijnmond-Nieuws/aflevering/5169" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=concat('RTV Rijnmond - ',if ($a='video:episode') then substring-before(clipData/title,' -') else replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}],let $c:=for $x in $json()/format order by $x return $x return (formats:=join($c,', '),best:=$c[last()])) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Rijnmond - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return _url:=concat(resolve-uri('.',$b),extract(unparsed-text($b),'(.+m3u8)',1)))) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('RTV Rijnmond - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := RTV Rijnmond - Rijnmond Nieuws (06102016) json := [{"format": "mp4-800", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_lq.mp4"}, {"format": "mp4-400", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_elq.mp4"}, {"format": "mp4-1200", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_vlq.mp4"}, {"format": "mp4-1600", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_mq.mp4"}, {"format": "mp4-2000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_hq.mp4"}, {"format": "mp4-3000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nwsdo061016.mp4_vhq.mp4"}] formats := mp4-400, mp4-800, mp4-1200, mp4-1600, mp4-2000, mp4-3000 best := mp4-3000 xidel-0.9.5.4998.exe -s --color=never "http://www.rijnmond.nl/nieuws/147210/Expositie-Unilever-blijkt-onverwacht-schot-in-roos" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=concat('RTV Rijnmond - ',if ($a='video:episode') then substring-before(clipData/title,' -') else replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}],let $c:=for $x in $json()/format order by $x return $x return (formats:=join($c,', '),best:=$c[last()])) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Rijnmond - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return _url:=concat(resolve-uri('.',$b),extract(unparsed-text($b),'(.+m3u8)',1)))) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('RTV Rijnmond - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" name := RTV Rijnmond - Unileverexpo in Vlaardingen (07102016) json := [{"format": "mp4-800", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_lq.mp4"}, {"format": "mp4-400", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_elq.mp4"}, {"format": "mp4-1200", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_vlq.mp4"}, {"format": "mp4-1600", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_mq.mp4"}, {"format": "mp4-2000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_hq.mp4"}, {"format": "mp4-3000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/nhistorieunilever07_10_16_T_6D968C747EAAEE2EC1258045002AD57A.mp4_vhq.mp4"}] formats := mp4-400, mp4-800, mp4-1200, mp4-1600, mp4-2000, mp4-3000 best := mp4-3000 xidel-0.9.5.4998.exe -s --color=never "http://www.rijnmond.nl/nieuws/147217/Karsdorp-wint-met-Oranje-van-Wit-Rusland" --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/(if ($a) then (name:=concat('RTV Rijnmond - ',if ($a='video:episode') then substring-before(clipData/title,' -') else replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $b:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}],let $c:=for $x in $json()/format order by $x return $x return (formats:=join($c,', '),best:=$c[last()])) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Rijnmond - Livestream ($1$2$3)'),let $b:=clipData/(assets)(1)/concat('http:',src) return _url:=concat(resolve-uri('.',$b),extract(unparsed-text($b),'(.+m3u8)',1)))) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{'name':concat('RTV Rijnmond - ',replace(clipData/title,'["']',''''''),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':let $b:=publicationData/defaultMediaAssetPath return [clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($b,src)}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "RTV Rijnmond - Jeffrey Bruma in gesprek met verslaggever Sinclair Bischop (07102016)", "formats": [{"format": "mp4-800", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_lq.mp4"}, {"format": "mp4-400", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_elq.mp4"}, {"format": "mp4-1200", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_vlq.mp4"}, {"format": "mp4-1600", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_mq.mp4"}, {"format": "mp4-2000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_hq.mp4"}, {"format": "mp4-3000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/7oktbruma_2EDFEB1EC7ECAC0EC125804500793FFC.mp4_vhq.mp4"}]}}, {"2e": {"name": "RTV Rijnmond - Rick Karsdorp: ''Dit is een hele mooie dag voor mij'' (07102016)", "formats": [{"format": "mp4-800", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_lq.mp4"}, {"format": "mp4-400", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_elq.mp4"}, {"format": "mp4-1200", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_vlq.mp4"}, {"format": "mp4-1600", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_mq.mp4"}, {"format": "mp4-2000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_hq.mp4"}, {"format": "mp4-3000", "url": "https://dcur8bjarl5c2.cloudfront.net/2016/video/0710Karsdorp_B8F62C0B556DC7E6C1258045007BA989.mp4_vhq.mp4"}]}}] videos := 1e, 2e --xquery "let $a:=//meta[@property='og:type']/@content return if (count(//@data-script)=1) then json(extract(unparsed-text(//@data-script),'var opts = (.+);',1))/( if ($a) then ( name:=concat( 'RTV Rijnmond - ', if ($a='video:episode') then substring-before(clipData/title,' -') else replace(clipData/title,'["']',''''''), replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), let $b:=publicationData/defaultMediaAssetPath return json:=[ clipData/(assets)()/{ 'format':concat('mp4-',bandwidth), 'url':concat($b,src) } ], let $c:=for $x in $json()/format order by $x return $x return ( formats:=join($c,', '), best:=$c[last()] ) ) else ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','RTV Rijnmond - Livestream ($1$2$3)'), let $b:=clipData/(assets)(1)/concat('http:',src) return _url:=concat(resolve-uri('.',$b),extract(unparsed-text($b),'(.+m3u8)',1)) ) ) else ( json:=[ //@data-script ! { position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/{ 'name':concat( 'RTV Rijnmond- ', replace(clipData/title,'["']',''''''), replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), 'formats':let $b:=publicationData/defaultMediaAssetPath return [ clipData/(assets)()/{ 'format':concat('mp4-',bandwidth), 'url':concat($b,src) } ] } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omroepzeeland.nl/streams/tv/index.php" -e "name:=if (contains($url,'streams')) then replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Zeeland - Livestream ($1$2$3)') else concat('Omroep Zeeland - ',//meta[@property='og:title']/@content,replace(//div[@class='field field-post-date'],'.+?(\d+)-(\d+)-(\d+).+',' ($1$2$3)'))" -f "if (//script[contains(@src,'bbvms')]) then //script[contains(@src,'bbvms')]/@src else concat('http://omroepzeeland.bbvms.com/p/OmroepZeelandDefault/c/',//@data-bbwid,'.js')" --xquery "json(extract($raw,'var opts = (.+);',1))/(let $a:=publicationData/defaultMediaAssetPath return json:=[if (contains($url,'livetv')) then (clipData/(assets)()[mediatype='MP4_MAIN']/{'format':concat('rtmp-',bandwidth),'url':src},for $x in clipData/(assets)()[mediatype='MP4_IPOD']/src return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1))}) else clipData/(assets)()/{'format':concat(replace(src,'.+\.(.+)','$1-'),bandwidth),'url':concat($a,src)}],let $b:=(for $x in $json()[contains(format,'rtmp')]/format order by $x return $x,for $x in $json()[not(contains(format,'rtmp'))]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()]))" name := Omroep Zeeland - Livestream (09102016) json := [{"format": "rtmp-1500", "url": "rtmp://livestream.zeelandnet.nl/live/omroepzeeland_tv_1500k.sdp"}, {"format": "rtmp-1000", "url": "rtmp://livestream.zeelandnet.nl/live/omroepzeeland_tv_1000k.sdp"}, {"format": "rtmp-200", "url": "rtmp://livestream.zeelandnet.nl/live/omroepzeeland_tv_200k.sdp"}, {"format": "1262", "url": "http://livestream.zeelandnet.nl:1935/live/omroepzeeland_tv_1000k.sdp/chunklist_w1146806076.m3u8"}, {"format": "1865", "url": "http://livestream.zeelandnet.nl:1935/live/omroepzeeland_tv_1500k.sdp/chunklist_w581168006.m3u8"}, {"format": "397", "url": "http://livestream.zeelandnet.nl:1935/live/omroepzeeland_tv_200k.sdp/chunklist_w2069810299.m3u8"}] formats := rtmp-200, rtmp-1000, rtmp-1500, 397, 1262, 1865 best := 1865 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepzeeland.nl/video/2016-10-07/1048557/zeeland-nu-vrijdag-7-oktober-2016" -e "name:=if (contains($url,'streams')) then replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Zeeland - Livestream ($1$2$3)') else concat('Omroep Zeeland - ',//meta[@property='og:title']/@content,replace(//div[@class='field field-post-date'],'.+?(\d+)-(\d+)-(\d+).+',' ($1$2$3)'))" -f "if (//script[contains(@src,'bbvms')]) then //script[contains(@src,'bbvms')]/@src else concat('http://omroepzeeland.bbvms.com/p/OmroepZeelandDefault/c/',//@data-bbwid,'.js')" --xquery "json(extract($raw,'var opts = (.+);',1))/(let $a:=publicationData/defaultMediaAssetPath return json:=[if (contains($url,'livetv')) then (clipData/(assets)()[mediatype='MP4_MAIN']/{'format':concat('rtmp-',bandwidth),'url':src},for $x in clipData/(assets)()[mediatype='MP4_IPOD']/src return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1))}) else clipData/(assets)()/{'format':concat(replace(src,'.+\.(.+)','$1-'),bandwidth),'url':concat($a,src)}],let $b:=(for $x in $json()[contains(format,'rtmp')]/format order by $x return $x,for $x in $json()[not(contains(format,'rtmp'))]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()]))" name := Omroep Zeeland - Zeeland Nu vrijdag 7 oktober 2016 (07102016) json := [{"format": "mp4-400", "url": "http://download.omroep.nl/omroepzeeland/bbw/omroepzeeland/media/2016/10/07/asset-2703972-1475856630743474.mp4"}, {"format": "mp4-1000", "url": "http://download.omroep.nl/omroepzeeland/bbw/omroepzeeland/media/2016/10/07/asset-2703972-1475856631194321.mp4"}, {"format": "mp4-2000", "url": "http://download.omroep.nl/omroepzeeland/bbw/omroepzeeland/media/2016/10/07/asset-2703972-1475856631636239.mp4"}, {"format": "3gp-400", "url": "http://download.omroep.nl/omroepzeeland/bbw/omroepzeeland/media/2016/10/07/asset-2703972-1475856631921054.3gp"}] formats := 3gp-400, mp4-400, mp4-1000, mp4-2000 best := mp4-2000 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepzeeland.nl/nieuws/2016-10-09/1048925/gaat-zeeuwse-kweeksla-wereld-redden-video" -e "name:=if (contains($url,'streams')) then replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Zeeland - Livestream ($1$2$3)') else concat('Omroep Zeeland - ',//meta[@property='og:title']/@content,replace(//div[@class='field field-post-date'],'.+?(\d+)-(\d+)-(\d+).+',' ($1$2$3)'))" -f "if (//script[contains(@src,'bbvms')]) then //script[contains(@src,'bbvms')]/@src else concat('http://omroepzeeland.bbvms.com/p/OmroepZeelandDefault/c/',//@data-bbwid,'.js')" --xquery "json(extract($raw,'var opts = (.+);',1))/(let $a:=publicationData/defaultMediaAssetPath return json:=[if (contains($url,'livetv')) then (clipData/(assets)()[mediatype='MP4_MAIN']/{'format':concat('rtmp-',bandwidth),'url':src},for $x in clipData/(assets)()[mediatype='MP4_IPOD']/src return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1))}) else clipData/(assets)()/{'format':concat(replace(src,'.+\.(.+)','$1-'),bandwidth),'url':concat($a,src)}],let $b:=(for $x in $json()[contains(format,'rtmp')]/format order by $x return $x,for $x in $json()[not(contains(format,'rtmp'))]/format order by $x return $x) return (formats:=join($b,', '),best:=$b[last()]))" name := Omroep Zeeland - Gaat Zeeuwse kweeksla de wereld redden? (video) (09102016) json := [{"format": "mp4-400", "url": "http://download.omroep.nl/omroepzeeland/bbw/vantage/omroepzeeland/2016/10/09/Asset_iPOD_Zeeuwse-PioniersPrijs-internet-2-ZNO161009HT.mp4"}, {"format": "mp4-1000", "url": "http://download.omroep.nl/omroepzeeland/bbw/vantage/omroepzeeland/2016/10/09/Asset_SD_Zeeuwse-PioniersPrijs-internet-2-ZNO161009HT.mp4"}, {"format": "mp4-2000", "url": "http://download.omroep.nl/omroepzeeland/bbw/vantage/omroepzeeland/2016/10/09/Asset_HD_Zeeuwse-PioniersPrijs-internet-2-ZNO161009HT.mp4"}] formats := mp4-400, mp4-1000, mp4-2000 best := mp4-2000 -e "name:=if (contains($url,'streams')) then replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Zeeland - Livestream ($1$2$3)') else concat( 'Omroep Zeeland - ', //meta[@property='og:title']/@content, replace(//div[@class='field field-post-date'],'.+?(\d+)-(\d+)-(\d+).+',' ($1$2$3)') )" -f "if (//script[contains(@src,'bbvms')]) then //script[contains(@src,'bbvms')]/@src else concat( 'http://omroepzeeland.bbvms.com/p/OmroepZeelandDefault/c/', //@data-bbwid, '.js' )" --xquery "json(extract($raw,'var opts = (.+);',1))/( let $a:=publicationData/defaultMediaAssetPath return json:=[ if (contains($url,'livetv')) then ( clipData/(assets)()[mediatype='MP4_MAIN']/{ 'format':concat('rtmp-',bandwidth), 'url':src }, for $x in clipData/(assets)()[mediatype='MP4_IPOD']/src return tail(tokenize(unparsed-text($x),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$x),extract(.,'(.+m3u8)',1)) } ) else clipData/(assets)()/{ 'format':concat(replace(src,'.+\.(.+)','$1-'),bandwidth), 'url':concat($a,src) } ], let $b:=( for $x in $json()[contains(format,'rtmp')]/format order by $x return $x, for $x in $json()[not(contains(format,'rtmp'))]/format order by $x return $x ) return ( formats:=join($b,', '), best:=$b[last()] ) )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.omroepbrabant.nl/Portal.aspx?type=tv" --xquery "let $a:=//meta[@property='og:type'] return if (count((//@data-url,//@data-script))=1) then json(extract(unparsed-text((//@data-url,//@data-script)),'var opts = (.+);',1))/clipData/(if ($a) then (name:=concat('Omroep Brabant - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Brabant - Livestream ($1$2$3)'),let $b:=substring-before((assets)(1)/src,'?') return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'.+/(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/clipData/{'name':concat('Omroep West - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]}}],videos:=join($json()(),', '))" name := Omroep Brabant - Livestream (10102016) json := [{"format": "meta", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/index.m3u8"}, {"format": "3029", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/1474531789-fast-1920-1080-2750000-index.m3u8"}, {"format": "1822", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/1474531789-fast-640-360-1600000-index.m3u8"}, {"format": "982", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/1474531789-fast-480-272-800000-index.m3u8"}, {"format": "457", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/1474531789-fast-320-180-300000-index.m3u8"}, {"format": "142", "url": "http://omroepbrabant.rr.kpnstreaming.nl/b2b/live/omroepbrabant/omroepbrabant_tv/1474531789-au-index.m3u8"}] formats := meta, 142, 457, 982, 1822, 3029 best := 3029 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepbrabant.nl/?epg/16537752/Brabant+Nieuws.aspx" --xquery "let $a:=//meta[@property='og:type'] return if (count((//@data-url,//@data-script))=1) then json(extract(unparsed-text((//@data-url,//@data-script)),'var opts = (.+);',1))/clipData/(if ($a) then (name:=concat('Omroep Brabant - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Brabant - Livestream ($1$2$3)'),let $b:=substring-before((assets)(1)/src,'?') return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'.+/(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/clipData/{'name':concat('Omroep West - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]}}],videos:=join($json()(),', '))" name := Omroep Brabant - Brabant Nieuws (10102016) json := [{"format": "mp4-500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_ulq.mp4?country=nl&geoip=true"}, {"format": "mp4-1700", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_lq.mp4?country=nl&geoip=true"}, {"format": "mp4-2900", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_hq.mp4?country=nl&geoip=true"}, {"format": "mp4-2300", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_mq.mp4?country=nl&geoip=true"}, {"format": "mp4-3500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_ehq.mp4?country=nl&geoip=true"}, {"format": "mp4-1100", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2334673_elq.mp4?country=nl&geoip=true"}] formats := mp4-500, mp4-1100, mp4-1700, mp4-2300, mp4-2900, mp4-3500 best := mp4-3500 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepbrabant.nl/?news/2557721023/Donorweek+Een+nier+doneren+is+toch+het+mooiste+cadeau+dat+je+iemand+kunt+geven.aspx" --xquery "let $a:=//meta[@property='og:type'] return if (count((//@data-url,//@data-script))=1) then json(extract(unparsed-text((//@data-url,//@data-script)),'var opts = (.+);',1))/clipData/(if ($a) then (name:=concat('Omroep Brabant - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Brabant - Livestream ($1$2$3)'),let $b:=substring-before((assets)(1)/src,'?') return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'.+/(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/clipData/{'name':concat('Omroep West - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]}}],videos:=join($json()(),', '))" name := Omroep Brabant - Een nier doneren bij leven is het mooiste cadeau dat je iemand kunt geven (07102016) json := [{"format": "mp4-500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_ulq.mp4"}, {"format": "mp4-1700", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_lq.mp4"}, {"format": "mp4-2900", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_hq.mp4"}, {"format": "mp4-2300", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_mq.mp4"}, {"format": "mp4-3500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_ehq.mp4"}, {"format": "mp4-1100", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2369613_elq.mp4"}] formats := mp4-500, mp4-1100, mp4-1700, mp4-2300, mp4-2900, mp4-3500 best := mp4-3500 xidel-0.9.5.4998.exe -s --color=never "http://www.omroepbrabant.nl/?news/2558441033/Nieuw+persoonlijk+record+en+tiende+plek+voor+Harm+Sengers+in+zijn+laatste+marathon.aspx" --xquery "let $a:=//meta[@property='og:type'] return if (count((//@data-url,//@data-script))=1) then json(extract(unparsed-text((//@data-url,//@data-script)),'var opts = (.+);',1))/clipData/(if ($a) then (name:=concat('Omroep Brabant - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),json:=[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]) else (name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Brabant - Livestream ($1$2$3)'),let $b:=substring-before((assets)(1)/src,'?') return json:=[{'format':'meta','url':$b},tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! {'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000),'url':concat(resolve-uri('.',$b),extract(.,'.+/(.+m3u8)',1))}]),let $c:=($json()[format='meta']/format,for $x in $json()[format!='meta']/format order by $x return $x) return (formats:=join($c,', '),best:=$c[last()])) else (json:=[//@data-script ! {position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/clipData/{'name':concat('Omroep West - ',replace(title,'["']',''''''),replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':[(assets)()/{'format':concat('mp4-',bandwidth),'url':src}]}}],videos:=join($json()(),', '))" json := [{"1e": {"name": "Omroep West - Keniaan Festus Talam wint 33e Eindhoven Marathon; Harm Sengers uit Eindhoven beste Nederlander. (09102016)", "formats": [{"format": "mp4-500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_ulq.mp4"}, {"format": "mp4-1700", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_lq.mp4"}, {"format": "mp4-2900", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_hq.mp4"}, {"format": "mp4-2300", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_mq.mp4"}, {"format": "mp4-3500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_ehq.mp4"}, {"format": "mp4-1100", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370738_elq.mp4"}]}}, {"2e": {"name": "Omroep West - Ontlading bij Harm Sengers na de finish in de Eindhovense marathon (09102016)", "formats": [{"format": "mp4-500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_ulq.mp4"}, {"format": "mp4-1700", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_lq.mp4"}, {"format": "mp4-2900", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_hq.mp4"}, {"format": "mp4-2300", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_mq.mp4"}, {"format": "mp4-3500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_ehq.mp4"}, {"format": "mp4-1100", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370826_elq.mp4"}]}}, {"3e": {"name": "Omroep West - Harm Sengers liep een nieuw persoonlijk record in de marathon van Eindhoven (09102016)", "formats": [{"format": "mp4-500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370822_ulq.mp4"}, {"format": "mp4-1700", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370822_lq.mp4"}, {"format": "mp4-2900", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370822_hq.mp4"}, {"format": "mp4-2300", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370822_mq.mp4"}, {"format": "mp4-3500", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/omroepbrabant/2016/video/2370822_ehq.mp4"}, {"format": "mp4-1100", "url": "http://omroepbrabantvod.download.kpnstreaming.nl/om roepbrabant/2016/video/2370822_elq.mp4"}]}}] videos := 1e, 2e, 3e --xquery "let $a:=//meta[@property='og:type'] return if (count((//@data-url,//@data-script))=1) then json(extract(unparsed-text((//@data-url,//@data-script)),'var opts = (.+);',1))/clipData/( if ($a) then ( name:=concat( 'Omroep Brabant - ', replace(title,'["']',''''''), replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), json:=[ (assets)()/{ 'format':concat('mp4-',bandwidth), 'url':src } ] ) else ( name:=replace('%date%','.+?(\d+)-(\d+)-(\d+)','Omroep Brabant - Livestream ($1$2$3)'), let $b:=substring-before((assets)(1)/src,'?') return json:=[ { 'format':'meta', 'url':$b) }, tail(tokenize(unparsed-text($b),'#EXT-X-STREAM-INF:')) ! { 'format':string(extract(.,'BANDWIDTH=(\d+)',1) idiv 1000), 'url':concat(resolve-uri('.',$b),extract(.,'.+/(.+m3u8)',1)) } ] ), let $c:=( $json()[format='meta']/format, for $x in $json()[format!='meta']/format order by $x return $x ) return ( formats:=join($c,', '), best:=$c[last()] ) ) else ( json:=[ //@data-script ! { position()||'e':json(extract(unparsed-text(.),'var opts = (.+);',1))/clipData/{ 'name':concat( 'Omroep West - ', replace(title,'["']',''''''), replace(publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), 'formats':[ (assets)()/{ 'format':concat('mp4-',bandwidth), 'url':src } ] } } ], videos:=join($json()(),', ') )" ================================================================================================================================ xidel-0.9.5.4998.exe -s --color=never "http://www.l1.nl/epg_nowon/popup/tv" -f "//iframe/@src" -e "prid:=//script/extract(.,'prid: \"(.+)\"',1)[.]" prid := LI_L1_716599 -------------------------------------------------------------------------------------------------------------------------------- xidel-0.9.5.4998.exe -s --color=never "http://www.l1.nl/video/l1nws-9-okt-2016" --xquery "json(extract(unparsed-text((//iframe ! doc(concat('http:',@src))//@src,//script[contains(@src,'bbvms')]/@src)),'var opts = (.+);',1))/(if (clipData) then (name:=concat('L1 - ',replace(clipData/title,'(.+) -.+','$1'),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $a:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($a,src)}],let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()])) else ())" --output-encoding=oem name := L1 - L1NWS (09102016) json := [{"format": "mp4-1000", "url": "http://content.omroep.nl/l1/bbw/video/20161009182121-MAIN.m4v"}, {"format": "mp4-600", "url": "http://content.omroep.nl/l1/bbw/video/20161009182522-IPOD.m4v"}] formats := mp4-600, mp4-1000 best := mp4-1000 xidel-0.9.5.4998.exe -s --color=never "http://www.l1.nl/nieuws/328444-l1mburg-helpt-terug-naar-peru" --xquery "json(extract(unparsed-text((//iframe ! doc(concat('http:',@src))//@src,//script[contains(@src,'bbvms')]/@src)),'var opts = (.+);',1))/(if (clipData) then (name:=concat('L1 - ',replace(clipData/title,'(.+) -.+','$1'),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $a:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($a,src)}],let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()])) else ())" --output-encoding=oem name := L1 - Promo L1mburg Helpt, terug naar Roemeni‰ (06102016) json := [{"format": "mp4-1000", "url": "http://content.omroep.nl/l1/bbw/video/20161006124111-MAIN.m4v"}, {"format": "mp4-600", "url": "http://content.omroep.nl/l1/bbw/video/20161006124126-IPOD.m4v"}] formats := mp4-600, mp4-1000 best := mp4-1000 xidel-0.9.5.4998.exe -s --color=never "http://www.l1.nl/video/l1sprt-marathon-eindhoven" --xquery "json(extract(unparsed-text((//iframe ! doc(concat('http:',@src))//@src,//script[contains(@src,'bbvms')]/@src)),'var opts = (.+);',1))/(if (clipData) then (name:=concat('L1 - ',replace(clipData/title,'(.+) -.+','$1'),replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),let $a:=publicationData/defaultMediaAssetPath return json:=[clipData/(assets)()/{'format':concat('mp4-',bandwidth),'url':concat($a,src)}],let $b:=for $x in $json()/format order by $x return $x return (formats:=join($b,', '),best:=$b[last()])) else ())" --output-encoding=oem (video niet beschikbaar / (clipData)=false) --xquery "json( extract( unparsed-text( ( //iframe ! doc(concat('http:',@src))//@src, //script[contains(@src,'bbvms')]/@src ) ), 'var opts = (.+);',1 ) )/( if (clipData) then ( name:=concat( 'L1 - ', replace(clipData/title,'(.+) -.+','$1'), replace(clipData/publisheddate,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)') ), let $a:=publicationData/defaultMediaAssetPath return json:=[ clipData/(assets)()/{ 'format':concat('mp4-',bandwidth), 'url':concat($a,src) } ], let $b:=for $x in $json()/format order by $x return $x return ( formats:=join($b,', '), best:=$b[last()] ) ) else () )"