diff --git a/.github/workflows/test_docker_debian_codename_sub.yml b/.github/workflows/test_docker_debian_codename_sub.yml index a812d5fe2..c41a880d4 100644 --- a/.github/workflows/test_docker_debian_codename_sub.yml +++ b/.github/workflows/test_docker_debian_codename_sub.yml @@ -144,7 +144,7 @@ jobs: fail-fast: false matrix: username: ['pi'] - test_script: ['run_installation_classic.sh', 'run_installation_tests2.sh', 'run_installation_tests3.sh', 'run_installation_staticip_dhcpcd.sh', 'run_installation_autohotspot_dhcpcd.sh', 'run_installation_autohotspot_NetworkManager.sh'] + test_script: ['run_installation_classic.sh', 'run_installation_rfid.sh', 'run_installation_spotify.sh', 'run_installation_staticip_dhcpcd.sh', 'run_installation_autohotspot_dhcpcd.sh', 'run_installation_autohotspot_NetworkManager.sh'] include: - username: 'hans' test_script: 'run_installation_classic.sh' diff --git a/misc/sampleconfigs/mpd.conf.buster-default.sample b/misc/sampleconfigs/mpd.conf.buster-default.sample deleted file mode 100755 index 229882a2a..000000000 --- a/misc/sampleconfigs/mpd.conf.buster-default.sample +++ /dev/null @@ -1,409 +0,0 @@ -# An example configuration file for MPD. -# Read the user manual for documentation: http://www.musicpd.org/doc/user/ -# or /usr/share/doc/mpd/html/user.html - - -# Files and directories ####################################################### -# -# This setting controls the top directory which MPD will search to discover the -# available audio files and add them to the daemon's online database. This -# setting defaults to the XDG directory, otherwise the music directory will be -# be disabled and audio files will only be accepted over ipc socket (using -# file:// protocol) or streaming files over an accepted protocol. -# -music_directory "%DIRaudioFolders%" -# -# This setting sets the MPD internal playlist directory. The purpose of this -# directory is storage for playlists created by MPD. The server will use -# playlist files not created by the server but only if they are in the MPD -# format. This setting defaults to playlist saving being disabled. -# -# playlists are inside the Phoniebox path: -playlist_directory "/home/pi/RPi-Jukebox-RFID/playlists" -# -# This setting sets the location of the MPD database. This file is used to -# load the database at server start up and store the database while the -# server is not up. This setting defaults to disabled which will allow -# MPD to accept files over ipc socket (using file:// protocol) or streaming -# files over an accepted protocol. -# -db_file "/var/lib/mpd/tag_cache" -# -# These settings are the locations for the daemon log files for the daemon. -# These logs are great for troubleshooting, depending on your log_level -# settings. -# -# The special value "syslog" makes MPD use the local syslog daemon. This -# setting defaults to logging to syslog, or to journal if mpd was started as -# a systemd service. -# -log_file "syslog" -# -# This setting sets the location of the file which stores the process ID -# for use of mpd --kill and some init scripts. This setting is disabled by -# default and the pid file will not be stored. -# -pid_file "/run/mpd/pid" -# -# This setting sets the location of the file which contains information about -# most variables to get MPD back into the same general shape it was in before -# it was brought down. This setting is disabled by default and the server -# state will be reset on server start up. -# -state_file "/var/lib/mpd/state" -# -# The location of the sticker database. This is a database which -# manages dynamic information attached to songs. -# -sticker_file "/var/lib/mpd/sticker.sql" -# -############################################################################### - - -# General music daemon options ################################################ -# -# This setting specifies the user that MPD will run as. MPD should never run as -# root and you may use this setting to make MPD change its user ID after -# initialization. This setting is disabled by default and MPD is run as the -# current user. -# -user "root" -# -# This setting specifies the group that MPD will run as. If not specified -# primary group of user specified with "user" setting will be used (if set). -# This is useful if MPD needs to be a member of group such as "audio" to -# have permission to use sound card. -# -#group "nogroup" -# -# This setting sets the address for the daemon to listen on. Careful attention -# should be paid if this is assigned to anything other then the default, any. -# This setting can deny access to control of the daemon. Choose any if you want -# to have mpd listen on every address. Not effective if systemd socket -# activation is in use. -# -# For network -bind_to_address "localhost" -# -# And for Unix Socket -#bind_to_address "/run/mpd/socket" -# -# This setting is the TCP port that is desired for the daemon to get assigned -# to. -# -#port "6600" -# -# This setting controls the type of information which is logged. Available -# setting arguments are "default", "secure" or "verbose". The "verbose" setting -# argument is recommended for troubleshooting, though can quickly stretch -# available resources on limited hardware storage. -# -log_level "default" -# -# Setting "restore_paused" to "yes" puts MPD into pause mode instead -# of starting playback after startup. -# -#restore_paused "no" -# -# This setting enables MPD to create playlists in a format usable by other -# music players. -# -#save_absolute_paths_in_playlists "no" -# -# This setting defines a list of tag types that will be extracted during the -# audio file discovery process. The complete list of possible values can be -# found in the user manual. -#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" -# -# This example just enables the "comment" tag without disabling all -# the other supported tags: -#metadata_to_use "+comment" -# -# This setting enables automatic update of MPD's database when files in -# music_directory are changed. -# -auto_update "yes" -# -# Limit the depth of the directories being watched, 0 means only watch -# the music directory itself. There is no limit by default. -# -auto_update_depth "10" -# -############################################################################### - - -# Symbolic link behavior ###################################################### -# -# If this setting is set to "yes", MPD will discover audio files by following -# symbolic links outside of the configured music_directory. -# -#follow_outside_symlinks "yes" -# -# If this setting is set to "yes", MPD will discover audio files by following -# symbolic links inside of the configured music_directory. -# -#follow_inside_symlinks "yes" -# -############################################################################### - - -# Zeroconf / Avahi Service Discovery ########################################## -# -# If this setting is set to "yes", service information will be published with -# Zeroconf / Avahi. -# -#zeroconf_enabled "yes" -# -# The argument to this setting will be the Zeroconf / Avahi unique name for -# this MPD server on the network. %h will be replaced with the hostname. -# -#zeroconf_name "Music Player @ %h" -# -############################################################################### - - -# Permissions ################################################################# -# -# If this setting is set, MPD will require password authorization. The password -# setting can be specified multiple times for different password profiles. -# -#password "password@read,add,control,admin" -# -# This setting specifies the permissions a user has who has not yet logged in. -# -#default_permissions "read,add,control,admin" -# -############################################################################### - - -# Database ####################################################################### -# - -#database { -# plugin "proxy" -# host "other.mpd.host" -# port "6600" -#} - -# Input ####################################################################### -# - -input { - plugin "curl" -# proxy "proxy.isp.com:8080" -# proxy_user "user" -# proxy_password "password" -} - -# QOBUZ input plugin -input { - enabled "no" - plugin "qobuz" -# app_id "ID" -# app_secret "SECRET" -# username "USERNAME" -# password "PASSWORD" -# format_id "N" -} - -# TIDAL input plugin -input { - enabled "no" - plugin "tidal" -# token "TOKEN" -# username "USERNAME" -# password "PASSWORD" -# audioquality "Q" -} - -# Decoder ##################################################################### -# - -decoder { - plugin "hybrid_dsd" - enabled "no" -# gapless "no" -} - -# -############################################################################### - -# Audio Output ################################################################ -# -# MPD supports various audio output types, as well as playing through multiple -# audio outputs at the same time, through multiple audio_output settings -# blocks. Setting this block is optional, though the server will only attempt -# autodetection for one sound card. -# -# An example of an ALSA output: -# -audio_output { - type "alsa" - name "My ALSA Device" -# device "hw:0,0" # optional -# mixer_type "hardware" # optional -# mixer_device "default" # optional - mixer_control "%AUDIOiFace%" # optional -# mixer_index "0" # optional -} -# -# An example of an OSS output: -# -#audio_output { -# type "oss" -# name "My OSS Device" -# device "/dev/dsp" # optional -# mixer_type "hardware" # optional -# mixer_device "/dev/mixer" # optional -# mixer_control "PCM" # optional -#} -# -# An example of a shout output (for streaming to Icecast): -# -#audio_output { -# type "shout" -# encoder "vorbis" # optional -# name "My Shout Stream" -# host "localhost" -# port "8000" -# mount "/mpd.ogg" -# password "hackme" -# quality "5.0" -# bitrate "128" -# format "44100:16:1" -# protocol "icecast2" # optional -# user "source" # optional -# description "My Stream Description" # optional -# url "http://example.com" # optional -# genre "jazz" # optional -# public "no" # optional -# timeout "2" # optional -# mixer_type "software" # optional -#} -# -# An example of a recorder output: -# -#audio_output { -# type "recorder" -# name "My recorder" -# encoder "vorbis" # optional, vorbis or lame -# path "/var/lib/mpd/recorder/mpd.ogg" -## quality "5.0" # do not define if bitrate is defined -# bitrate "128" # do not define if quality is defined -# format "44100:16:1" -#} -# -# An example of a httpd output (built-in HTTP streaming server): -# -#audio_output { -# type "httpd" -# name "My HTTP Stream" -# encoder "vorbis" # optional, vorbis or lame -# port "8000" -# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 -# quality "5.0" # do not define if bitrate is defined -# bitrate "128" # do not define if quality is defined -# format "44100:16:1" -# max_clients "0" # optional 0=no limit -#} -# -# An example of a pulseaudio output (streaming to a remote pulseaudio server) -# Please see README.Debian if you want mpd to play through the pulseaudio -# daemon started as part of your graphical desktop session! -# -#audio_output { -# type "pulse" -# name "My Pulse Output" -# server "remote_server" # optional -# sink "remote_server_sink" # optional -#} -# -# An example of a winmm output (Windows multimedia API). -# -#audio_output { -# type "winmm" -# name "My WinMM output" -# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional -# or -# device "0" # optional -# mixer_type "hardware" # optional -#} -# -# An example of an openal output. -# -#audio_output { -# type "openal" -# name "My OpenAL output" -# device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional -#} -# -## Example "pipe" output: -# -#audio_output { -# type "pipe" -# name "my pipe" -# command "aplay -f cd 2>/dev/null" -## Or if you're want to use AudioCompress -# command "AudioCompress -m | aplay -f cd 2>/dev/null" -## Or to send raw PCM stream through PCM: -# command "nc example.org 8765" -# format "44100:16:2" -#} -# -## An example of a null output (for no audio output): -# -#audio_output { -# type "null" -# name "My Null Output" -# mixer_type "none" # optional -#} -# -############################################################################### - - -# Normalization automatic volume adjustments ################################## -# -# This setting specifies the type of ReplayGain to use. This setting can have -# the argument "off", "album", "track" or "auto". "auto" is a special mode that -# chooses between "track" and "album" depending on the current state of -# random playback. If random playback is enabled then "track" mode is used. -# See for more details about ReplayGain. -# This setting is off by default. -# -#replaygain "album" -# -# This setting sets the pre-amp used for files that have ReplayGain tags. By -# default this setting is disabled. -# -#replaygain_preamp "0" -# -# This setting sets the pre-amp used for files that do NOT have ReplayGain tags. -# By default this setting is disabled. -# -#replaygain_missing_preamp "0" -# -# This setting enables or disables ReplayGain limiting. -# MPD calculates actual amplification based on the ReplayGain tags -# and replaygain_preamp / replaygain_missing_preamp setting. -# If replaygain_limit is enabled MPD will never amplify audio signal -# above its original level. If replaygain_limit is disabled such amplification -# might occur. By default this setting is enabled. -# -#replaygain_limit "yes" -# -# This setting enables on-the-fly normalization volume adjustment. This will -# result in the volume of all playing audio to be adjusted so the output has -# equal "loudness". This setting is disabled by default. -# -volume_normalization "yes" -# -############################################################################### - -# Character Encoding ########################################################## -# -# If file or directory names do not display correctly for your locale then you -# may need to modify this setting. -# -filesystem_charset "UTF-8" -# -############################################################################### diff --git a/misc/sampleconfigs/mpd.conf.sample b/misc/sampleconfigs/mpd.conf.sample old mode 100755 new mode 100644 index 812d43b21..ccf639b21 --- a/misc/sampleconfigs/mpd.conf.sample +++ b/misc/sampleconfigs/mpd.conf.sample @@ -1,12 +1,12 @@ # An example configuration file for MPD. # Read the user manual for documentation: http://www.musicpd.org/doc/user/ -# or /usr/share/doc/mpd/user-manual.html +# or /usr/share/doc/mpd/html/user.html # Files and directories ####################################################### # # This setting controls the top directory which MPD will search to discover the -# available audio files and add them to the daemon's online database. This +# available audio files and add them to the daemon's online database. This # setting defaults to the XDG directory, otherwise the music directory will be # be disabled and audio files will only be accepted over ipc socket (using # file:// protocol) or streaming files over an accepted protocol. @@ -14,29 +14,30 @@ music_directory "%DIRaudioFolders%" # # This setting sets the MPD internal playlist directory. The purpose of this -# directory is storage for playlists created by MPD. The server will use +# directory is storage for playlists created by MPD. The server will use # playlist files not created by the server but only if they are in the MPD # format. This setting defaults to playlist saving being disabled. # -# playlists are inside the Phoniebox root: +# playlists are inside the Phoniebox path: playlist_directory "/home/pi/RPi-Jukebox-RFID/playlists" # # This setting sets the location of the MPD database. This file is used to -# load the database at server start up and store the database while the +# load the database at server start up and store the database while the # server is not up. This setting defaults to disabled which will allow # MPD to accept files over ipc socket (using file:// protocol) or streaming # files over an accepted protocol. # db_file "/var/lib/mpd/tag_cache" -# +# # These settings are the locations for the daemon log files for the daemon. # These logs are great for troubleshooting, depending on your log_level # settings. # # The special value "syslog" makes MPD use the local syslog daemon. This -# setting defaults to logging to syslog, otherwise logging is disabled. +# setting defaults to logging to syslog, or to journal if mpd was started as +# a systemd service. # -log_file "/var/log/mpd/mpd.log" +log_file "syslog" # # This setting sets the location of the file which stores the process ID # for use of mpd --kill and some init scripts. This setting is disabled by @@ -46,7 +47,7 @@ pid_file "/run/mpd/pid" # # This setting sets the location of the file which contains information about # most variables to get MPD back into the same general shape it was in before -# it was brought down. This setting is disabled by default and the server +# it was brought down. This setting is disabled by default and the server # state will be reset on server start up. # state_file "/var/lib/mpd/state" @@ -78,7 +79,8 @@ user "root" # This setting sets the address for the daemon to listen on. Careful attention # should be paid if this is assigned to anything other then the default, any. # This setting can deny access to control of the daemon. Choose any if you want -# to have mpd listen on every address +# to have mpd listen on every address. Not effective if systemd socket +# activation is in use. # # For network bind_to_address "localhost" @@ -91,20 +93,12 @@ bind_to_address "localhost" # #port "6600" # -# This setting controls the type of information which is logged. Available +# This setting controls the type of information which is logged. Available # setting arguments are "default", "secure" or "verbose". The "verbose" setting # argument is recommended for troubleshooting, though can quickly stretch # available resources on limited hardware storage. # -#log_level "default" -# -# If you have a problem with your MP3s ending abruptly it is recommended that -# you set this argument to "no" to attempt to fix the problem. If this solves -# the problem, it is highly recommended to fix the MP3 files with vbrfix -# (available as vbrfix in the debian archive), at which -# point gapless MP3 playback can be enabled. -# -#gapless_mp3_playback "yes" +log_level "default" # # Setting "restore_paused" to "yes" puts MPD into pause mode instead # of starting playback after startup. @@ -116,12 +110,16 @@ bind_to_address "localhost" # #save_absolute_paths_in_playlists "no" # -# This setting defines a list of tag types that will be extracted during the +# This setting defines a list of tag types that will be extracted during the # audio file discovery process. The complete list of possible values can be -# found in the mpd.conf man page. +# found in the user manual. #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" # -# This setting enables automatic update of MPD's database when files in +# This example just enables the "comment" tag without disabling all +# the other supported tags: +#metadata_to_use "+comment" +# +# This setting enables automatic update of MPD's database when files in # music_directory are changed. # auto_update "yes" @@ -136,7 +134,7 @@ auto_update_depth "10" # Symbolic link behavior ###################################################### # -# If this setting is set to "yes", MPD will discover audio files by following +# If this setting is set to "yes", MPD will discover audio files by following # symbolic links outside of the configured music_directory. # #follow_outside_symlinks "yes" @@ -157,9 +155,9 @@ auto_update_depth "10" #zeroconf_enabled "yes" # # The argument to this setting will be the Zeroconf / Avahi unique name for -# this MPD server on the network. +# this MPD server on the network. %h will be replaced with the hostname. # -#zeroconf_name "Music Player" +#zeroconf_name "Music Player @ %h" # ############################################################################### @@ -167,11 +165,11 @@ auto_update_depth "10" # Permissions ################################################################# # # If this setting is set, MPD will require password authorization. The password -# can setting can be specified multiple times for different password profiles. +# setting can be specified multiple times for different password profiles. # #password "password@read,add,control,admin" # -# This setting specifies the permissions a user has who has not yet logged in. +# This setting specifies the permissions a user has who has not yet logged in. # #default_permissions "read,add,control,admin" # @@ -197,13 +195,43 @@ input { # proxy_password "password" } +# QOBUZ input plugin +input { + enabled "no" + plugin "qobuz" +# app_id "ID" +# app_secret "SECRET" +# username "USERNAME" +# password "PASSWORD" +# format_id "N" +} + +# TIDAL input plugin +input { + enabled "no" + plugin "tidal" +# token "TOKEN" +# username "USERNAME" +# password "PASSWORD" +# audioquality "Q" +} + +# Decoder ##################################################################### +# + +decoder { + plugin "hybrid_dsd" + enabled "no" +# gapless "no" +} + # ############################################################################### # Audio Output ################################################################ # -# MPD supports various audio output types, as well as playing through multiple -# audio outputs at the same time, through multiple audio_output settings +# MPD supports various audio output types, as well as playing through multiple +# audio outputs at the same time, through multiple audio_output settings # blocks. Setting this block is optional, though the server will only attempt # autodetection for one sound card. # @@ -227,14 +255,14 @@ audio_output { # device "/dev/dsp" # optional # mixer_type "hardware" # optional # mixer_device "/dev/mixer" # optional -# mixer_control "%AUDIOiFace%" # optional +# mixer_control "PCM" # optional #} # # An example of a shout output (for streaming to Icecast): # #audio_output { # type "shout" -# encoding "ogg" # optional +# encoder "vorbis" # optional # name "My Shout Stream" # host "localhost" # port "8000" @@ -330,13 +358,6 @@ audio_output { # mixer_type "none" # optional #} # -# If MPD has been compiled with libsamplerate support, this setting specifies -# the sample rate converter to use. Possible values can be found in the -# mpd.conf man page or the libsamplerate documentation. By default, this is -# setting is disabled. -# -#samplerate_converter "Fastest Sinc Interpolator" -# ############################################################################### @@ -371,49 +392,23 @@ audio_output { #replaygain_limit "yes" # # This setting enables on-the-fly normalization volume adjustment. This will -# result in the volume of all playing audio to be adjusted so the output has +# result in the volume of all playing audio to be adjusted so the output has # equal "loudness". This setting is disabled by default. # -#volume_normalization "no" +volume_normalization "yes" # ############################################################################### - # Character Encoding ########################################################## # -# If file or directory names do not display correctly for your locale then you +# If file or directory names do not display correctly for your locale then you # may need to modify this setting. # filesystem_charset "UTF-8" # # This setting controls the encoding that ID3v1 tags should be converted from. # -id3v1_encoding "UTF-8" +#id3v1_encoding "UTF-8" # -############################################################################### - - -# SIDPlay decoder ############################################################# -# -# songlength_database: -# Location of your songlengths file, as distributed with the HVSC. -# The sidplay plugin checks this for matching MD5 fingerprints. -# See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq -# -# default_songlength: -# This is the default playing time in seconds for songs not in the -# songlength database, or in case you're not using a database. -# A value of 0 means play indefinitely. -# -# filter: -# Turns the SID filter emulation on or off. -# -#decoder { -# plugin "sidplay" -# songlength_database "/media/C64Music/DOCUMENTS/Songlengths.txt" -# default_songlength "120" -# filter "true" -#} # ############################################################################### - diff --git a/scripts/installscripts/install-jukebox.sh b/scripts/installscripts/install-jukebox.sh index af74c43be..751a2ef06 100644 --- a/scripts/installscripts/install-jukebox.sh +++ b/scripts/installscripts/install-jukebox.sh @@ -592,13 +592,9 @@ config_spotify() { # * client_secret " - read -rp "Do you want to enable Spotify? [Y/n] " response + read -rp "Do you want to enable Spotify? [y/N] " response case "$response" in - [nN][oO]|[nN]) - SPOTinstall=NO - echo "You don't want spotify support." - ;; - *) + [yY][eE][sS]|[yY]) SPOTinstall=YES clear echo "##################################################### @@ -623,6 +619,10 @@ config_spotify() { read -rp "Type your client_id: " SPOTIclientid read -rp "Type your client_secret: " SPOTIclientsecret ;; + *) + SPOTinstall=NO + echo "You don't want spotify support." + ;; esac # append variables to config file { @@ -635,36 +635,6 @@ config_spotify() { read -rp "Hit ENTER to proceed to the next step." INPUT } -config_mpd() { - ##################################################### - # Configure MPD - - clear - - echo "##################################################### -# -# CONFIGURE MPD -# -# MPD (Music Player Daemon) runs the audio output and must -# be configured. Do it now, if you are unsure. -# (Note: can be done manually later.) -" - read -rp "Do you want to configure MPD? [Y/n] " response - case "$response" in - [nN][oO]|[nN]) - MPDconfig=NO - echo "You want to configure MPD later." - ;; - *) - MPDconfig=YES - echo "MPD will be set up with default values." - ;; - esac - # append variables to config file - echo "MPDconfig=\"$MPDconfig\"" >> "${HOME_DIR}/PhonieboxInstall.conf" - read -rp "Hit ENTER to proceed to the next step." INPUT -} - config_audio_folder() { local jukebox_dir="$1" @@ -788,7 +758,6 @@ check_config_file() { check_variable "SPOTIclientsecret" fi fi - check_variable "MPDconfig" check_variable "DIRaudioFolders" check_variable "GPIOconfig" @@ -1060,6 +1029,7 @@ install_main() { sudo rm "${systemd_dir}"/phoniebox-rotary-encoder.service sudo rm "${systemd_dir}"/phoniebox-gpio-buttons.service echo "### Done with erasing old daemons. Stop ignoring errors!" + # 2. install new ones - this is version > 1.1.8-beta RFID_READER_SERVICE="${systemd_dir}/phoniebox-rfid-reader.service" sudo cp "${jukebox_dir}"/misc/sampleconfigs/phoniebox-rfid-reader.service.stretch-default.sample "${RFID_READER_SERVICE}" @@ -1097,33 +1067,31 @@ install_main() { cp "${jukebox_dir}"/misc/sampleconfigs/startupsound.mp3.sample "${jukebox_dir}"/shared/startupsound.mp3 cp "${jukebox_dir}"/misc/sampleconfigs/shutdownsound.mp3.sample "${jukebox_dir}"/shared/shutdownsound.mp3 - if [ "${MPDconfig}" == "YES" ]; then - local mpd_conf="/etc/mpd.conf" - echo "Configuring MPD..." - # MPD configuration - # -rw-r----- 1 mpd audio 14043 Jul 17 20:16 /etc/mpd.conf - sudo cp "${jukebox_dir}"/misc/sampleconfigs/mpd.conf.buster-default.sample ${mpd_conf} - # Change vars to match install config - sudo sed -i 's/%AUDIOiFace%/'"$AUDIOiFace"'/' "${mpd_conf}" - # for $DIRaudioFolders using | as alternate regex delimiter because of the folder path slash - sudo sed -i 's|%DIRaudioFolders%|'"$DIRaudioFolders"'|' "${mpd_conf}" - # Replace homedir; double quotes for variable expansion - sudo sed -i "s%/home/pi%${HOME_DIR}%g" "${mpd_conf}" - sudo chown mpd:audio "${mpd_conf}" - sudo chmod 640 "${mpd_conf}" - - # start mpd - echo "Starting mpd service..." - sudo service mpd restart - sudo systemctl enable mpd - fi + echo "Configuring MPD..." + local mpd_conf="/etc/mpd.conf" + # MPD configuration + # -rw-r----- 1 mpd audio 14043 Jul 17 20:16 /etc/mpd.conf + sudo cp "${jukebox_dir}"/misc/sampleconfigs/mpd.conf.sample ${mpd_conf} + # Change vars to match install config + sudo sed -i 's/%AUDIOiFace%/'"$AUDIOiFace"'/' "${mpd_conf}" + # for $DIRaudioFolders using | as alternate regex delimiter because of the folder path slash + sudo sed -i 's|%DIRaudioFolders%|'"$DIRaudioFolders"'|' "${mpd_conf}" + # Replace homedir; double quotes for variable expansion + sudo sed -i "s%/home/pi%${HOME_DIR}%g" "${mpd_conf}" + sudo chown mpd:audio "${mpd_conf}" + sudo chmod 640 "${mpd_conf}" + + # start mpd + echo "Starting mpd service..." + sudo service mpd restart + sudo systemctl enable mpd # Spotify config if [ "${SPOTinstall}" == "YES" ]; then + echo "Configuring Spotify support..." local etc_mopidy_conf="/etc/mopidy/mopidy.conf" local mopidy_conf="${HOME_DIR}/.config/mopidy/mopidy.conf" - echo "Configuring Spotify support..." sudo systemctl disable mpd sudo service mpd stop sudo systemctl enable mopidy @@ -1470,7 +1438,6 @@ main() { config_autohotspot config_audio_interface config_spotify - config_mpd config_audio_folder "${JUKEBOX_HOME_DIR}" config_gpio else diff --git a/scripts/installscripts/tests/run_installation_autohotspot_NetworkManager.sh b/scripts/installscripts/tests/run_installation_autohotspot_NetworkManager.sh index 049a6aded..0979e7c72 100644 --- a/scripts/installscripts/tests/run_installation_autohotspot_NetworkManager.sh +++ b/scripts/installscripts/tests/run_installation_autohotspot_NetworkManager.sh @@ -20,7 +20,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # y use autohotspot default config (extra ENTER) # y use default audio iface (extra ENTER) # n spotify (extra ENTER) -# n configure mpd (extra ENTER) # y audio default location (extra ENTER) # y config gpio (extra ENTER) # y start installation @@ -38,8 +37,6 @@ y n -n - y y diff --git a/scripts/installscripts/tests/run_installation_autohotspot_dhcpcd.sh b/scripts/installscripts/tests/run_installation_autohotspot_dhcpcd.sh index f1a1b880d..7091399bb 100644 --- a/scripts/installscripts/tests/run_installation_autohotspot_dhcpcd.sh +++ b/scripts/installscripts/tests/run_installation_autohotspot_dhcpcd.sh @@ -20,7 +20,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # y use autohotspot default config (extra ENTER) # y use default audio iface (extra ENTER) # n spotify (extra ENTER) -# n configure mpd (extra ENTER) # y audio default location (extra ENTER) # y config gpio (extra ENTER) # y start installation @@ -38,8 +37,6 @@ y n -n - y y diff --git a/scripts/installscripts/tests/run_installation_classic.sh b/scripts/installscripts/tests/run_installation_classic.sh index 1875cef55..434efc360 100644 --- a/scripts/installscripts/tests/run_installation_classic.sh +++ b/scripts/installscripts/tests/run_installation_classic.sh @@ -20,7 +20,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # - use autohotspot default config # y use default audio iface (extra ENTER) # n spotify (extra ENTER) -# y configure mpd (extra ENTER) # y audio default location (extra ENTER) # y config gpio (extra ENTER) # y start installation @@ -40,8 +39,6 @@ y y -y - y n n diff --git a/scripts/installscripts/tests/run_installation_tests2.sh b/scripts/installscripts/tests/run_installation_rfid.sh similarity index 96% rename from scripts/installscripts/tests/run_installation_tests2.sh rename to scripts/installscripts/tests/run_installation_rfid.sh index 04edaf4b7..d9f150ad8 100644 --- a/scripts/installscripts/tests/run_installation_tests2.sh +++ b/scripts/installscripts/tests/run_installation_rfid.sh @@ -19,7 +19,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # n configure autohotspot (extra ENTER) # y use default audio iface (extra ENTER) # n spotify (extra ENTER) -# y configure mpd (extra ENTER) # y audio default location (extra ENTER) # y use gpio (extra ENTER) # y start installation @@ -42,8 +41,6 @@ y y -y - y y 2 diff --git a/scripts/installscripts/tests/run_installation_tests3.sh b/scripts/installscripts/tests/run_installation_spotify.sh similarity index 96% rename from scripts/installscripts/tests/run_installation_tests3.sh rename to scripts/installscripts/tests/run_installation_spotify.sh index ede4f33f7..e63263a5a 100644 --- a/scripts/installscripts/tests/run_installation_tests3.sh +++ b/scripts/installscripts/tests/run_installation_spotify.sh @@ -19,7 +19,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # n configure autohotspot (extra ENTER) # y use default audio iface (extra ENTER) # y spotify with myuser, mypassword, myclient_id, myclient_secret (extra ENTER) -# y configure mpd (extra ENTER) # y audio default location (extra ENTER) # y config gpio (extra ENTER) # y start installation @@ -43,8 +42,6 @@ y y -y - y n n diff --git a/scripts/installscripts/tests/run_installation_staticip_dhcpcd.sh b/scripts/installscripts/tests/run_installation_staticip_dhcpcd.sh index 77fa4fcf5..a01610170 100644 --- a/scripts/installscripts/tests/run_installation_staticip_dhcpcd.sh +++ b/scripts/installscripts/tests/run_installation_staticip_dhcpcd.sh @@ -21,7 +21,6 @@ echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selecti # - use autohotspot default config (extra ENTER) # y use default audio iface (extra ENTER) # n spotify (extra ENTER) -# n configure mpd (extra ENTER) # y audio default location (extra ENTER) # y config gpio (extra ENTER) # y start installation @@ -44,8 +43,6 @@ y n -n - y y diff --git a/scripts/installscripts/tests/test_installation.sh b/scripts/installscripts/tests/test_installation.sh index 6353aab3c..93fd63315 100755 --- a/scripts/installscripts/tests/test_installation.sh +++ b/scripts/installscripts/tests/test_installation.sh @@ -147,7 +147,6 @@ verify_conf_file() { check_variable "SPOTIclientsecret" fi fi - check_variable "MPDconfig" check_variable "DIRaudioFolders" check_variable "GPIOconfig" @@ -423,44 +422,44 @@ verify_systemd_services() { } verify_spotify_config() { - local etc_mopidy_conf="/etc/mopidy/mopidy.conf" - local mopidy_conf="${HOME_DIR}/.config/mopidy/mopidy.conf" - - printf "\nTESTING spotify config...\n\n" - - check_file_contains_string "username = ${SPOTIuser}" "${etc_mopidy_conf}" - check_file_contains_string "password = ${SPOTIpass}" "${etc_mopidy_conf}" - check_file_contains_string "client_id = ${SPOTIclientid}" "${etc_mopidy_conf}" - check_file_contains_string "client_secret = ${SPOTIclientsecret}" "${etc_mopidy_conf}" - check_file_contains_string "media_dir = ${DIRaudioFolders}" "${etc_mopidy_conf}" - - check_file_contains_string "username = ${SPOTIuser}" "${mopidy_conf}" - check_file_contains_string "password = ${SPOTIpass}" "${mopidy_conf}" - check_file_contains_string "client_id = ${SPOTIclientid}" "${mopidy_conf}" - check_file_contains_string "client_secret = ${SPOTIclientsecret}" "${mopidy_conf}" - check_file_contains_string "media_dir = ${DIRaudioFolders}" "${mopidy_conf}" - - # check that mopidy service is enabled - check_service_enablement mopidy enabled - # check that mpd service is disabled - check_service_enablement mpd disabled + if [[ "${SPOTinstall}" == "YES" ]]; then + local etc_mopidy_conf="/etc/mopidy/mopidy.conf" + local mopidy_conf="${HOME_DIR}/.config/mopidy/mopidy.conf" + + printf "\nTESTING spotify config...\n\n" + + check_file_contains_string "username = ${SPOTIuser}" "${etc_mopidy_conf}" + check_file_contains_string "password = ${SPOTIpass}" "${etc_mopidy_conf}" + check_file_contains_string "client_id = ${SPOTIclientid}" "${etc_mopidy_conf}" + check_file_contains_string "client_secret = ${SPOTIclientsecret}" "${etc_mopidy_conf}" + check_file_contains_string "media_dir = ${DIRaudioFolders}" "${etc_mopidy_conf}" + + check_file_contains_string "username = ${SPOTIuser}" "${mopidy_conf}" + check_file_contains_string "password = ${SPOTIpass}" "${mopidy_conf}" + check_file_contains_string "client_id = ${SPOTIclientid}" "${mopidy_conf}" + check_file_contains_string "client_secret = ${SPOTIclientsecret}" "${mopidy_conf}" + check_file_contains_string "media_dir = ${DIRaudioFolders}" "${mopidy_conf}" + + # check that mopidy service is enabled + check_service_enablement mopidy enabled + # check that mpd service is disabled + check_service_enablement mpd disabled + fi } verify_mpd_config() { - if [[ "$MPDconfig" == "YES" ]]; then - local mpd_conf="/etc/mpd.conf" + local mpd_conf="/etc/mpd.conf" - printf "\nTESTING mpd config...\n\n" + printf "\nTESTING mpd config...\n\n" - check_file_contains_string "^[[:blank:]]\+mixer_control[[:blank:]]\+\"${AUDIOiFace}\"" "${mpd_conf}" - check_file_contains_string "^music_directory[[:blank:]]\+\"${DIRaudioFolders}\"" "${mpd_conf}" + check_file_contains_string "^[[:blank:]]\+mixer_control[[:blank:]]\+\"${AUDIOiFace}\"" "${mpd_conf}" + check_file_contains_string "^music_directory[[:blank:]]\+\"${DIRaudioFolders}\"" "${mpd_conf}" - check_chmod_chown 640 mpd audio "/etc" "mpd.conf" + check_chmod_chown 640 mpd audio "/etc" "mpd.conf" - # check that mpd service is enabled, when Spotify support is not installed - if [[ "${SPOTinstall}" == "NO" ]]; then - check_service_enablement mpd enabled - fi + # check that mpd service is enabled, when Spotify support is not installed + if [[ "${SPOTinstall}" == "NO" ]]; then + check_service_enablement mpd enabled fi } @@ -493,10 +492,8 @@ main() { verify_samba_config verify_webserver_config verify_systemd_services - if [[ "${SPOTinstall}" == "YES" ]]; then - verify_spotify_config - fi verify_mpd_config + verify_spotify_config verify_autohotspot_settings verify_folder_access "${JUKEBOX_HOME_DIR}" }