前回の記事で、こうやってradikoを録音できるところまで作った。
$ ./rec_radiko_ts.sh -s FMFUKUI -f 202002160900 -t 202002160930 -o KARRY_02.m4a -m test@dummy.mail.com -p my_password
-s FMFUKUI チャンネル名
-f 202002160900 開始時間
-t 202002160930 終了時間
-o KARRY_02.m4a 出力ファイル名
-m test@dummy.mail.com -p my_password ラジコプレミアム会員のIDとパス
ということは、聴きたい局をこんな感じのcsvにして
局ID,開始時刻,終了時刻,保存ファイル名
これを読み込んで録音するスクリプトにできる。
できた。
$ vim my_rec_radiko_ts_timefree.sh
録音を実行してみる
$ ./my_rec_radiko_ts_timefree.sh
完璧。
自作の音声プレイヤーサイトに置いてみる。
素晴らしすぎる。
ちなみに局の一覧はcurlで取り出した。
$ curl -s http://radiko.jp/index/ | grep href | awk -Findex/ '{print $2}' | awk -F\" '{print $1}' | sed -e s/'\/'/''/g
曲名も表示する
$ curl -s http://radiko.jp/index/ | grep href | awk -Findex/ '{print $2}' | awk -F\" '{print $1,$2}' | awk -F\> '{print $1,$2}' | sed -e s/'<\/a'/''/g | sed -e s/'\/'/''/g
コピペ用
#!/bin/bash
shopt -s expand_aliases
source ~/.bashrc
# shopt について
# https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
# 異常時にちゃんと止まるスクリプト
# http://fj.hatenablog.jp/entry/2017/05/20/192431
#set -eu -o pipefail
#trap 'echo "ERROR: line no = $LINENO, exit status = $? > &2; exit 1' ERR
mydate=`date +"%Y%m%d_%H%M%S"`
mypath=`pwd`
echo $mydate
# myradikolist.txt
# RN2,202002181710,202002181800,RANI_MUSIC
# RN2,202002170900,202002171000,RANI_MUSIC
for i in $(cat myradikolist.txt)
do
chan=$(echo "$i" | awk -F, '{print $1}')
staT=$(echo "$i" | awk -F, '{print $2}')
endT=$(echo "$i" | awk -F, '{print $3}')
rabl=$(echo "$i" | awk -F, '{print $4}')
myout="$rabl"_"$staT"_"$chan".m4a
echo "$chan" #channel
echo "$staT" #startTime
echo "$endT" #endTime
echo "$rabl" #rabel
echo "$myout"
echo '-------------------'
if [[ -f "$myout" ]]
then
echo "$myout"_は既に存在します...Skipping
else
# ./rec_radiko_ts.sh -s FMI -f 202002101900 -t 202002101930 -o KARRY_20200210_FMI.m4a -m test@dummy.com -p my_password
./rec_radiko_ts.sh -s "$chan" -f "$staT" -t "$endT" -o "$myout" -m test@dummy.com -p my_password
fi
done
### 局一覧 radiko channel ID(識別子)
#curl -s http://radiko.jp/index/ | grep href | awk -Findex/ '{print $2}' | awk -F\" '{print $1}' | sed -e s/'\/'/''/g
### 番組表
# http://radiko.jp/v2/api/program/station/weekly?station_id=[ID]
# 例:http://radiko.jp/v2/api/program/station/weekly?station_id=QRR
$ ./myradikoBANGUMI.sh
$ vim myradikoBANGUMI.sh
#!/bin/bash
shopt -s expand_aliases
source ~/.bashrc
# shopt について
# https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
# 異常時にちゃんと止まるスクリプト
# http://fj.hatenablog.jp/entry/2017/05/20/192431
#set -eu -o pipefail
#trap 'echo "ERROR: line no = $LINENO, exit status = $? > &2; exit 1' ERR
mydate=`date +"%Y%m%d_%H%M%S"`
mypath=`pwd`
echo $mydate
# http://d.hatena.ne.jp/nattou_curry_2/20091103/1257262803
# Bashを使うなら理解しておきたいアルゴリズム - 抽出・ソート・結合・集計
# 関数
# function multi() { echo "数値を入力"; read ans; for i in $(seq 1 10); do echo "$i"; echo $*1; done; }
# IFSを一時的に変更
# http://min117.hatenablog.com/entry/2020/01/03/104644
# ( IFS=$'\n'; for i in $(ls -rt | grep mp3 | tail -n 10 ); do echo "$i"; )
echo '=========================================='
echo $(pwd) "$0" を実行しています
echo '=========================================='
if [[ $# -lt 1 ]]
then
echo '引数不足'
#echo "$0" 'FMFUKUI' 'きゃりー(option)'
#echo "$0" '$1局名' 'grep用語'
echo "$0" 'FMFUKUI'
echo "$0" 'FMFUKUI | grep -B 1 きゃりー ← -B1で開始終了時刻とれる'
echo '======================='
echo 'RaNiミュージック'
echo './myradikoBANGUMI.sh RN2 | grep RaNi'
echo './myradikoBANGUMI.sh RN2 | sed -e s/'\''\/'\''/'\''\r'\''/g | grep -B 1 RaNi'
echo './myradikoBANGUMI.sh RN2 | sed -e s/'\''\/'\''/'\''\r'\''/g | grep -B 1 RaNi | grep ft'
echo './myradikoBANGUMI.sh RN2 | sed -e s/'\''\/'\''/'\''\r'\''/g | grep -B 1 RaNi | grep ft | grep -v info'
echo '
<prog ft="20200313171000" to="20200313180000" ftl="1710" tol="1800" dur="3000">
<prog ft="20200313180000" to="20200313190000" ftl="1800" tol="1900" dur="3600">
<prog ft="20200313190000" to="20200313200000" ftl="1900" tol="2000" dur="3600">'
echo '======================='
echo './myradikoBANGUMI.sh RN2 | sed -e s/'\''\/'\''/'\''\r'\''/g | grep -B 1 RaNi | grep ft | grep -v info | awk -F \\ '\''{print $2,$4}'\'' '
echo '
20200313171000 20200313180000
20200313180000 20200313190000
20200313190000 20200313200000 '
echo '======================='
echo 'リストができたら ./my_rec_radiko_ts_timefree.sh'
echo '======================='
echo 'http://min117.hatenablog.com/entry/2020/02/22/132201'
echo '======================='
echo '全国の局を表示:myradikosearchChannel ← alias'
echo '======================='
echo '全国の局で検索:for i in $(myradikosearchChannel | awk '\''{print $1}'\'' ); do echo "$i";'"$0"' "$i";done'
echo '======================='
echo '全国の番組検索:for i in $(myradikosearchChannel | awk '\''{print $1}'\'' ); do echo "$i";'"$0"' "$i" | grep -B 1 きゃりー;done'
echo '======================='
echo '全国の番組検索:for i in $(myradikosearchChannel | awk '\''{print $1}'\'' ); do echo "$i"_@;./myradikoBANGUMI.sh "$i" | grep -B 1 SPITZ | grep -B 3 title;done'
echo '======================='
echo 'for i in $(myradikosearchChannel | awk '\''{print $1}'\'' ); do echo "$i";./myradikoBANGUMI.sh "$i" | grep -B 1 title.*ニュース;done'
echo '======================='
echo 'cat myradikolistSPITZ.txt | grep -B 1 prog | sed -z s/'\''@\n'\''/'\'''\''/g'
echo ' ↑ GNU sed で改行削除する時は -z を使う'
echo '======================='
echo 'http://min117.hatenablog.com/entry/2020/02/23/232419'
echo '======================='
echo 'cat myradikolistSPITZ.txt vim で 行末にファイル名をつける'
echo ''\''<,'\''>s/\n/,SPITZ\r/g '
echo '======================='
#小数かチェックする処理
#echo '小数はダメよ'
exit
fi
stationID="$1"
curl -s http://radiko.jp/v2/api/program/station/weekly?station_id="$stationID"
echo './myradikoBANGUMI.sh RN2 | sed -e s/'\''\/'\''/'\''\r'\''/g | grep -B 1 RaNi | grep ft | grep -v info'
*1:ans*i