radiko.jpのタイムフリーを一括ダウンロードバッチを改良修正した

–2020年11月27日追記–
※現在radiko.jpの仕様変更で下記の記事は実行できません。

radiko.jpのタイムフリーをバッチファイルで一括ダウンロードしてみた

前回の記事で実際に一括ダウンロードしてみたので記事を書いたがその後毎日いつ実行してもいい状況を想定して改良修正したのでここに記事にしたい

radiko.jpのタイムフリーをバッチファイルで一括ダウンロードする

AYTHKeyGet.vbsの導入は前回の記事を参考にしてください。date.vbsを追加しtimeshift_get.batを修正します。
date.vbs

' CScript date.vbs w
' CScript date.vbs /d:-6

Option Explicit
dim argDay
Dim aNamed
Set aNamed = WScript.Arguments.Named
argDay = WScript.Arguments. Named.Item("d")
Dim strFormattedDate

Dim argC
Dim i
Dim strCmd
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Dim aUnnamed
Set aUnnamed = WScript.Arguments.Unnamed
argC = ""
If aUnnamed.Count > 0 Then
  For i = 0 To aUnnamed.Count - 1
    Select Case i
      Case 0
        argC = aUnnamed.Item(i)
    End Select
  Next
End If

if not (argDay = "") Then

  dim strNow
  strNow = Now()
  strFormattedDate = DateAdd("d",argDay,strNow)
  strFormattedDate = Left(strFormattedDate, 10)
 	strFormattedDate = Replace(strFormattedDate, "/", "")
  WScript.Echo strFormattedDate 

End If

if (argC = "w") Then
  WScript.Quit(WeekDay(Date))
End If

日付計算のためのスプリクトです。

timeshift_get.bat

D:
cd \RadikoRec

set F=./rec/
REM TBS,QRR,LFR,RN1,RN2,INT,FMT,FMJ,JORF,BAYFM78,NACK5,YFM,HOUSOU-DAIGAKU

goto DAY

:MON
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%175000 %D%180000 %F%%D%1750_週刊自動車批評
exit /b

:TUE
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%010000 %D%030000 %F%%D%0100_JUNK_伊集院光・深夜の馬鹿力

REM 終了時間が日付をまたぐので一日足す
set /a dayC=%dayC%+1
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D2=%%i
call :get_ts RN1 %D%233000 %D2%000000 %F%%D%2330_Anime_&_Seiyu_Music_Night
exit /b

:WED
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%010000 %D%030000 %F%%D%0100_JUNK_爆笑問題カーボーイ
call :get_ts RN2 %D%223000 %D%230000 %F%%D%2230_ライダーズ
exit /b

:THU
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%010000 %D%030000 %F%%D%0100_JUNK_山里亮太の不毛な議論
exit /b

:FRI
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%010000 %D%030000 %F%%D%0100_JUNK_おぎやはぎのメガネびいき
call :get_ts LFR %D%010000 %D%030000 %F%%D%0100_LFR_ナインティナイン_岡村のオールナイトニッポン
exit /b

:SAT
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%010000 %D%030000 %F%%D%0100_JUNK_バナナマンのバナナムーンGOLD

call :get_ts FMT %D%170000 %D%175000 %F%%D%1700_MITSUBISHI_MOTORS_ピートのふしぎなガレージ
call :get_ts TBS %D%130000 %D%145500 %F%%D%1300_久米宏_ラジオなんですけど
call :get_ts QRR %D%210000 %D%230000 %F%%D%2100_A&G_TRIBAL_RADIO_エジソン

REM 終了時間が日付をまたぐので一日足す
set /a dayC=%dayC%+1
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D2=%%i
call :get_ts QRR %D%230000 %D2%000000 %F%%D%2300_A&Gメディアステーション_こむちゃっとカウントダウン
exit /b

:SUN
for /f %%i in ('CScript date.vbs /d:%dayC%') do SET D=%%i
call :get_ts TBS %D%130000 %D%170000 %F%%D%1300_爆笑問題の日曜サンデー
exit /b


REM ここから処理部分
:DAY
cscript /b date.vbs w
if %errorlevel%==7 set WDAY=SAT
if %errorlevel%==6 set WDAY=FRI
if %errorlevel%==5 set WDAY=THU
if %errorlevel%==4 set WDAY=WED
if %errorlevel%==3 set WDAY=TUE
if %errorlevel%==2 set WDAY=MON
if %errorlevel%==1 set WDAY=SUN

if "%WDAY%" == "MON" (
  set /a dayC=-6
  call :TUE
  set /a dayC=-5
  call :WED
  set /a dayC=-4
  call :THU
  set /a dayC=-3
  call :FRI
  set /a dayC=-2
  call :SAT
  set /a dayC=-1
  call :SUN
  set /a dayC=0
  call :MON
  exit
)

if "%WDAY%" == "TUE" (
  set /a dayC=-6
  call :WED
  set /a dayC=-5
  call :THU
  set /a dayC=-4
  call :FRI
  set /a dayC=-3
  call :SAT
  set /a dayC=-2
  call :SUN
  set /a dayC=-1
  call :MON
  set /a dayC=0
  call :TUE
  exit
)

if "%WDAY%" == "WED" (
  set /a dayC=-6
  call :THU
  set /a dayC=-5
  call :FRI
  set /a dayC=-4
  call :SAT
  set /a dayC=-3
  call :SUN
  set /a dayC=-2
  call :MON
  set /a dayC=-1
  call :TUE
  set /a dayC=0
  call :WED
  exit
)

if "%WDAY%" == "THU" (
  set /a dayC=-6
  call :FRI
  set /a dayC=-5
  call :SAT
  set /a dayC=-4
  call :SUN
  set /a dayC=-3
  call :MON
  set /a dayC=-2
  call :TUE
  set /a dayC=-1
  call :WED
  set /a dayC=0
  call :THU
  exit
)

if "%WDAY%" == "FRI" (
  set /a dayC=-6
  call :SAT
  set /a dayC=-5
  call :SUN
  set /a dayC=-4
  call :MON
  set /a dayC=-3
  call :TUE
  set /a dayC=-2
  call :WED
  set /a dayC=-1
  call :THU
  set /a dayC=0
  call :FRI
  exit
)

if "%WDAY%" == "SAT" (
  set /a dayC=-6
  call :SUN
  set /a dayC=-5
  call :MON
  set /a dayC=-4
  call :TUE
  set /a dayC=-3
  call :WED
  set /a dayC=-2
  call :THU
  set /a dayC=-1
  call :FRI
  set /a dayC=0
  call :SAT
  exit
)

if "%WDAY%" == "SUN" (
  set /a dayC=-6
  call :MON
  set /a dayC=-5
  call :TUE
  set /a dayC=-4
  call :WED
  set /a dayC=-3
  call :THU
  set /a dayC=-2
  call :FRI
  set /a dayC=-1
  call :SAT
  set /a dayC=0
  call :SUN
  exit
)

echo date.vbs処理エラー
pause

:get_ts

set ch=%1
set ft=%2
set to=%3
set AYTHKeyGet=AYTHKeyGet.vbs
del timeshift.m3u8

for /f %%i in ('CScript %AYTHKeyGet% %ch%') do SET AUTHTOKEN=%%i

wget -q --header="pragma: no-cache" --header="Content-Type: application/x-www-form-urlencoded" --header="X-Radiko-AuthToken: %AUTHTOKEN%" --header="Referer: http://radiko.jp/apps/js/flash/myplayer-release.swf" --post-data='flash=1' --no-check-certificate -O timeshift.m3u8  "https://radiko.jp/v2/api/ts/playlist.m3u8?l=15&station_id=%ch%&ft=%ft%&to=%to%"

for /f %%i in ('find "radiko" timeshift.m3u8') do SET PLAYLIST_URL=%%i

REM ffmpeg -headers "X-Radiko-AuthToken: %AUTHTOKEN%" -i %PLAYLIST_URL% "%4.m4a"
ffmpeg -headers "X-Radiko-AuthToken: %AUTHTOKEN%" -i %PLAYLIST_URL% "%4.ts"

exit /b

毎日いつ実行してもいい状況を想定して書いてあります。
F=./rec/は録音ファイルのフォルダー名です。
MON(月)TUE(火)WED(水)THU(木)FRI(金)SAT(土)SUN(日)
なと曜日でダウンロードしたい日に番組を指定していきます。
get_ts 局名 開始時間 終了時間 録音ファイル名 です
EXITでバッチが終了します。
タイムフリーは一週間分しかダウンロードできません。ラジコプレミアムに加入してればどの地域の人でもダウンロードできます。

radiko.jpのラジコプレミアムに対応した


こちらを参照してください。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)