Add contrib/library_autoupdater.sh (#1096)
This script is using inotify to watch your music folders and trigger a new library scan 10 minutes after a notification has been send from inotify.master
parent
6baa2d09d6
commit
e13877203b
@ -0,0 +1,63 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
|
||||||
|
set -u |
||||||
|
|
||||||
|
info() { |
||||||
|
echo "$(date -Iseconds) - $*" |
||||||
|
} |
||||||
|
|
||||||
|
error() { |
||||||
|
info >&2 "$*" |
||||||
|
exit 1 |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
# Make sure only root can run our script |
||||||
|
(( $(id -u) == 0 )) || error "this script must be run as root!" |
||||||
|
|
||||||
|
# COMMANDS |
||||||
|
typeset -r cmd_which="/usr/bin/which" && [[ -x $cmd_which ]] || error "which command not found" |
||||||
|
typeset -r cmd_curl=$($cmd_which curl) && [[ -x $cmd_curl ]] || error "curl command not found" |
||||||
|
typeset -r cmd_inotifywait=$($cmd_which inotifywait) && [[ -x $cmd_inotifywait ]] || error "inotifywait command not found" |
||||||
|
typeset -r cmd_md5sum=$($cmd_which md5sum) && [[ -x $cmd_md5sum ]] || error "md5sum command not found" |
||||||
|
typeset -r cmd_awk=$($cmd_which awk) && [[ -x $cmd_awk ]] || error "awk command not found" |
||||||
|
typeset -r cmd_openssl=$($cmd_which openssl) && [[ -x $cmd_openssl ]] || error "openssl command not found" |
||||||
|
|
||||||
|
# VARS |
||||||
|
typeset -r dirs="/var/music" |
||||||
|
typeset -r username="admin" |
||||||
|
|
||||||
|
# typeset -r password="" |
||||||
|
# typeset -r salt="$($cmd_openssl rand -hex 20)" |
||||||
|
# typeset -r token="$(echo -n "${password}${salt}" | $cmd_md5sum | $cmd_awk '{ print $1 }')" |
||||||
|
|
||||||
|
typeset -r salt="" |
||||||
|
typeset -r token="" |
||||||
|
typeset -r server="" |
||||||
|
typeset -r client="scan-trigger" |
||||||
|
|
||||||
|
trigger_scan() { |
||||||
|
typeset -r url="${server}/rest/startScan?u=${username}&t=${token}&s=${salt}&v=1.15.0&c=${client}" |
||||||
|
|
||||||
|
response=$($cmd_curl -s $url) |
||||||
|
echo $response | grep -q 'status="ok"' || error "Scan request failed" |
||||||
|
echo $response | grep -q 'scanning="false"' || info "Server is already scanning" |
||||||
|
} |
||||||
|
|
||||||
|
info "Start watching dirs '$dirs'" |
||||||
|
info "Press CTRL+C to stop..." |
||||||
|
for (( ; ; )) do |
||||||
|
$cmd_inotifywait -r -qq \ |
||||||
|
-e modify \ |
||||||
|
-e move \ |
||||||
|
-e create \ |
||||||
|
-e delete \ |
||||||
|
$dirs |
||||||
|
|
||||||
|
info "Event received, waiting 10 minutes before triggering new scan" |
||||||
|
sleep 3600 # Wait 10 minutes before triggering the scan |
||||||
|
trigger_scan |
||||||
|
sleep 5 |
||||||
|
done |
||||||
|
|
||||||
|
# EOF |
Loading…
Reference in new issue