も少しラジオを聴きやすくする その2

ファイル名のフォーマットは時間を追加しました。
(番組名のメアドの頭)20180704-2100 #01 (ゲスト).mp3

次のスクリプトを作成して、情報を集めます。

#!/bin/bash
# require mid3v2, mp4info
# 引数チェック
if [ $# -ne 1 ]; then
echo "指定された引数は$#個です。"
echo "usage: $0 directory"
exit 1
fi
DIR=$1
#TARGETYEAR=$2
TEMPTAG="_temp"
find ${DIR} -type f | while read file
do
name=`basename "${file}"`
ext="${name##*.}"
if [ $ext != "jpg" ] ; then
# filename analysis
basename=`echo ${name} | sed 's/\.[^\.]*$//'`
ymd=`echo ${basename} | sed -r 's/^.*([0-9]{8}).*/\1/'`
expr "$ymd" + 1 >/dev/null 2>&1
if [ $? -lt 2 -a ${#ymd} -eq 8 ] ; then
year=${ymd:0:4}
#if [ ${year} = ${TARGETYEAR} ] ; then
month=${ymd:4:2}
day=${ymd:6:2}
time=`echo ${basename} | sed -r 's/^.*([0-9]{8})-([0-9]{4}).*/\2/'`
if [ "${basename}" = "${time}" ] ; then
time=""
fi
if [ ${ext} = "mp3" ] ; then
mid3v2 "${file}" > ${TEMPTAG}
TITLE=`cat ${TEMPTAG} | grep TIT2 | sed -r 's/.*TIT2=()/\1/'`
TRACK=`cat ${TEMPTAG} | grep TRCK | sed -r 's/.*TRCK=()/\1/'`
echo "${year}, ${month}, ${day}, ${time}, ${TRACK}, ${file}, ${TITLE}" >> ${year}all.csv
echo "${year}, ${month}, ${day}, ${time}, ${TRACK}, ${file}, ${TITLE}" >> _all.csv
rm ${TEMPTAG}
fi
if [ ${ext} = "m4a" ] ; then
mp4info "${file}" > ${TEMPTAG}
TITLE=`cat ${TEMPTAG} | grep "^ Name:" | sed -r 's/.*Name: ()/\1/'`
TRACK=`cat ${TEMPTAG} | grep "^ Track:" | sed -r 's/.*Track: ([0-9]+) of ([0-9]+)/\1/'`
echo "${year}, ${month}, ${day}, ${time}, ${TRACK}, ${file}, ${TITLE}" >> ${year}all.csv
echo "${year}, ${month}, ${day}, ${time}, ${TRACK}, ${file}, ${TITLE}" >> _all.csv
rm ${TEMPTAG}
fi
#fi
fi
fi
done

そのリストから次でプレイリストを作成する。

#!/bin/bash
# year, month, day, time, track#, filepath, title
# 引数チェック
if [ $# -ne 2 ]; then
echo "指定された引数は$#個です。"
echo "usage: $0 taregt(.csv) output(.m3u)"
exit 1
fi
TARGET=$1
OUTPUT=$2
echo "#EXTM3U" > $OUTPUT
cat $1 | while read line
do
filename=`echo ${line} | cut -d ',' -f 6`
title=`echo ${line} | cut -d ',' -f 7`
echo "#EXTINF:,${title}" >> $OUTPUT
echo "${filename}" >> $OUTPUT
done