#!/bin/bash -e
# 携帯プレーヤーのプレイリストを作成するスクリプト
# MYLIST1.M3UはMUSICディレクトリ直下のファイルのみを名前順にソートして作成
# MYLIST2.M3UはMUSICディレクトリ直下のファイルのみを更新日付順にソートして作成
# MYLIST3.M3Uはサブディレクトリ群下のファイルのみをパスの名前順にソートして作成
# MYLIST4.M3UにはMYLIST3.M3Uに収まりきらない分で作成

MEDIAPATH=/media
cd "${MEDIAPATH}"|| exit

get_flush_mountpoint()
{
ls -d * 2>/dev/null|while read -r i
do
if test -d "${i}"; then
if ! test -L "${i}"; then
if mountpoint "${i}">/dev/null; then
if mount|grep "${i}"|head -1|grep flush|grep -q vfat 2>/dev/null; then
echo "${i}"
return
fi
fi
fi
fi
done
}

DESTPATH=$(get_flush_mountpoint)

if test -z "${DESTPATH}"; then
echo "any DAP connected"
exit
else
echo "${DESTPATH}"
fi

DESTPATH="${MEDIAPATH}/${DESTPATH}"

if ! test -d "${DESTPATH}/MUSIC"; then
echo "MUSIC directory not found"
exit
fi

cd "${DESTPATH}" || exit
set -x
# MYLIST1.M3UはMUSICディレクトリ直下のファイルのみを名前順にソートして作成
find ./MUSIC -maxdepth 1 -type f ! -name "*.M3U"|sort|sed -e 's/^/./'| \
sed -e 's/\//\\/g'|nkf -Ws -c > MUSIC/MYLIST1.M3U

# MYLIST2.M3UはMUSICディレクトリ直下のファイルのみを更新日付順にソートして作成
eval ls -1Atr "./MUSIC/*.{mp3,MP3,wav,WAV,wma,WMA}"|sed -e 's/^/./'| \
sed -e 's/\//\\/g'|nkf -Ws -c > MUSIC/MYLIST2.M3U

MUSICNUM="$(find MUSIC -type f|egrep -v "^MUSIC/[^/]+$"|wc -l)"
# MYLIST3.M3Uはサブディレクトリ群下のファイルのみをパスの名前順にソートして作成
find ./MUSIC -type f|egrep -v "^\./MUSIC/[^/]+$"|sort|sed -e 's/^/./'| \
sed -e 's/\//\\/g'|nkf -Ws -c|head -99 > MUSIC/MYLIST3.M3U

# MYLIST4.M3UにはMYLIST3.M3Uに収まりきらない分で作成
if [ $MUSICNUM -gt 99 ]; then
find ./MUSIC -type f|egrep -v "^\./MUSIC/[^/]+$"|sort|sed -e 's/^/./'| \
sed -e 's/\//\\/g'|nkf -Ws -c|tail -n +100 > MUSIC/MYLIST4.M3U
else
echo > MUSIC/MYLIST4.M3U
fi
