#!/bin/sh
#
# Network Stream Setting
#
# runlevels: geexbox, debug

echo "### Network Stream Configuration ###"

[ -f /etc/network -a -f /etc/netstream ] || exit 1
. /etc/network

# Disable streams if not utilized.
test "$SHOUTCAST" = "no" -a "$SHOUTCASTTV" = "no" -a `grep -c ^STREAM /etc/netstream` -eq 0 -a `grep -c ^EXTM3U /etc/netstream` -eq 0 && exit 1

DAY=`date '+%d'`
MONTH=`date '+%m'`
YEAR=`date '+%Y'`
year=`date '+%y'`
BASEDIR="/mnt/Network Streams"

# network stream
for I in `grep "^STREAM" /etc/netstream | sed "s# #%20#g"`; do
  DIR="$BASEDIR"
  [ ! -d "$DIR" ] && mkdir -p "$DIR"
  URL="$(echo $I |sed -e "s#^STREAM=\"\(.*\)\":.*#\1#" -e "s#%DD#$DAY#g" -e "s#%MM#$MONTH#g" -e "s#%YY#$YEAR#g" -e "s#%yy#$year#g")"
  FILE="$(echo $I |sed -e "s#^STREAM=\"\(.*\)\":\(.*\)#\2#" -e "s#%20# #g")"
  echo "$URL" > "$DIR/$FILE.pls" &> /dev/null
done

SC_TUNE=$(sed -n -e "s#^SHOUTCASTTUNE_URI=\"\(.*\)\"#\1#p" /etc/netstream)
(
  if [ "$SHOUTCAST" = "yes" ]; then
    # shoutcast radio
    wget -q --read-timeout=$TIMEOUT --tries=$TRIES -O /tmp/streamtmp `sed -n -e "s#^SHOUTCAST_URI=\"\(.*\)\"#\1#p" /etc/netstream` || echo "" > /tmp/streamtmp
    for I in `sed "s#\&amp;#\&#g" /tmp/streamtmp |sed -n "s#.*name=\"\([^\"]*\)\".*id=\"\([0-9]*\)\".*#\1_TAG_\2#p"| sed -e "s#\ #_#g"`; do
      DIR="$BASEDIR/SHOUTcast Radio"
      [ ! -d "$DIR" ] && mkdir -p "$DIR"
      FILE="$(echo $I | sed -e "s#\(.*\)_TAG_[0-9]*#\1#" | sed -e "s#_# #g" -e "s#://##g" -e "s#/# #g")"
      URL="$SC_TUNE?id=$(echo $I | sed -e "s#.*_TAG_\([0-9]*\)#\1#")"
      echo "$URL" > "$DIR/$FILE.pls" &> /dev/null
    done
  fi

  if [ "$SHOUTCASTTV" = "yes" ]; then
    # SHOUTcast TV content filter
    if [ -n "$BLACKLIST" ]; then
      BL="-v"
      for I in $BLACKLIST; do
        BL="$BL -e genre=\"[^\"]*$I[^\"]*\""
      done
    else # Accept all Genre
      BL="-e genre=\"[^\"]*\""
    fi

    if [ -n "$WHITELIST" ]; then
      for I in $WHITELIST; do
        WL="$WL -e genre=\"[^\"]*$I[^\"]*\""
      done
    else # Accept all Genre
      WL="-e genre=\"[^\"]*\""
    fi

    # SHOUTcast TV
    wget -q --read-timeout=$TIMEOUT --tries=$TRIES -O /tmp/streamtmp `sed -n -e "s#^SHOUTCASTTV_URI=\"\(.*\)\"#\1#p" /etc/netstream` || echo "" > /tmp/streamtmp
    for I in `grep -i $BL /tmp/streamtmp | grep -i $WL | sed "s#\&amp;#\&#g" | sed -n "s#.*name=\"\([^\"]*\)\".*id=\"\([0-9]*\)\".*#\1_TAG_\2#p"|sed "s#\ #_#g"`; do
      DIR="$BASEDIR/SHOUTcast TV"
      [ ! -d "$DIR" ] && mkdir -p "$DIR"
      FILE="$(echo $I | sed -e "s#\(.*\)_TAG_[0-9]*#\1#" | sed -e "s#_# #g" -e "s#://##g" -e "s#/# #g")"
      URL="$SC_TUNE?id=$(echo $I | sed -e "s#.*_TAG_\(.*\)#\1#")"
      echo "$URL" > "$DIR/$FILE.pls" &> /dev/null
    done
  fi

  # extended m3u playlists
  unset FILE URL
  for J in `grep "^EXTM3U" /etc/netstream | sed "s# #%20#g"`; do
    DIR="$BASEDIR/$(echo $J | sed -e "s#^EXTM3U=\".*\":\(.*\)#\1#" -e "s#%20# #g")"
    M3UURL="$(echo $J | sed "s#^EXTM3U=\"\(.*\)\":.*#\1#")"
    wget -q --read-timeout=$TIMEOUT --tries=$TRIES -O /tmp/streamtmp "$M3UURL" || continue
    for I in `sed -n -e "s/#EXTINF:[-]*[0-9]*,[0-9]*[ -]*\(.*\)/\1/p" -e "s#\(.*\)://\(.*\)#\1://\2#p" /tmp/streamtmp | sed "s# #_#g"`; do
      [ -n "$FILE" ] || FILE="$(echo $I | sed -e "s#_# #g" -e "s#/# #g")"
      [ -n "$URL" ] || URL="$(echo $I | sed -n -e "s#\(.*\)://\(.*\)#\1://\2#p" | sed -e "s#%DD#$DAY#g" -e "s#%MM#$MONTH#g" -e "s#%YY#$YEAR#g" -e "s#%yy#$year#g")"
      if [ -n "$FILE" -a -n "$URL" ]; then
        [ ! -d "$DIR" ] && mkdir -p "$DIR"
        echo "$URL" > "$DIR/$FILE.pls" &> /dev/null
        unset FILE URL
      fi
    done
  done
)&

exit 0
