Commit 1f5d9aab authored by Vitaly Lipatov's avatar Vitaly Lipatov

checkmpd: add socket support

parent 933f1cee
#!/bin/bash #!/bin/bash
ROOT_DIRECTORY=/home/icecastradio/radio_mpd/ ROOT_DIRECTORY=/home/icecastradio/radio_mpd/
URL=http://radio.azbyka.ru/json.xsl URL=http://radio.azbyka.ru/json.xsl
cd $ROOT_DIRECTORY || exit
STREAMS=`ls -l $ROOT_DIRECTORY | grep "^d" | awk '{print $9}'` STREAMS=`ls -l $ROOT_DIRECTORY | grep "^d" | awk '{print $9}'`
CONTENT=$(curl $URL 2>/dev/null) CONTENT=$(curl $URL 2>/dev/null)
ACTIVE_STREAMS=`grep -oP '(?<=/).*?(?=")' <<< $CONTENT` ACTIVE_STREAMS=`grep -oP '(?<=/).*?(?=")' <<< $CONTENT`
...@@ -25,25 +26,35 @@ OFFLINE_STREAMS=() ...@@ -25,25 +26,35 @@ OFFLINE_STREAMS=()
# 2) Compare "$ACTIVE_STREAMS" and variable "STREAMS". # 2) Compare "$ACTIVE_STREAMS" and variable "STREAMS".
# If "$ELEM" not in "$ACTIVE_STREAMS" , add "$ELEM" in $OFFLINE_STREAMS. # If "$ELEM" not in "$ACTIVE_STREAMS" , add "$ELEM" in $OFFLINE_STREAMS.
elem_control()
{
local bind
bind=`cat $ROOT_DIRECTORY/$1.mpd.conf | grep "^bind_to_address" | awk '{ print $2 ; exit; }' | tr -d \"`
[ -e "$bind" ] && echo "--host $bind" && return
bind=`cat $ROOT_DIRECTORY/$1.mpd.conf | grep "^port" | awk '{ print $2 ; exit; }' | tr -d \"`
echo "-p $bind"
}
echo "MPD Status:" echo "MPD Status:"
for ELEM in $STREAMS; do for ELEM in $STREAMS; do
# Решаем ситуацию , когда поток просто на паузе. # Решаем ситуацию , когда поток просто на паузе.
ELEM_PORT=`cat $ROOT_DIRECTORY/$ELEM.mpd.conf | grep port | awk '{ print $2 ; exit; }' | tr -d \"` ELEM_CONTROL="$(elem_control $ELEM)"
ELEM_STATUS=`mpc -p $ELEM_PORT | awk '{print $1}' | sed -n 2p` ELEM_STATUS=$(mpc $ELEM_CONTROL | awk '{print $1}' | sed -n 2p)
if [[ "$ELEM_STATUS" =~ "[paused]" ]]; then if [[ "$ELEM_STATUS" =~ "[paused]" ]]; then
echo "$ELEM was paused. Started playing again" echo "$ELEM was paused. Started playing again"
mpc -p $ELEM_PORT play mpc $ELEM_CONTROL play
elif [[ "$ELEM_STATUS" = "" ]]; then elif [[ "$ELEM_STATUS" = "" ]]; then
echo "$ELEM is empty. Started playing again" echo "$ELEM is empty. Started playing again"
mpc -p $ELEM_PORT play mpc $ELEM_CONTROL play
else else
echo -e "$ELEM\tStatus: '$ELEM_STATUS'" echo -e "$ELEM\tStatus: '$ELEM_STATUS'"
fi fi
if [[ $ELEM_STATUS =~ "error" ]]; then if [[ $ELEM_STATUS =~ "ERROR:" ]]; then
echo "$ELEM was paused with error. See logs in /home/icecastradio/radio_mpd/$ELEM/mpd.log" echo "$ELEM was paused with error. See logs in /home/icecastradio/radio_mpd/$ELEM/mpd.log"
mpc -p $ELEM_PORT play mpc $ELEM_CONTROL play
fi fi
if [[ ! $ACTIVE_STREAMS =~ $ELEM ]]; then if [[ ! $ACTIVE_STREAMS =~ $ELEM ]]; then
...@@ -55,9 +66,9 @@ done ...@@ -55,9 +66,9 @@ done
# Ниже ситуация с отмонтированным потоком: # Ниже ситуация с отмонтированным потоком:
echo -e "\nRestarting unmounted MPD-STREAMS:" echo -e "\nRestarting unmounted MPD-STREAMS:"
for ELEM in ${OFFLINE_STREAMS[@]}; do for ELEM in ${OFFLINE_STREAMS[@]}; do
ELEM_PORT=`cat $ROOT_DIRECTORY/$ELEM.mpd.conf | grep port | awk '{ print $2 ; exit; }' | tr -d \"` ELEM_CONTROL="$(elem_control $ELEM)"
# Стартуем поток # Стартуем поток
mpc -p $ELEM_PORT play mpc $ELEM_CONTROL play
echo $ELEM echo $ELEM
done done
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment