#!/bin/sh
#
# $Log: songi.in,v $
# Revision 1.4  2021-10-15 18:41:52+05:30  Cprogrammer
# formatted for better display
#
# Revision 1.3  2021-10-14 22:39:24+05:30  Cprogrammer
# bugfix for period in filenames
#
# Revision 1.2  2021-10-01 12:05:56+05:30  Cprogrammer
# removed name column from song table in stats db
#
# Revision 1.1  2021-09-30 20:31:57+05:30  Cprogrammer
# Initial revision
#
#
# $Id: songi.in,v 1.4 2021-10-15 18:41:52+05:30 Cprogrammer Exp mbhangui $
#

get_mpd_conf_value()
{
  grep "^$1" /etc/mpd.conf|awk '{print $2}' | \
  sed -e 's{"{{g'
}

locate_file()
{
	dir="$2"
	file=$(basename "$dir")
	while true
	do
		t=$(dirname "$dir")
		if [ -f $1/"$file" ] ; then
			echo "$1/$file" | sed s{"$1"/{{
			break
		fi
		dir="$t"
		file="$(basename "$dir")/$file"
	done
}

display_info()
{
	turi=`echo $1|sed -e "s{'{''{g"`
	Q="SELECT play_count,"
	Q="$Q datetime(last_played, 'unixepoch', 'localtime'),"
	Q="$Q rating, karma, duration,"
	Q="$Q artist, album, title, track, genre,"
	Q="$Q date, composer, performer, disc,"
	Q="$Q datetime(date_added, 'unixepoch', 'localtime'),"
	Q="$Q datetime(last_modified, 'unixepoch', 'localtime')"
	Q="$Q FROM song WHERE uri='$turi';"
	sqlite3 -noheader -line -batch $stats_file "$Q" | sed \
		-e 's{.*datetime(date_added.*){  Date Added{g' \
		-e 's{.*datetime(last_modified.*){Last Updated{g' \
		-e 's{.*datetime(last_played.*){ Last Played{g' \
		-e 's{                                     {{g'
}

if [ $# -eq 0 ] ; then
	uri=$(mpc current -f %file%)
	if [ -z "$uri" ] ; then
		echo "No song playing and no options given" 1>&2
		exit 1
	fi
fi
music_dir=`get_mpd_conf_value music_directory`
if [ $? -ne 0 ] ; then
  echo "could not get music directory from mpd.conf" 1>&2
  exit 1
fi
sticker_file=$(get_mpd_conf_value sticker_file)
if [ $? -ne 0 ] ; then
	echo "sticker database not enabled in /etc/mpd.conf" 1>&2
	return 1
else
	if [ ! -f $sticker_file ] ; then
		echo "$sticker_file: No such file or directory" 1>&2
		return 1
	fi
fi
stats_dir=$(dirname $sticker_file)
stats_file=$stats_dir/stats.db
if [ ! -f $stats_file ] ; then
	echo "$stats_file: No such file or directory" 1>&2
	return 1
fi
if [ $# -eq 0 ] ; then
	t=$(basename "$uri")
	echo "---- $t ------------------------"
	display_info "$uri"
	echo "----------------------------"
	exit $?
fi
for i in "$@"
do
	uri=$(locate_file "$music_dir" "$i")
	if [ -n "$uri" ] ; then
		t=$(basename "$uri")
		ext=$(echo $t|rev|cut -d. -f1|rev)
		case $ext in
			dsf|flac|m4a|mp3|MP3|ogg|wma|wv)
			echo "---- $t ------------------------"
			display_info "$uri"
			echo "----------------------------"
			;;
			*)
			echo "Unsupported extension $ext in $t" 1>&2
			;;
		esac
	fi
done
