You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Extractors samengevoegd en queries gerepareerd en compleet vernieuwd.
- Aparte NOS subroutine gemaakt, omdat $videos met informatie van alleen al 6 dynamische video's ver boven 8192 tekens uit komt. $videos bevat nu alleen nog maar de url van een losse video (uit een artikel) met een GOTO naar :NOS.
- Ondersteuning voor losse dynamische/adaptive video's toegevoegd.
FOR /F "delims="%%AIN ('^"%xidel%"%url%" -e "prid:=//@data-video-id" --output-format^=cmd^"') DO%%A
250
250
GOTO NPO
251
-
) ELSEIFNOT"%url:nos.nl/livestream=%"=="%url%" (
252
-
FOR /F "delims="%%AIN ('^"%xidel%"%url%" --xquery "name:=//h1||replace('%date%','.+?(\d+)-(\d+)-(\d+)',': Livestream ($1$2$3)'),let $a:=//video/x:request({'post':serialize-json({'stream':string(@data-stream)}),'url':@data-path})/json/json(substring-before(url,'p&callback')) return formats:=[{'format':'hls-0','extension':'m3u8','resolution':'manifest','url':$a},for $x at $i in tail(tokenize(extract(unparsed-text($a),'(#EXT-X-STREAM-INF.+m3u8$)',1,'ms'),'#EXT-X-STREAM-INF:')) order by extract($x,'BANDWIDTH=(\d+)',1) count $i return {'format':'hls-'||$i,'extension':'m3u8','resolution':extract($x,'RESOLUTION=([\dx]+)',1) ! (if (.) then . else 'audiospoor'),'vbitrate':extract($x,'video=(\d+)\d{3}',1) ! (if (.) then concat('v:',.,'k') else ''),'abitrate':replace($x,'.+audio.+?(\d+)\d{3}.+','a:$1k','s'),'url':resolve-uri('.',$a)||extract($x,'(.+m3u8)',1)}]" --output-encoding^=oem --output-format^=cmd^"') DO%%A
253
251
) ELSEIFNOT"%url:nos.nl=%"=="%url%" (
254
-
FOR /F "delims="%%AIN ('^"%xidel%"%url%" --xquery "videos:=[(if (//div[@class='video-play']) then //div[@class='video-play']/a/doc(@href) else .)/{position():{'name':concat('NOS: ',replace(//h1,'["']',''''''),replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),'formats':for $x at $i in //source order by extract($x/@data-label,'(\d+)p',1) count $i return {'format':'mp4-'||$i,'extension':'mp4','url':if (contains($x/@src,'ipv4-api')) then x:request({'data':$x/@src,'method':'HEAD'})/url else $x/@src}}}]" --output-encoding^=oem --output-format^=cmd^"') DO%%A
252
+
IFNOT"%url:artikel=%"=="%url%" (
253
+
FOR /F "delims="%%AIN ('^"%xidel%"%url%" --xquery "videos:=[//div[@class='block_video block_largecenter']/{position():{'name':replace(.//div[@class='caption_content']/text(),'["']',''''''),'url':resolve-uri(.//@href),'goto':'NOS'}}]" --output-encoding^=oem --output-format^=cmd^"') DO%%A
FOR /F "delims="%%AIN ('^"%xidel%"%url%" -e "prid:=json(//@data-at-player)/video_id" --output-format^=cmd^"') DO%%A
257
257
GOTO NPO
@@ -387,6 +387,22 @@ IF DEFINED formats (
387
387
388
388
REM ================================================================================================
389
389
390
+
:NOS
391
+
FOR /F "delims=" %%A IN ('^"%xidel% "%url%" --xquery "name:=concat('NOS: ',replace(//h1[ends-with(@class,'__title')],'["']',''''''),if (.//video/@data-type='livestream') then replace('%date%','.+?(\d+)-(\d+)-(\d+)',': Livestream ($1$2$3)') else replace(//@datetime,'(\d+)-(\d+)-(\d+).+',' ($3$2$1)')),formats:=//video/(if (@data-type='livestream') then let $a:=x:request({'url'://video/@data-stream,'method':'HEAD'})/url return [{'format':'hls-0','extension':'m3u8','resolution':'manifest','url':$a},for $x at $i in tail(tokenize(extract(unparsed-text($a),'(#EXT-X-STREAM-INF.+m3u8$)',1,'ms'),'#EXT-X-STREAM-INF:')) order by extract($x,'BANDWIDTH=(\d+)',1) count $i return {'format':'hls-'||$i,'extension':'m3u8','resolution':extract($x,'RESOLUTION=([\dx]+)',1) ! (if (.) then . else 'audiospoor'),'vbitrate':extract($x,'video=(\d+)\d{3}',1) ! (if (.) then concat('v:',.,'k') else ''),'abitrate':replace($x,'.+audio.+?(\d+)\d{3}.+','a:$1k','s'),'url':resolve-uri('.',$a)||extract($x,'(.+m3u8)',1)}] else if (@data-adaptive='true') then let $a:=x:request({'url':source/@src,'method':'HEAD'})/url return [{'format':'hls-0','extension':'m3u8','resolution':'manifest','url':$a},for $x at $i in tail(tokenize(unparsed-text($a),'#EXT-X-STREAM-INF:')) return {'format':'hls-'||$i,'extension':'m3u8','resolution':extract($x,'RESOLUTION=([\dx]+)',1),'vbitrate':concat('v:',extract($x,'video.+?(\d+)\d{3}',1),'k'),'abitrate':replace($x,'.+audio.+?(\d+)\d{3}.+','a:$1k','s'),'url':resolve-uri('.',$a)||extract($x,'(.+m3u8)',1)}] else [for $x at $i in source order by extract($x/@data-label,'(\d+)p',1) count $i return {'format':'mp4-'||$i,'extension':'mp4','url':if (contains($x/@src,'ipv4-api')) then x:request({'data':$x/@src,'method':'HEAD'})/url else $x/@src}])" --output-encoding^=oem --output-format^=cmd^"') DO %%A
392
+
393
+
IFDEFINED formats (
394
+
GOTO Formats
395
+
) ELSE (
396
+
ECHO.
397
+
ECHO Video niet ^(meer^) beschikbaar.
398
+
ECHO.
399
+
ECHO.
400
+
ENDLOCAL
401
+
GOTO Input
402
+
)
403
+
404
+
REM ================================================================================================
405
+
390
406
:rtlXL
391
407
FOR /F "delims=" %%A IN ('^"%xidel% "http://www.rtl.nl/system/s4m/vfd/version=2/uuid=%prid%/fmt=adaptive/" --xquery "$json[not(meta/nr_of_videos_total=0)]/(name:=replace(concat(.//station,': ',abstracts/name,' - ',if (.//classname='uitzending') then episodes/name else .//title,replace(.//original_date * duration('PT1S') + date('1970-01-01'),'(\d+)-(\d+)-(\d+)',' ($3$2$1)')),'["']',''''''),(material)()/(duration:=format-time(time(duration) + duration('PT0.5S'),'[H01]:[m01]:[s01]'),t:=hours-from-time($duration)*3600+minutes-from-time($duration)*60+seconds-from-time($duration),if ((.//ddr_timeframes)()[model='AVOD']/stop) then let $a:=(.//ddr_timeframes)()[model='AVOD']/stop * duration('PT1S') + dateTime('1970-01-01T00:00:00'),$b:=$a - current-dateTime() return expire:=concat(replace($a,'(\d+)-(\d+)-(\d+)T(.+)','$3-$2-$1 $4'),' (nog ',days-from-duration($b) ! (if (.=0) then () else if (.=1) then .||' dag en ' else .||' dagen en '),hours-from-duration($b) ! (if (.=0) then () else .||'u'),minutes-from-duration($b) ! (if (.=0) then () else .||'m'),round(seconds-from-duration($b)),'s)') else ()),formats:=x:request({'data':json('https://tm-videourlfeed.rtl.nl/api/url/%prid%?device=pc&format=hls')/url,'error-handling':'4xx=accept'})[contains(headers[1],'200')]/[{'format':'hls-0','extension':'m3u8','resolution':'manifest','url':url},for $x at $i in tail(tokenize(raw,'#EXT-X-STREAM-INF:')) order by extract($x,'BANDWIDTH=(\d+)',1) count $i return {'format':'hls-'||$i,'extension':'m3u8','resolution':extract($x,'RESOLUTION=([\dx]+)',1) ! (if (.) then . else 'audiospoor'),'vbitrate':extract($x,'video=(\d+)\d{3}',1) ! (if (.) then concat('v:',.,'k') else ''),'abitrate':replace($x,'.+audio.+?(\d+)\d{3}.+','a:$1k','s'),'url':let $a:=extract($x,'(.+m3u8)',1) return if (starts-with($a,'http')) then $a else resolve-uri('.',url)||$a,'ff_param':'-seekable 0'}])" --output-encoding^=oem --output-format^=cmd^"') DO %%A
0 commit comments