min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

fedora30 radikoのタイムフリー再生を一括録音するスクリプト → CSVから読んだ「局ID,開始時刻,終了時刻,保存ファイル名」で録音する

前回の記事で、こうやってradikoを録音できるところまで作った。

$ ./rec_radiko_ts.sh -s FMFUKUI -f 202002160900 -t 202002160930 -o KARRY_02.m4a -m test@dummy.mail.com -p my_password

f:id:min117:20200218000728p:plain

-s FMFUKUI チャンネル名

-f 202002160900 開始時間

-t 202002160930 終了時間

-o KARRY_02.m4a  出力ファイル名

-m test@dummy.mail.com -p my_password ラジコプレミアム会員のIDとパス

min117.hatenablog.com

 

ということは、聴きたい局をこんな感じのcsvにして

局ID,開始時刻,終了時刻,保存ファイル名

f:id:min117:20200222130512p:plain

これを読み込んで録音するスクリプトにできる。

 

できた。 

vim my_rec_radiko_ts_timefree.sh 

f:id:min117:20200222130258p:plain

 

録音を実行してみる

$ ./my_rec_radiko_ts_timefree.sh 

f:id:min117:20200222131049p:plain

完璧。

 

自作の音声プレイヤーサイトに置いてみる。

f:id:min117:20200222131138p:plain

min117.hatenablog.com

素晴らしすぎる。

 

ちなみに局の一覧はcurlで取り出した。

curl -s http://radiko.jp/index/ | grep href | awk -Findex/ '{print $2}' | awk -F\" '{print $1}' | sed -e s/'\/'/''/g

f:id:min117:20200222131641p:plain

 

曲名も表示する

$ 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

f:id:min117:20200223133112p:plain

 

コピペ用

#!/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 

 

gkmsxho.net

qiita.com

 

$ ./myradikoBANGUMI.sh

f:id:min117:20200315090629p:plain

 

$ vim myradikoBANGUMI.sh

f:id:min117:20200315090950p:plain

f:id:min117:20200315091036p:plain

 

#!/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