お勉強兼ねてpart1~3+αでスクリプト作ったので配布します
書き方が汚いのは許してください…
(追記 2018/11/04)
このままだとATDSなAACが出来上がっちゃって、プレイヤーによっては再生できないので、
ffmpegのオプションに”-bsf:a aac_adtstoasc”を追加しました
【使い方】
./radiko.sh '[番組URL]'
[番組URL]部分は、radikoの番組表のリンクです
http://radiko.jp/#!/ts/TBS/2019010109000000 形式のURLです。
実行すると、放送局ID(TBSとかLFRとか)_放送開始時刻(yyyymmddhhss).aacでダウンロードされます。
※プレミアム会員の方は、mail/passを指定しておくと、エリアフリーでダウンロードできます。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#!/bin/shmail=""pass=""app="pc_html5"version="0.0.1"user="dummy_user"device="pc"key="bcd151073c03b352e1ef2fd66c32209da9ca0afa"if[ $# -ne 1 ] ; thenecho"Usage: ./radiko.sh 'URL'"exit1fiif[ ${mail} ] && [ ${pass} ] ;thencode=`curl -s -c cookie.txt -o/dev/null-w'%{http_code}'-d"mail=${mail}"-d"pass=${pass}"https://radiko.jp/ap/member/login/login`if[ ${code} -ne"302"] ;thenecho"Invalid E-mail or Password"rm-f cookie.txtexit1fifiparam=(`curl -s -b cookie.txt -H"X-Radiko-App: ${app}"-H"X-Radiko-App-Version: ${version}"-H"X-Radiko-User: ${user}"-H"X-Radiko-Device: ${device}"-I -L https://radiko.jp/v2/api/auth1|egrep-i'X-Radiko-AuthToken:|X-Radiko-KeyLength:|X-Radiko-KeyOffset:'|sed-e's/^.*: \([0-9a-zA-Z]\)/\1/ig'`)authtoken=`echo-n ${param[0]} |sed-e"s/[\r\n]\+//g"`keylength=`echo-n ${param[1]} |sed-e"s/[\r\n]\+//g"`keyoffset=`echo-n ${param[2]} |sed-e"s/[\r\n]\+//g"`partialkey=`echo-n ${key:${keyoffset}:${keylength}} |base64`code=`curl -s -b cookie.txt -o/dev/null-w'%{http_code}'-H"X-Radiko-AuthToken: ${authtoken}"-H"X-Radiko-PartialKey: ${partialkey}"-H"X-Radiko-Device: ${device}"-H"X-Radiko-User: ${user}"-s -L https://radiko.jp/v2/api/auth2`echo"AuthToken : ${authtoken}"echo"KeyLehgth : ${keylength}"echo"KeyOffset : ${keyoffset}"echo"PartialKey: ${partialkey}"echo"HTTP code : ${code}"if[ ${code} -ne"200"] ;thenecho'Invalid AutoToken'exitfistation=`echo$1 |sed-e's/http:\/\/radiko.jp\/#!\/ts\/\(.\+\)\/.*/\1/ig'`date=`echo$1 |sed-e's/http:\/\/radiko.jp\/#!\/ts\/\(.\+\)\/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\2/ig'`hour=`echo$1 |sed-e's/http:\/\/radiko.jp\/#!\/ts\/\(.\+\)\/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\3/ig'|sed-e's/^0//g'`ft=`echo$1 |sed-e's/http:\/\/radiko.jp\/#!\/ts\/\(.\+\)\/\([0-9]\{14\}\)/\2/ig'`if[ ${hour} -lt 5 ] ;thendate=`date--date"${date} 1 days ago"+%Y%m%d`fito=`curl -s"http://radiko.jp/v3/program/station/date/${date}/${station}.xml"|egrep-i"ft=\"${ft}"|sed-e's/.*to="\([0-9]\{14\}\).*/\1/ig'`url="https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=${station}&l=15&ft=${ft}&to=${to}"echo"Station : ${station}"echo"From : ${ft}"echo"To : ${to}"echo"URL : ${url}"ffmpeg -headers"X-Radiko-AuthToken: ${authtoken}"-y -i"${url}"-bsf:a aac_adtstoasc -acodec copy"${station}_${ft}.m4a"curl -s -b cookie.txt -o/dev/nullhttps://radiko.jp/ap/member/webapi/member/logoutrm-f cookie.txtexit0