#!/bin/bash
# checks if a streaming-client is connected to the icecast-server
# 2005-02-01 yogan

ICECAST2="http://radio.meinungsverstaerker.de:8000/"

tmp=`tempfile`
lynx -dump $ICECAST2 >& $tmp

sources=`grep "Click to Listen" $tmp | wc -l | sed -e 's/^ *//'`
if [ "$sources" = "0" ] ; then echo "Im Moment läuft kein Radio, Junge!" ; exit ; fi

# Metadata
title=`grep "Stream Title" $tmp | head -1 | cut -d: -f2- | sed -e 's/^ *//'`
desc=`grep "Stream Description" $tmp | head -1 | cut -d: -f2- | sed -e 's/^ *//'`
song=`grep "Current Song" $tmp | head -1 | cut -d: -f2- | sed -e 's/^ *//'`

# Streams
src=1;
while [ $src -le $sources ]
do
	url="${ICECAST2}$(grep "Mount Point" $tmp | head -${src} | tail -1 | sed -e 's#^.*(/##' -e 's#) : .*$##')"
	qual="$(grep -E "Quality:|Bitrate:" $tmp | head -${src} | tail -1 | sed 's/^[ \t]*//;s/[ \t]*$//' | sed -e 's/[ \t]\+/ /')"
	if [ "$src" -eq 1 ] ; then
		urls="$url (${qual})"
	elif [ "$src" -gt 1 ] ; then
		urls="$urls & $url (${qual})"
	fi
	let "src += 1"
done

# Aktueller Song
text="Es läuft"
if [ "$title" != "" ] ; then
	if [ "$desc" = "" ] ; then
		text="$text \"$title\""
	else
		text="$text \"$title ($desc)\""
	fi
else
	text="$text Radio"
fi

# Anzahl der Hoerer
listtot=0
stream=1;
total=`grep "Current Listeners" $tmp | wc -l | sed -e 's/^ *//'`
while [ "$stream" -le "$total" ]
do
	let "listtot += `grep "Current Listeners" $tmp | cut -d: -f2 | sed -e 's/^ *//' | head -$stream | tail -1`"
	let "stream += 1"
done
if [ "$listtot" = "0" ] ; then text="$text (kein Hörer)" ; else text="$text ($listtot Hörer)" ; fi


# Ausgabe
if [ `basename $0` == "radio.sh" ] ; then

	if [ "$song" != "" ] ; then text="$text >> Aktueller Titel: \"$song\"" ; fi
	if [ "$sources" = "1" ] ; then urls="URL zum Stream: $urls" ; else urls="URLs zu den Streams: $urls" ; fi
	echo "$text >> $urls"

elif [ `basename $0` == "listeners.sh" ] ; then

	if [ "$listtot" -eq 0 ] ; then
		echo "Es ist gar kein Hörer auf dem Stream - wie deprimierend..."
	elif [ "$listtot" -eq 1 ] ; then
		echo "Es ist gerade mal ein Hörer auf dem Stream - der Rest pennt wohl lieber."
	else
		echo "Es sind insgesamt $listtot Hörer auf dem Stream."
	fi

else
	echo "OMG WTF?!"
fi

