mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 18:41:15 +08:00
104 lines
2.4 KiB
Bash
104 lines
2.4 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
USE_PROCD=1
|
|
START=99
|
|
|
|
CONF="spotifyd"
|
|
PROG="/usr/bin/spotifyd"
|
|
|
|
is_enabled() {
|
|
local enabled
|
|
config_get enabled "$1" "$2" "${3:-0}"
|
|
if [ "$enabled" -eq "1" ]; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
append_param_arg() {
|
|
local value
|
|
config_get value "$1" "$2" $3
|
|
[ -n "$value" ] && procd_append_param command "--${2//_/-}" "$value"
|
|
}
|
|
|
|
append_param_bool() {
|
|
is_enabled "$1" "$2" $3 && procd_append_param command "--${2//_/-}"
|
|
}
|
|
|
|
load_config_arg() {
|
|
# device info
|
|
append_param_arg "$1" "device_name"
|
|
append_param_arg "$1" "device_type"
|
|
|
|
# device control
|
|
append_param_arg "$1" "backend"
|
|
append_param_arg "$1" "control"
|
|
append_param_arg "$1" "device"
|
|
append_param_arg "$1" "mixer"
|
|
|
|
# song control
|
|
append_param_bool "$1" "autoplay"
|
|
append_param_arg "$1" "audio_format"
|
|
append_param_arg "$1" "bitrate"
|
|
|
|
# volume control
|
|
append_param_arg "$1" "initial_volume"
|
|
append_param_bool "$1" "volume_normalisation"
|
|
append_param_arg "$1" "normalisation_pregain"
|
|
append_param_arg "$1" "volume_controller"
|
|
|
|
# cache
|
|
append_param_bool "$1" "no_audio_cache" "1"
|
|
is_enabled "$1" "no_audio_cache" || append_param_arg "$1" "max_cache_size"
|
|
|
|
# advanced
|
|
append_param_arg "$1" "on_song_change_hook"
|
|
append_param_arg "$1" "proxy"
|
|
append_param_arg "$1" "zeroconf_port"
|
|
}
|
|
|
|
start_service() {
|
|
config_load "$CONF"
|
|
|
|
is_enabled "config" "enabled" || return 1
|
|
|
|
procd_open_instance "$CONF"
|
|
procd_set_param command "$PROG"
|
|
procd_append_param command "--no-daemon"
|
|
|
|
load_config_arg "config"
|
|
|
|
# cache path
|
|
local cache_path
|
|
config_get cache_path "config" "cache_path" "/var/run/spotifyd"
|
|
procd_append_param command "--cache-path" "$cache_path"
|
|
mkdir -p "$cache_path"
|
|
|
|
# credentials
|
|
local username token
|
|
config_get username "config" "username"
|
|
config_get token "config" "token"
|
|
if [ -n "$username" ] && [ -n "$token" ]; then
|
|
mkdir -p "$cache_path/oauth"
|
|
echo -n "{\"username\":\"$username\",\"auth_type\":1,\"auth_data\":\"$token\"}" > "$cache_path/oauth/credentials.json"
|
|
chmod 0600 "$cache_path/oauth/credentials.json"
|
|
mkdir -p "$cache_path/zeroconf"
|
|
cp -fp "$cache_path/oauth/credentials.json" "$cache_path/zeroconf/"
|
|
fi
|
|
chown -R "spotifyd":"spotifyd" "$cache_path"
|
|
|
|
procd_set_param user spotifyd
|
|
procd_set_param group spotifyd
|
|
|
|
procd_set_param respawn
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "$CONF"
|
|
}
|