录制抖音直播视频批处理 Ver2

@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

 

posted @ 2020-07-16 13:42  1CM  阅读(404)  评论(0编辑  收藏  举报