#!/bin/sh # This code is copyright Stephen C Phillips (http://scphillips.com). # It is licensed using GPL v3. URLS=/var/local/bbc_radio/urls # get the radio URLs if they are not there [ ! -f $URLS ] && bbc_radio_update case "$1" in "stop") mpc -q clear ;; "status") # Run the "mpc" command, remove any line starting "volume" # and replace any line starting with "http" with "Unknown station" mpc | grep -vE "^volume:" | sed "s/^http:.*/Unknown station/" ;; "stations") # Take the URLS file, split each line at the comma # and just print the first field, then sort them cat $URLS | cut -d',' -f1 | sort ;; "reset") # Stop whaever is playing and then update the URL list echo "Fetching station URLs..." mpc -q clear bbc_radio_update ;; *) # Search the URLS file for this script's argument ($1) followed # by anything and then a comma. Redirect it to /dev/null so the result # isn't shown in the console. grep -i "$1.*, " $URLS > /dev/null # Check if we found a URL in the URLs file matching the argument. if [ $? -eq 0 ]; then mpc -q clear # Again, search for the argument, take just the first line that matches # (using "head"), split the line at the comma and take the second field. # Add this to the playlist with "mpc add". mpc -q add `grep -i "$1.*, " $URLS | head -1 | cut -d',' -f2` mpc -q play sleep 2 # Check if we just found an error (often caused by URLs being out of date). # Message could be "ERROR: problems decoding" or "ERROR: Failed to decode" mpc | grep "ERROR: .* decod" > /dev/null if [ $? -eq 0 ]; then # If mpc reported an error then fetch the URLS and try again. echo "Fetching station URLs..." mpc -q clear bbc_radio_update mpc -q add `grep -i "$1.*, " $URLS | head -1 | cut -d',' -f2` mpc -q play fi # Get the status, remove the volume line, replace any URL with # "unknown station" and this time let it appear on the console. mpc | grep -vE "^volume:" | sed "s/^http:.*/Unknown station/" else echo "No such station" fi ;; esac