-----------------------------------------------------------------------------------------------------------------------
Mac radiko 録音シェル・スクリプト(radiko4.ksh)をちょいといじって、iOS device 同期とかを
ダラダラーっと追加(黄色文字部分)
※1 OS X 10.8.3 + iTunes 11.0.2 + iPod touch G1,G5、iPad miniなんかで動作を確認
※2 ファストユーザスイッチには未対応(TTY =console を異なるユーザで複数使用している場合など)
-----------------------------------------------------------------------------------------------------------------------
radiko5.ksh
#!/bin/ksh
#-----------------------------------------------------------------
# $1:ID (必須)
# TBS TBSラジオ
# QRR 文化放送
# LFR ニッポン放送
# NSB ラジオNIKKEI
# INT INTERFM
# FMT TOKYO FM
# BAYFM78 BayFm
# NACK5 NACK5
# JORF ラジオ日本
# YFM FM yokohama
# ---------------------
# ABC ABCラジオ
# MBS MBSラジオ
# OBC ラジオ大阪
# CCL FM COCOLO
# 802 FM802
# FMO FM大阪
#
# $2:OFILE (必須)
# 任意のファイル名(UTF-8可)
# $3:TIME (必須)
# 録音時間(分)
#
# -t "VALUE" (省略可)
# タイトル
# -a "VALUE" (省略可)
# アーティスト
# -A "VALUE" (省略可)
# アルバム
# -g "VALUE" (省略可)
# ジャンル
#-----------------------------------------------------------------
export LANG="ja_JP.UTF-8" LC_ALL="ja_JP.UTF-8"
USAGE=\
"Usage:$0 ID OFILE TIME [-t \"TITLE\"] [-a \"ARTIST\"] [-A \"ALBUM\"] [-g \"GENRE\"]"
if [ $# -lt 3 ];then
print "${USAGE}\n`head -n36 $0 | grep -v ksh | sed 's/^#//g' `" 1>&2
exit 1
fi
ID="$1"
OFILE="$2"
TIME=$3
CHK_INT=3 # shellキックユーザーGUI login チェック間隔(sec)
WAIT=60 # shellキックユーザーGUI login からiTunes起動実行までの待ち(sec)
ISWAIT=3 # iTunes ライブラリ追加待ち間隔(sec) (iTunes_DIRからファイルが消えるまで)
STAT=0 # shellキックユーザーlogin 内部フラグ
#------------------------------------------#
GetAuth_SRC="${HOME}/get_auth.sh"
#------------------------------------------#
TOUT=1800 # sec
DELAY=20 # sec
RDIR=/tmp
CODEC=libmp3lame
####CODEC=libfaac
((TIME=TIME*60+DELAY))
DATE1=$(date +%Y-%m-%d_%H.%M.%S)
DATE2=$(echo ${DATE1} | cut -c1-10)
YEAR=$(echo ${DATE1} | cut -c1-4)
shift 3
while getopts a:g:t:A: opt
do
case ${opt} in
t) TITLE="${OPTARG} ${DATE2}";;
a) AUTHOR="${OPTARG}";;
g) GENRE="${OPTARG}";;
A) ALBUM="${OPTARG}";;
*) echo ${USAGE} 1>&2
exit 1;;
esac
done
if [ "${CODEC}" = "libmp3lame" ];then
RFILE="${RDIR}/${ID}_${OFILE}_${DATE1}.mp3"
else
RFILE="${RDIR}/${ID}_${OFILE}_${DATE1}.m4a"
fi
### authentication
RAuth=`${GetAuth_SRC}`
set -- ${RAuth}
playerurl=$1
authtoken=$2
/usr/local/bin/rtmpdump -B ${TIME} -m ${TOUT} -qvr \
rtmpe://w-radiko.smartstream.ne.jp/${ID}/_definst_/simul-stream.stream \
-W ${playerurl} -C S:"" -C S:"" -C S:"" -C S:${authtoken} \
-o - 2>/dev/null | \
/opt/local/bin/ffmpeg -y -i - -vn -acodec ${CODEC} -ar 44100 -ab 196608 -ac 2 \
-metadata author="${AUTHOR}" \
-metadata artist="${AUTHOR}" \
-metadata title="${TITLE}" \
-metadata album="${ALBUM}" \
-metadata genre="${GENRE}" \
-metadata year="${YEAR}" \
"${RFILE}" > /dev/null 2>&1
#---- Lion 10.7.X 2012/03/19
if (( $(sw_vers -productVersion | awk -F"." '{ print $1$2}') >= 107 )); then
F_DIR="Automatically Add to iTunes.localized"
else
F_DIR="iTunes に自動的に追加"
fi
### iTunes_DIR=`find "${HOME}" -name "iTunes に自動的に追加" -type d | grep -vi trash`
iTunes_DIR=`find ${HOME} -name "${F_DIR}" -type d | grep -vi trash`
if [ "${iTunes_DIR}" ]; then
cp "${RFILE}" "${iTunes_DIR}"
if [ "$?" = "0" ]; then
rm -f "${RFILE}"
### console login check ###
Me=`who am i | awk '{ print $1}'`
while true
do
who | awk '{ print $1" "$2}' | while read U C
do
### U=console login user, C=tty ###
if [ "${U}" = "${Me}" ] && [ "${C}" = "console" ]; then
STAT=1
break
fi
done
if [ "${STAT}" = "1" ]; then
break
else
### login wait ###
sleep ${CHK_INT}
fi
done
sleep ${WAIT}
### iTunes 起動 ###
open /Applications/iTunes.app
while true
do
#### iTunes ライブラリ追加待ち ###
if [ ! -f "${iTunes_DIR}/`basename \"${RFILE}\"`" ]; then
break
else
sleep ${ISWAIT}
fi
done
#### iOS deviceの同期など ###
osascript \
-e 'tell application "iTunes"' \
-e 'set so to sources whose kind = iPod' \
-e 'repeat with t in so' \
-e 'update t' \
-e 'end repeat' \
-e 'end tell'
fi
fi
2013-03-20 15:44
nice!(0)
コメント(0)
トラックバック(0)
共通テーマ:日記・雑感
コメント 0