2022年10月にラジコプレミアムのログイン仕様が変更された為、
AYTHKeyGet.vbsに変更があります。
こちらの記事をご参照ください
http://hanpen.lsv.jp/blog.hanpen.net/radiko-jp%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%a0%e3%83%95%e3%83%aa%e3%83%bc%e3%82%92%e4%b8%80%e6%8b%ac%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%83%90%e3%83%83%e3%83%812022%e5%b9%b410/
らじる★らじるに合わせたようにradiko.jpのライブ放送もHLS形式ストリーミングに変更したようだ。早速バッチファイルを修正した。
要点を先に言うと他のHLS形式ストリーミングと同じようにffmpeg.exeを使用する。ffplay.exeでTBSを再生させると
ffplay.exe -headers "X-Radiko-AuthToken: ここにトークン" -i "http://c-radiko.smartstream.ne.jp/TBS/_definst_/simul-stream.stream/playlist.m3u8"
となる。以前のバッチファイルのrtmpdump部分を書きなおす。
以前からRadikoRec.batを使用してる人はRadikoRec.batとAYTHKeyGet.vbsを上書き変更すればいいです。
-追記-
放送局によってm3u8ファイルのURLが2種類あるようだ。
“http://c-radiko.smartstream.ne.jp/TBS/_definst_/simul-stream.stream/playlist.m3u8″の最初のサーバーの部分が
f-radiko.smartstream.ne.jpとc-radiko.smartstream.ne.jpの2種類だ。バッチファイルは対応しました。
radiko.jpの視聴ページに移動し画面を広げてF12を押してネットワークモニターを見る。
再生するとリストがずらずら出てくるが目的はm3u8ファイルだけなので検索バーにm3u8を入れると目的のURLが出てくるので右クリックしてURLをコピーする。

“http://f-radiko.smartstream.ne.jp/RN1/_definst_/simul-stream.stream/playlist.m3u8”
ラジオnikkei第1の場合このようなURLがコピーされる。
作成はWindows 10環境で作成しています。動作確認はWindows 7です。
利用にあたって
wget.exe
https://eternallybored.org/misc/wget/
ffmpeg.exe
http://hp.vector.co.jp/authors/VA020429/ffmpeg/ffmpeg.html
https://ffmpeg.org/
各種実行ファイルを集めて一つのフォルダに置いてください
D:\RadikoRec\にて実行する設定になっています
途中で回線が切断されても時間計算して再録音し最後にmp3に変換するようになっています。
-起動例-
radiko.bat TBS 1:00:00 菊地成孔の粋な夜電波
radiko.bat TBS 録音時間1時間 録音番組名(ファイル名に含まれます)
-追記-
放送局によってm3u8ファイルのURLが変わる仕組みに対応して変更しました。まだバグがあるかもしれませんが発見次第追って変更します。
RadikoRec.bat
@echo off
REM rtmpdumpなどの位置のドライブ
set drive=D:
REM rtmpdumpなどの位置(最後に\を)
set DFDirectory=D:\RadikoRec\
REM 録音ファイルの保存のドライブ
set argdrive=D:
REM 録音ファイルの保存先(最後に\を)
set argDirectory=D:\RadikoRec\rec\
set AYTHKeyGet=AYTHKeyGet.vbs
set argOut = "out"
%drive%
cd %DFDirectory%
rem 録音ファイルの保存先フォルダチェックと作成
IF NOT EXIST "%argDirectory%" (md %argDirectory%)
IF NOT EXIST "%argDirectory%OLD" (md %argDirectory%OLD)
set ch=%1
if "%1"=="" goto usage
if not "%2"=="" set argSTOPSEC=%2
if "%2"=="" goto usage
if not "%3"=="" set argOut=%3
rem サーバーurlの取得
DEL %ch%.xml
wget.exe "http://radiko.jp/v2/station/stream_smh_multi/%ch%.xml"
find "<playlist_create_url>" %ch%.xml >%ch%.txt
SET /P playlist_create_url=<%ch%.txt
for /f "usebackq skip=2 tokens=*" %%a in (%ch%.txt) do @set a=%%a&goto :exit_for
:exit_for
set playlist_create_url=%a:~28,26%
echo %playlist_create_url%
DEL %ch%.xml
DEL %ch%.txt
set radiko_url=http://%playlist_create_url%/%ch%/_definst_/simul-stream.stream/playlist.m3u8
rem 録音終了日時を求める
for /f "tokens=1,2" %%i in ('CScript Time.vbs /r:%argSTOPSEC%') do (
SET AUTHTOKEN_D=%%i
SET AUTHTOKEN_T=%%j
)
set loopck=0
:loop
for /f %%i in ('CScript %AYTHKeyGet% %ch%') do SET AUTHTOKEN=%%i
rem 録音時間を秒に変換
for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_END=%%i
set STOPSEC=-t %AUTHTOKEN_END%
if "%loopck%" == "0" set FLV_loop=
if "%loopck%" geq "1" set FLV_loop=(%loopck%)
set yyyymmdd=%date: =0%
set hhmmss=%time: =0%
set YMD=%yyyymmdd:~0,4%%yyyymmdd:~5,2%%yyyymmdd:~8,2%_%hhmmss:~0,2%%hhmmss:~3,2%%hhmmss:~6,2%
set FLV=%YMD%_%ch%_%argOut%
set RADI_PASS=
REM set RADI=%RTMPDUMP% -q -flashVer "WIN 15,0,0,152" -v -r "%RTMPSERVER%" --playpath "simul-stream.stream" --app "%ch%/_definst_" -C S:"" -C S:"" -C S:"" -C S:%AUTHTOKEN% --live --timeout 10 --flv "%argDirectory%%FLV%%FLV_loop%.flv" %STOPSEC%
set RADI=%DFDirectory%ffmpeg.exe -headers "X-Radiko-AuthToken: %AUTHTOKEN%" -i ""%radiko_url%"" %STOPSEC% -acodec copy "%argDirectory%%FLV%%FLV_loop%.ts"
echo 録音開始%date%_%time%_"%~3" >> log.txt
echo 「%ch%」の「%argOut%」を録音開始、録音時間は「%argSTOPSEC%」
echo %RADI%
%RADI%
echo 録音停止%date%_%time%_"%~3" >> log.txt
for /f %%i in ('CScript Time.vbs /d:%AUTHTOKEN_D% /t:%AUTHTOKEN_T%') do SET AUTHTOKEN_EXIT=%%i
if "%AUTHTOKEN_EXIT%" == "EXIT" goto loopEXIT
if "%loopck%" geq "20" goto loopEXIT
set /a loopck=loopck+1
REM Sleep[15秒数]
set /a wtime=15*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=
REM ***
goto loop
:loopEXIT
%argdrive%
cd %argDirectory%
for %%F in (*.ts) do goto FILE_EXIST
echo エラーファイルが無い%date%_%time%_%argOut% >> %DFDirectory%log.txt
goto end
:FILE_EXIST
echo MP3変換開始%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
REN *"%argOut%"*.ts *.m4a
for %%i in (*"%argOut%"*.m4a) do %DFDirectory%ffmpeg.exe -y -i "./%%~ni.m4a" -vn -acodec libmp3lame -strict unofficial "./%%~ni.mp3"
move *"%argOut%"*.m4a OLD\ >> %DFDirectory%log.txt
echo MP3変換完了%date%_%time%_"%argOut%" >> %DFDirectory%log.txt
goto end
:usage
echo "RadikoRec.bat TBS 1:00:00 菊地成孔の粋な夜電波"
:end
AYTHKeyGet.vbsはradiko.batと同じ場所においてください
-追記-
HLS形式ストリーミング合わせて承認方式も変更したようだ。
大幅に変更したのでまだバグが残ってるかもしれません。
発見次第随時変更します。
AYTHKeyGet.vbs
Option Explicit
Dim argStation,argDebug,argSilent,cookiefile,mail,pass,checkfile,loginfile
'radiko premium
mail = ""
pass = ""
argStation = "TBS" '引数1(i):radiko.jp内の放送局のid
argDebug = "no" '"yes"なら、動作の途中経過を逐次表示する
argSilent = "yes" '"yes"なら、外部コマンドであるwgetの実行プロンプトを表示しない
Dim i
Dim strCmd
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Dim aUnnamed
Set aUnnamed = WScript.Arguments.Unnamed
If aUnnamed.Count > 0 Then
For i = 0 To aUnnamed.Count - 1
Select Case i
Case 0
argStation = aUnnamed.Item(i)
End Select
Next
End If
'シェル起動オブジェクトを生成
Dim WSHShell,gShellStyle
Set WSHShell = WScript.CreateObject("WScript.Shell")
If argSilent = "yes" Then
gShellStyle = 7
Else
gShellStyle = 10
End IF
'ファイルシステム用オブジェクトを生成(ラジコ独自認証でファイルを利用)
Dim WSHFS
Set WSHFS = CreateObject("Scripting.FileSystemObject")
strCmd = GetRadikoCmd()
WScript.Quit(0)
'Radiko.jpの独自認証を行う
Function GetRadikoCmd()
Dim pSwfPlayer,pKeyFile,RtnCD,auth1_fms,auth2_fms
Dim pTmpName
pTmpName = WSHFS.GetTempName()
pSwfPlayer = "player_" & argStation & pTmpName & ".swf"
pKeyFile = "authkey_" & argStation & pTmpName & ".png"
auth1_fms = "auth1_fms_" & argStation & pTmpName
auth2_fms = "auth2_fms_" & argStation & pTmpName
loginfile = "login_" & argStation & pTmpName & ".txt"
cookiefile = "cookie_" & argStation & pTmpName & ".txt"
checkfile = "pre_check_" & argStation & pTmpName & ".txt"
'radiko premium
if not (mail = "") then
RtnCD = WSHShell.run("wget.exe -q --save-cookie=" & cookiefile _
& " --keep-session-cookies" _
& " --post-data=""mail=" & mail & "&pass=" & pass & """" _
& " -O " & loginfile _
& " https://radiko.jp/ap/member/login/login",gShellStyle,True)
If RtnCD <> 0 Then
GetRadikoCmd = "error 認証ステップ0:radiko premiumの取得失敗!"
premiumLogoutCmd()
Exit Function
Else
If argDebug = "yes" Then WScript.Echo "認証ステップ0"
End If
WScript.Sleep 2000
if not objFso.FileExists(cookiefile) then
WScript.Echo "failed login1"
premiumLogoutCmd()
Exit Function
End IF
End IF
'認証ステップ1:Radikoのauth1をダウンロード
RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10" _
& " --header ""X-Radiko-App: pc_html5""" _
& " --header ""X-Radiko-App-Version: 0.0.1""" _
& " --header ""X-Radiko-Device: pc""" _
& " --header ""X-Radiko-User: dummy_user""" _
& " --no-check-certificate " _
& " --load-cookies " & cookiefile _
& " --save-headers " _
& " -O " & checkfile _
& " https://radiko.jp/v2/api/auth1",gShellStyle,True)
If RtnCD <> 0 Then
GetRadikoCmd = "error 認証ステップ1:auth1の取得失敗!"
premiumLogoutCmd()
Exit Function
Else
If argDebug = "yes" Then WScript.Echo "認証ステップ1"
End If
'認証ステップ2:RadikoのplayerCommon.jsをダウンロード
RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10" _
& " -O """ & auth1_fms & """" _
& " http://radiko.jp/apps/js/playerCommon.js",gShellStyle,True)
If RtnCD <> 0 Then
GetRadikoCmd = "error 認証ステップ2:playerCommon.jsの取得失敗!"
premiumLogoutCmd()
Exit Function
Else
If argDebug = "yes" Then WScript.Echo "認証ステップ2"
End If
'認証ステップ3:checkfileから、・X-Radiko-AuthToken・X-Radiko-KeyLength・X-Radiko-KeyOffset を読み取る
Dim pFile
Dim pLine
Dim pAuthtoken,pLength,pOffset
Set pFile = WSHFS.OpenTextFile(checkfile,1)
Do While pFile.AtEndOfStream = False
pLine = pFile.ReadLine
If InStr(LCase(pLine),"x-radiko-authtoken:") <> 0 Then
pAuthtoken = mid(pLine,InStr(pLine,":")+2,len(pLine)-InStr(pLine,":"))
ElseIf InStr(LCase(pLine),"x-radiko-keylength:") <> 0 Then
pLength = mid(pLine,InStr(pLine,":")+2,len(pLine)-InStr(pLine,":"))
ElseIf InStr(LCase(pLine),"x-radiko-keyoffset:") <> 0 Then
pOffset = mid(pLine,InStr(pLine,":")+2,len(pLine)-InStr(pLine,":"))
End If
Loop
pFile.Close
'認証ステップ4:playerCommon.jsから文字列取得
Dim radikojsplayer
Set pFile = WSHFS.OpenTextFile(auth1_fms,1)
Do While pFile.AtEndOfStream = False
pLine = pFile.ReadLine
If InStr(LCase(pLine),"new radikojsplayer") <> 0 Then
radikojsplayer = mid(pLine,65,40)
End If
Loop
pFile.Close
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim outputFile
Set outputFile = fso.OpenTextFile(pKeyFile, 2, True)
outputFile.WriteLine radikojsplayer
outputFile.Close
'認証ステップ5:playerCommon.jsの内容から、base64の値であるpartialkeyを求める
Dim pXmldom,pB64,pStream,partialkey
Set pXmldom = CreateObject("Microsoft.XMLDOM")
Set pB64 = pXmldom.CreateElement("work")
pB64.DataType = "bin.base64"
Set pStream = CreateObject("ADODB.Stream")
pStream.Type = 1
pStream.Open
pStream.LoadFromFile pKeyFile
pStream.position = pOffset
pB64.NodeTypedValue = pStream.Read(pLength)
partialkey = pB64.Text
pStream.Close
Set pStream = Nothing
'認証ステップ6:上記で求めたキーからauthtokenとpartialkeyをradikoに送り認証を成立させる
RtnCD = WSHShell.run("wget.exe -q --timeout=60 --tries=10" _
& " --header ""X-Radiko-Device: pc""" _
& " --header ""X-Radiko-User: dummy_user"""_
& " --header=""X-Radiko-Authtoken: " & pAuthtoken & """" _
& " --header=""X-Radiko-Partialkey: " & partialkey & """" _
& " --load-cookies " & cookiefile _
& " https://radiko.jp/v2/api/auth2" _
& " -O """ & auth2_fms & """" ,gShellStyle,True)
If RtnCD <> 0 Then
GetRadikoCmd = "error 認証ステップ6:authtokenとpartialkeyの失敗!"
premiumLogoutCmd()
Exit Function
Else
If argDebug = "yes" Then WScript.Echo "認証ステップ6"
End If
'テンポラリファイルを消す
If argDebug <> "yes" Then
WSHFS.DeleteFile pKeyFile, True
WSHFS.DeleteFile auth1_fms, True
WSHFS.DeleteFile auth2_fms, True
if not (mail = "") then
WSHFS.DeleteFile loginfile, True
WSHFS.DeleteFile checkfile, True
WSHFS.DeleteFile cookiefile, True
End If
End If
WScript.Echo(pAuthtoken)
End Function
Function premiumLogoutCmd()
Dim RtnCD
'radiko premium Logout
if not (mail = "") then
RtnCD = WSHShell.run("wget -q" _
& " --header=""pragma: no-cache""" _
& " --header=""Cache-Control: no-cache""" _
& " --header=""Expires: Thu, 01 Jan 1970 00:00:00 GMT""" _
& " --header=""Accept-Language: ja-jp""" _
& " --header=""Accept-Encoding: gzip, deflate""" _
& " --header=""Accept: application/json, text/javascript, */*; q=0.01""" _
& " --header=""X-Requested-With: XMLHttpRequest""" _
& " --no-check-certificate "_
& " --load-cookies cookiefile "_
& " --save-headers "_
& " -O logoutfile" _
& " https://radiko.jp/ap/member/webapi/member/logout",gShellStyle,True)
If RtnCD <> 0 Then
GetRadikoCmd = "error radiko premiumのLogout失敗!"
Exit Function
Else
If argDebug = "yes" Then WScript.Echo "radiko premiumのLogout取得成功"
End If
if objFso.FileExists(cookiefile) then
WSHFS.DeleteFile cookiefile, True
End IF
End IF
End Function
録音時間計算のスプリクトです。バッチファイルで時間計算は大変なのでWSHで処理します。 Time.vbsはradiko.batと同じ場所においてください
Time.vbs
' CScript Time.vbs /r:0:01:00
' CScript Time.vbs /d:2016/12/14 /t:18:47:44
Option Explicit
Dim argRecTime
Dim value
dim gRecTime
dim argDay
dim argTime
Dim aNamed
Set aNamed = WScript.Arguments.Named
argRecTime = WScript.Arguments.Named.Item("r")
argDay = WScript.Arguments. Named.Item("d")
argTime = WScript.Arguments. Named.Item("t")
if not (argRecTime = "") Then
'引数で指定の録音時間を日時属性に変換
gRecTime = TimeValue(argRecTime)
'録音終了日時を求める
Dim gEndDate
gEndDate = Now() + gRecTime
WScript.Echo gEndDate
End If
if not (argDay = "") Then
'引数で指定の録音時間を日時属性に変換
argDay = DateValue(argDay)
if (argTime = "") Then
argRecTime = argDay
Else
argRecTime = TimeValue(argTime)
argRecTime = argDay + argRecTime
End If
'録音秒数をrtmpdumpの引数形式(秒数)にする
gRecTime = argRecTime - Now()
if (gRecTime > 0) Then
gRecTime = Hour(gRecTime) * 60 * 60 + Minute(gRecTime) * 60 + Second(gRecTime) + 20
'20秒ほどマージンを設けることで録音終了時の誤差でリトライにいってしまうことを防止する。
Else
gRecTime ="EXIT"
End If
WScript.Echo gRecTime
End If
タスクスケジューラを使って予約する為のバッチファイル
(schtasks.batは管理者として実行してください)
TBS_schtasks.bat
goto kome /sc 種類 スケジュールの種類を指定する。指定できる種類は次の通り。 種類 内容 MINUTE 分単位でスケジュールを指定 HOURLY 時間単位でスケジュールを指定 DAILY 日単位でスケジュールを指定 WEEKLY 週単位でスケジュールを指定 MONTHLY 月単位でスケジュールを指定 ONCE 指定した日時に一回限り実行 ONSTART システム起動ごとに実行 ONLOGON ログオンごとに実行 ONIDLE アイドル状態が一定時間続いた場合に実行 /d 日 曜日または日にちを指定する。 スケジュールの種類が「WEEKLY」、または「MONTHLY」の場合に有効。 曜日は以下のように3文字で表す。 値 内容 MON 月曜日 TUE 火曜日 WED 水曜日 THU 木曜日 FRI 金曜日 SAT 土曜日 SUN 日曜日 MON,TUE,WED,THU,FRI,SAT,SUN スケジュールの種類と指定できる値は次の通り。 WEEKLYの場合 MON~SUN、あるいは「*(毎日)」。 省略時は「/d MON」を指定したとみなされる。 MONTHLYの場合 1~31の数字。省略時は「/d 1」 を指定したとみなされる。「/mo」オプションに FIRST、SECOND、THIRD、FOURTH、LAST が指定されている場合は、必ず「/d」オプションで曜日を指定する。 TBS QRR LFR RN1 RN2 INT FMT FMJ JORF BAYFM78 NACK5 YFM HOUSOU-DAIGAKU :kome SCHTASKS /CREATE /TN "TBS_菊地成孔の粋な夜電波" /TR "D:\RadikoRec\RadikoRec.bat TBS 1:01:00 菊地成孔の粋な夜電波" /SC WEEKLY /d FRI /ST 23:59 pause
以上4つの実行ファイルと2つのバッチファイルと2つのvbsファイルと同じフォルダに置いて(上記の例ではD:\RadikoRec)
TBS_schtasks.batに録音したい番組を記入してタスクスケジューラに登録して実行する形になります。
タスクスケジューラにて実行するため後日動作確認する時用に実行フォルダにLOGを残す動きになっています。時々ファイルを削除してください
このスプリクトは試験的なもので要望など、いかなるサポートも行いません。 録音失敗や何らかの、いかなる損害が発生しても、苦情などを一切受け付けません。全て自己責任で利用してください。


10 Comments
さらみ
2017年10月3日初めまして
突然失礼します。
この記事大変参考にさせていただきました。
当方LINUX上で保存しております。
ありがとうございました。
おぼう
2022年9月29日いつも利用させて頂きありがとうございます。
昨日(2022/09/28)にラジコプレミアムのログイン仕様が変更されたようで、
AYTHKeyGet.vbs
ではダウンロードできなくなってしまいました。
勝手なことを言って恐縮ではございますが、対応版がありましたら利用させていただきたく、
お願い申し上げます。
hanpen
2022年10月5日遅くなりましたが修正版の記事を掲載しました。ご参照ください。
http://hanpen.lsv.jp/blog.hanpen.net/radiko-jp%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%a0%e3%83%95%e3%83%aa%e3%83%bc%e3%82%92%e4%b8%80%e6%8b%ac%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%83%90%e3%83%83%e3%83%812022%e5%b9%b410/
na
2025年1月25日もうここは有効じゃないかな?ダメ元で書いてみますけど。
こちらのスクリプトを利用させていただいております。
2日ほど前からradikoの録音ができなくなりました。
1週間前はできておりました。
x等見るとどうも認証が変わったのかな?と思われ。
またリアルタイムの録音ではありませんが、「らじれこ」などによるタイムフリーのダウンロードでも、認証関係のアップデートが最近行われていますので、おそらく認証エラーによる録音失敗かと思われます。
私は録音をwindowsとlinuxで行っており、linux側はradishを使っておりますが、あちらのほうも更新等あるわけでなく、どうにも情報がないので、どう変わったのか、どこをどう変えればまた動くようになるのか、よくわかりません。
もし可能ならご教示くださいませんでしょうか。
何卒よろしくお願いいたします。
hanpen
2025年1月25日私の環境では特に変更点も無く問題なく動いてますよ。
ただ記事のradiko.jpのHLS形式ストリーミングをバッチファイルとWSHで録音するは古いです
2022年10月あたりで承認の形式が変わりました。
radiko.jpのタイムフリーを一括ダウンロードバッチ2022年10月修正
https://blog.hanpen.net/radiko-jp%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%a0%e3%83%95%e3%83%aa%e3%83%bc%e3%82%92%e4%b8%80%e6%8b%ac%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%83%90%e3%83%83%e3%83%812022%e5%b9%b410/
こっちの記事を参考にしてダウンロードしてみてください
na
2025年1月27日返信ありがとうございます。通じてよかった。
問題ないですか…ネット上で誰も騒いでいないのは、私特有の症状だったからなのですね。
スクリプト確認しましたが、確かに私の環境は古いままのようです。
時間ができたときに更新するとして、いくつか教えてください。
まず、↑に書いたとおり、10日ほど前までは録音ができていました。
2022年に認証が変わってからも録音ができていたのはなぜなのでしょう?
おわかりになることがあれば教えてください。
次に、ご提示いただいたのは「タイムフリーの一括ダウンロード」とのことですが、私はスクリプト/バッチファイルではリアルタイム録音しか行っておりません。
そうであっても同じでしょうか?
それから、ご提示先にはPowerShellスクリプトが3つ?置かれていますが、このページと変わっているのは認証スクリプトだけでしょうか。
「リアルタイム録音に関しては古い認証も見逃されていたけどつい先日環境が見直されて新しい認証を行わなければならなくなった」とかだと、linux側も失敗していることも含めて納得がいきそうですが、もしなにかご存じのことがあれば教えていただけると幸いです。
hanpen
2025年1月28日> まず、↑に書いたとおり、10日ほど前までは録音ができていました。
> 2022年に認証が変わってからも録音ができていたのはなぜなのでしょう?
> おわかりになることがあれば教えてください。
>
> 次に、ご提示いただいたのは「タイムフリーの一括ダウンロード」とのことですが、
> 私はスクリプト/バッチファイルではリアルタイム録音しか行っておりません。
> そうであっても同じでしょうか?
>
> それから、ご提示先にはPowerShellスクリプトが3つ?置かれていますが、
> このページと変わっているのは認証スクリプトだけでしょうか。
基本的にこのラジコ関連のスプリクトは
更新すると全部の認証スクリプトだけ上書きで運用してます
認証スクリプトを更新した段階でリアルタイム録音の認証スクリプトも
更新して使ってたのでいままで古い認証スクリプトで動いてた件はよくわからないです
現在認証スクリプトだけ更新して使えてるのは確かです
na
2025年2月2日すみません追記です。
まず確認ですが、xmlファイルを取得する先は
https://radiko.jp/v2/station/stream_smh_multi/%ch%.xml
↓
https://radiko.jp/v3/station/stream/pc_html5/%ch%.xml
に変更したというスタンスでしょうか。
radikoの課金サービスが変更になった関係上、後者であるべきような気は確かにするので、意図を確認いたしたく思います。
で、その上で、文字列ベースの取り出しでなく、xmlの解析で行うということでしょうか。
その流れだとして、もしかして[@areafree=1][@timefree=1]の後ろの[1]というところを、もしかして別の数字にしないといけなくないですか?という質問です。
私は[@areafree=1][@timefree=0]ですが、ニッポン放送のxmlを見たところ、該当するものは3つあります。
Linuxのradishのほうでいじった結果ですが(こちらもxmllintで解析しています)、3番目を選ばないとダウンロードできませんでした。
つまり[@areafree=1][@timefree=0][3]だとうまくいったという次第です。
他の局や、エリアフリータイムフリーの組み合わせによってどうなるかはわかりませんが、上記確認させていただけないでしょうか。
hanpen
2025年2月2日radikoの仕様変更は2022年10月あたりに行われその後変更ありません
私もすっかりすっかり忘れてしまってよく覚えてないのでしばらく考えます
しかし根本的にradikoの仕様変更は突然です
どのような意図でそんな仕様にしてるのは憶測しかないです
ですので動けばいいやって程度に考えるかradiko意図を探るかは人それぞれです
でもradikoの仕様変更は突然なのであまり深入りしても意味がないような気がします
na
2025年2月2日返信ありがとうございます。
いちおう解決しました。
まず、AYTHKeyGet.vbs(どうでもいいことではあるのですが、このファイル名はAUTHKEYGET.vbsのtypoなのでしょうか?)を置き換えました。
これでは解決しませんでした(これが関係あったのかなかったのかはわかりません)。
なお、ラジコプレミアムのアカウントを記載しない状態だと、途中で「AYTHKeyGet.vbs(89, 5) Microsoft VBScript 実行時エラー: ファイルが見つかりません。」というエラーメッセージが出ます。
アカウントとパスワードを記載すると出なくなります。
この状態だと、その後
http:///si-f-radiko.smartstream.n/FMJ/_definst_/simul-stream.stream/playlist.m3u8: Immediate exit requested
というエラーが出て、ダウンロードまで行かずに終わります。
ここですぐ気づかなかったのが敗因でしたが、しばらく考えて、Radikorec.batの39行が実態に即していなそうだと気づきました。
ここを
set playlist_create_url=%a:~28,26%
↓
set playlist_create_url=%a:~32,26%
と書き換えたところ、ダウンロードまで進むことができました。
urlの解決のところの情報が変わったのでしょうね。
AUTHKEYGET.vbsのアップデートのページのコメントにも書かれている方がいましたが、おそらく同じ理由だったのかなと思います。
可能ならご確認いただいて、バッチファイルをアップデートしていただくといいのかなと思いました。
linuxマシンのほうでradishというスクリプトを使っていますが、こちらもいま動いていません。
おそらく同じことが起きているのだと思いますが、こちらはまだどこを修正すればよいのかは見つかっていない状況です(これはただの蛇足ですが)。