1 (изменено: Alikberov, 2016-04-10 08:05:08)

Тема: BAT/CMD/JS: VLC Scheduler - VLC планировщик

Написал на досуге около года тому назад, чтобы не вскакивать по воскресным утрам для записи передач "Чудо Техники". Сам устанавливает подключение к интернету, если оборвалось, складывая фрагменты в один m3u.
Хоть скрипт и примитивный, глюки имеются. Но, теперь сплю спокойно и сколько хочу

@if (@a==@b) @end /*
@echo off
mode con lines=12 cols=40
setlocal EnableDelayedExpansion
Set dates=%date:~6,4%%date:~3,2%%date:~0,2%
set     ini=%~dpn0.ini
set doc=TEST
set m3u=%~dp0%dates%.m3u
echo #Session of %dates%#>>%m3u%
set Minimum=-1
:Begin
cls & set i=0
for /f "eol= tokens=* delims= usebackq" %%s in (%ini%) do (
        for /f "tokens=1,2" %%a in ("%%s") do (
                if "%%b"=="" (
                        echo %%a
                        set %%a
                        echo %%a.
                ) else (
                        if "%%a"=="Record" (
                                for /f "tokens=1,2,3 delims=:-" %%c in ("%%b") do (
                                        set Channel=%%c
                                        set Dating=%%d
                                        set Ending=%%e
                                        set Link=!Channel%%c!
                                        set/P Setup=Channel#%%c !Dating:~0,2!:!Dating:~2,2!-!Ending:~0,2!:!Ending:~2,2! to "!doc!.avi":
                                        set /a Digits=!Setup!
                                        if !Digits! == 0 (
                                                if not "!Setup!"=="" (
                                                        set doc=!Setup!
                                                        goto Begin
                                                )
                                        )
                                        if !Digits! == !Setup! (
                                                set /a Channel=!Digits!
                                        )
                                )
                        ) else (
                                set /a i=i+1
                                set Channel!i!=%%b
                                set Title!i!=%%a
                                if !i! lss 10 (echo 0!i!:%%a) else (echo !i!:%%a)
                        )
                )
        )
)
for /f "tokens=1,2 delims=:-" %%a in ("!Setup!") do (
        if "%%b"=="" (
                if not "%%a"=="" (
                        set Channel=%%a
                )
        ) else (
                set Dating=%%a
                set Ending=%%b
        )
)
if not "!Setup!"=="" (
        set Setup=
        del %ini%>nul
        for /l %%j in (1,1,%i%) do echo !Title%%j!      !Channel%%j!>>%ini%
        echo Record     !Channel!:!Dating!-!Ending!>>%ini%
        goto Begin
)
mode con lines=1 cols=40
:Waiting
Set Times=%time:~0,2%%time:~3,2%
Set Times=!Times: =0!
Set /a Current=(!Times:~0,1!*600)+(!Times:~1,1!*60)+(!Times:~2,1!*10)+(!Times:~3,1!)
Set /a Expect=(!Dating:~0,1!*600)+(!Dating:~1,1!*60)+(!Dating:~2,1!*10)+(!Dating:~3,1!)
Set /a Remains=!Expect!-!Current!
Set /a Hours=!Remains!/60
Set /a Minutes=!Remains!-(!Hours!*60)
if !Hours! leq 9 set Hours=0%Hours%
if !Minutes! leq 9 set Minutes=0%Minutes%
cls & <nul set/P z=%time:~0,8%[!Dating:~0,2!:!Dating:~2,2!..!Ending:~0,2!:!Ending:~2,2!] - !Hours!:!Minutes!
if !Remains! gtr 0 (ping -n 2 127.0.0.1 >nul & goto Waiting)
C:
cd "%ProgramFiles(x86)%\VideoLAN\VLC"
mode con lines=1 cols=8
:Recording
Set Times=%time:~0,2%%time:~3,2%
Set Times=!Times: =0!
Set /a Current=(!Times:~0,1!*600)+(!Times:~1,1!*60)+(!Times:~2,1!*10)+(!Times:~3,1!)
Set /a Expect=(!Ending:~0,1!*600)+(!Ending:~1,1!*60)+(!Ending:~2,1!*10)+(!Ending:~3,1!)
Set /a Remains=!Expect!-!Current!
Set /a Hours=!Remains!/60
Set /a Minutes=!Remains!-(!Hours!*60)
if !Hours! leq 9 set Hours=0%Hours%
if !Minutes! leq 9 set Minutes=0%Minutes%
<nul set/P z=%time:~0,8%[!Dating:~0,2!:!Dating:~2,2!..!Ending:~0,2!:!Ending:~2,2!] - !Hours!:!Minutes!
if !Remains! lss !Minimum! goto Playing
set Minimum=5
rasdial <provider> <login> <password>
if %ErrorLevel% NEQ 0 (cls & echo  & ping -n 2 127.0.0.1 >nul & echo  & goto Recording)
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0" "%Link%"') do (
        set url=%%I
        <nul set/P z=:
        goto Record
)
goto Recording
:Playing
cls & echo COMPLETE %Files%
echo vlc://quit>>%m3u%
start "Video Session" /MIN vlc --no-autoscale --zoom=0.4 --video-x=-640 --video-y=300 --no-video-deco --no-embedded-video --scale=50 --directx-volume=0.5 --qt-opacity=0.5 %m3u% --play-and-exit
goto :EOF
:Record
Set dates=%date:~6,4%%date:~3,2%%date:~0,2%
Set File=%~dp0%dates%.%doc%.%Times%.mp4
Set /a Limit=!Remains!*60
echo %File%>> %m3u%
start "Video Session" /MIN vlc --no-autoscale --zoom=0.4 --video-x=-640 --video-y=300 --no-video-deco --no-embedded-video --scale=50 --directx-volume=0.5 --qt-opacity=0.5 %file% --play-and-exit
vlc -vvv --qt-minimal-view --qt-opacity=0.5 --run-time %limit% %url% :sout=#duplicate{dst=std{access=file,mux=ts,dst="%File%"}} vlc://quit --play-and-exit %full%
goto Recording
JScript */var x=new ActiveXObject("Microsoft.XMLHTTP");
x.open("GET",WSH.Arguments(0),true);
x.setRequestHeader("User-Agent","XMLHTTP/1.0");
x.send("");
while (x.readyState!=4) {WSH.Sleep(50)};
var s=x.responseText;
WSH.Echo(s.match(/var showFile = '([^']+)'/)[1]);

Пример ini-файла:

Первый  http://your_site/index.php?identificator#1
Россия  http://your_site/index.php?identificator#2
ТВ3     http://your_site/index.php?identificator#3
НТВ     http://your_site/index.php?identificator#4
Record  2:2320-2351