#!/bin/bash
####################################################################################
#
# radioListView:
# 関連ファイル
# • List_View.app(AppleScript)
# • 生成ファイル: radio_list.txt
# • 呼び出し: radioListView
# • radioListView(bash script) [-l lineNum] [-s searchWords ]
# • 生成ファイル: Radio_List.tsv
# • 呼び出し: Radio_List.html
# • 利用: jQuery, jquery.csv2table.js
# • 呼び出し: Radio_List.tsv
# 経緯
# 1) Appleサポート・コミュニティの「Mac min」のディスカッションで、Hiro.Sさんから;
# Terminalから複数の画像(png)を「Quick Look」で開くには?
# https://discussionsjapan.apple.com/thread/10129125?tstart=0#
# 2) ストリーミング・ラジオを来ている時に、其の曲情報をリスト形式で保存して、
# オフラインでそのリストを見たいという願いに対し;
# •iTunesRadio_myList.appの原型(Hiro.S作、AppleScript)
# 「2013/05/12 14:18」に公開
# •iTunesRadio_myList.app → List_View.app
# 3) リスト・ファイルを jquery.csv2table.jsで奇麗に書けそうという話から、
# またもHiro.Sさんから明快な使用法のご説明を戴きました;
# 「2013/05/21 12:22」。
# 4) Hiro.Sさんから修正方針:「2013/05/24 11:05」
# 5) List_View.appの更新: May 27, 2013 2:40 PM
# •オプション入力追加, •相対パス化
# 6) プロジェクト構造を確定: May 28, 2013 1:51 AM
# 7) radioListViewの更新: 2013-05-29(水) 13:10頃
# •lineNumの入力処理向上、•相対パス化
#
# 制作: Hiro.S, mNeji
#
####################################################################################
# set -x
# dirs 相対アドレッシング
rlt="./"
dat="${rlt}data/"
# files
org="${rlt}radio_list.txt"
mid="${dat}radio_list.mid.tsv"
mid2="${dat}radio_list.mid2.tsv"
res="${dat}Radio_List.tsv"
# browser for display List
brw=Camino
#2桁の数字; 00~99
nn="[0-9][0-9]"
# getopts: 入門UNIXシェル・プログラミング、p143~
#
# radioList_setup [-l lineNum] [sortingWords]
# lineNum: "line number" in tail command >=1, lineNum=0 → whole table.
# sortWords: use in grep command
lineNum=0
searchWords=""
while getopts l:s: OPT
do
case $OPT in
l) lineNum=$OPTARG;;
s) searchWords="$OPTARG";;
\?) echo "Usage: $0 [-l lineNum] [-s sortWords] parameters" 1>&2
exit 1;;
esac
done
#
# Headings of Table for List of Streaming Radios
#
echo -e " # \t date-time \t Music Stations \t music information" > $res
#
# add absolute Sequencial Number
#
# 「-HHMMSS\t」→「-HH:MM\t」
#
t=$'\t' # tab character
cat -n $org | sed -e "s/-\($nn\)\($nn\)\($nn\)${t}/-\1:\2${t}/" > $mid
#
# searchWords with grep
#
if [ "$searchWords" = "" ]
then
# no search
cp $mid $mid2
else
# search with "$searchWords"
cat $mid | grep "$searchWords" > $mid2
fi
#
# lineNum check & pull out lineNum
#
# numeric check(ref.: 入門UNIXシェル・プログラミング 改訂第2版、ブルース・プリン、ISBN:4-7973-2194-4, p187)
expr "$lineNum" + 1 > /dev/null 2>&1
if [ $? -lt 2 ]
then
# $lineNum is numeric
:
else
# $lineNum is numeric, force to 0
lineNum=0
fi
if [ $lineNum -eq 0 ]
then
# no tail 1
cat $mid2 >> $res
elif [ $lineNum -gt 0 ]
then
# do tail
cat $mid2 | tail -n $lineNum >> $res
else
# do head
lineNum=$((-lineNum))
echo "lineNum=$lineNum"
cat $mid2 | head -n $lineNum >> $res
fi
#open -a Camino ${HOME}/Sites/myJS/Radio_List.html
open -a $brw "${rlt}Radio_List.html"
rm -f $mid $mid2