Fandom

Music Player Daemon Community Wiki

Hack:playJingle

525pages on
this wiki
Add New Page
Talk4 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

This script will start playing a jingle after the currently playing file. This can be used - for instance - to play a 'top of the hour' jingle.


playJingle.sh

#!/bin/bash
# MPD script to play a song (a jingle for instance) after the currently playing song.
# The intention is to let this script get started by a cronjob.
#
# Written by Marcel van der Schans inspired by stop_after_current.sh by Harun Vos.

# Requires mpc - set the path here.
MPC=mpc
JINGLE="TopOfTheHour.mp3"

# Extract the interesting line from the mpc output.
# There must be a nicer way of dealing with multi-line shell variables.
function getDetailsLine()
{
  local d=$($MPC --format "no file name")
  d=$(tail -1 <<EOL
$(head -2 <<EOL2
$d
EOL2)
EOL)
  echo $d
}

# Get the playing/paused status.
function getStateFromLine()
{
  echo $*|cut -d' ' -f1
}

# Get the number of the currently playing song.
function getSongFromLine()
{
  echo $*|cut -d' ' -f2|cut -d'/' -f1|cut -d'#' -f2
}

# Get the number of the last song / the length of the playlist.
function getLastSongFromLine()
{
  echo $*|cut -d' ' -f2|cut -d' ' -f1|cut -d'/' -f2
}



# Dont do anything if we arent playing.
details=$(getDetailsLine)
currState=$(getStateFromLine $details)
if [ "$currState" != "[playing]" ]; then exit; fi

# Add jingle to (end of) playlist.
$MPC add $JINGLE

# Refresh our details line
details=$(getDetailsLine)

currSong=$(getSongFromLine $details)
lastSong=$(getLastSongFromLine $details)

# Move the last song (our jingle) to the next entry.
let nextSong=currSong+1
$MPC move $lastSong $nextSong


To let this script get started at a specific time (i.e. every hour), you can use crontab. Note that crontab uses the sh shell and doesn't load all your settings at the .profile file. To be able to run the playJingle.sh script - which is written for the bash shell - you can call the following (intermediate) script from crontab:


startPlayJingle.sh

#!/bin/sh
# Place the location of the playJingle.sh script below.
bash /home/username/playJingle.sh

Also on Fandom

Random Wiki