@echo off
chcp 936 1>nul 2>nul
set url=%~1
if NOT DEFINED url (
echo input URL
exit /b
)
:start
set tmp=%random%_%random%_%random%
set tmpfn=%tmp%.txt
wget %url% -O %tmp%.html 1>nul 2>nul
iconv -c -f utf-8 -t gb2312 %tmp%.html|sed s/,/,\n/g>%tmpfn%
del /Q %tmp%.html
set roomid=0
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"room_id_str\":\"[0-9]{19}\""^|grep -Eoi "[0-9]{19}"') DO (
set roomid=%%i
)
set userid=0
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"display_id\":(.*?),"') DO (
set userid=%%i
goto next
)
:next
set userid=%userid:display_id=%
set userid=%userid:enable_ichat_img=%
set userid=%userid:"=%
set userid=%userid::=%
set userid=%userid:,=%
set userid=%userid: =%
echo userID = %userid%
set city=0
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"city\":(.{3,20}),"') DO (
set city=%%i
goto next2
)
:next2
set city=%city:city=%
set city=%city:comment_restrict=%
set city=%city:"=%
set city=%city::=%
set city=%city:,=%
set city=%city: =%
echo city = %city%
set nickname=0
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"nickname\":(.*?),"') DO (
set nickname=%%i
goto next3
)
:next3
set nickname=%nickname:nickname=%
set nickname=%nickname:own_room=%
set nickname=%nickname:"=%
set nickname=%nickname::=%
set nickname=%nickname:,=%
set nickname=%nickname: =%
echo nickname = %nickname%
del /Q %tmpfn%
if "%roomid%"=="0" (
echo can't find room id
goto end
)
echo roomID = %roomid%
set tmpfn=%random%_%random%_%random%.txt
set getinfourl="https://webcast-hl.amemv.com/webcast/room/reflow/info/?room_id=%roomid%&live_id=1"
wget %getinfourl% -O %tmpfn% 1>nul 2>nul
set rtmp=0
set hls=0
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"rtmp_pull_url\":(.*?).flv"^|grep -Eoi "http://(.*?).flv" ') DO (
set rtmp=%%i
)
FOR /F %%i IN ('cat %tmpfn%^|grep -Eoi "\"hls_pull_url\":(.*?).m3u8...hls"^|grep -Eoi "http://(.*?).m3u8" ') DO (
set hls=%%i
)
del /Q %tmpfn%
if "%rtmp%"=="0" (
echo can't find rtmp url
goto end
)
if "%hls%"=="0" (
echo can't find hls url
goto end
)
echo %rtmp%
echo %hls%
set t=%time::=.%
set t=%t: =0%
set t=%t:.=-%
set t=%t:~0,8%
set t=%t:-=%
set d=%date:-=%
set savefn=%userid%_%nickname%_%city%_%roomid%
call :replaceAsterisks %savefn%
set savefn=%replaceAsterisks%
set savefn=%savefn:?=%
set savefn=%savefn: =%
set logfn="_%savefn%_play.cmd"
set logfn2="_%savefn%_recordRTMP.cmd"
set savefn=%savefn%_%d%-%t%
md "%savefn%" 1>nul 2>nul
cd "%savefn%"
set savefnrtmp="_%savefn%.flv"
set savefn="_%savefn%.m3u8"
echo :: inURL = %url%>%logfn%
echo :: userID = %userid%>>%logfn%
echo :: city = %city%>>%logfn%
echo :: roomID = %roomid%>>%logfn%
echo :: nickname = %nickname%>>%logfn%
echo ffplay %rtmp% -vf scale=-1:1024>>%logfn%
echo.>>%logfn%
echo :: %hls%>>%logfn%
echo ffmpeg -hide_banner -wt "R %nickname%" -v info -i "%rtmp%" -c copy %savefnrtmp%>>%logfn2%
wget "%hls%" --connect-timeout=3 --timeout=3 --waitretry=3 --tries=6 -O nul 1>nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo Not find m3u8.
title DONE %nickname%
goto ffmpeg
)
echo %savefn%
title R %nickname%
goto hls
:ffmpeg
ffmpeg -hide_banner -wt "R %nickname%" -v info -i "%rtmp%" -c copy %savefnrtmp%
goto stop
:hls
hlslivedl -i "%hls%" -o %savefn%
:stop
title DONE %nickname%
cd ..
choice.exe /c qc /n /t 32 /d c /m "Wait for 32 seconds Press Q to stop"
if %errorlevel%==1 goto end
goto start
exit /b
:end
exit /b
:replaceAsterisks
for /f "tokens=1-3,* delims=*" %%a in ("%~1") do (set replaceAsterisks=%%a%%b%%c%%d)
exit /b