diff --git a/config/spotipi.service b/config/spotipi.service index d785206..b5a02b7 100644 --- a/config/spotipi.service +++ b/config/spotipi.service @@ -1,14 +1,16 @@ [Unit] Description=Spotipi led matrix service +After=syslog.target network.target +StartLimitIntervalSec=300 +StartLimitBurst=5 [Service] -StandardOutput=syslog -StandardError=syslog SyslogIdentifier=spotipi LimitRTPRIO=99 -Restart=always -RestartSec=3 +Restart=on-failure +RestartSec=3s +KillSignal=SIGINT EnvironmentFile=/etc/systemd/system/spotipi.service.d/spotipi_env.conf [Install] -WantedBy=multi-user.target +WantedBy=multi-user.target \ No newline at end of file diff --git a/python/client/screenshot.sh b/python/client/screenshot.sh index 916eea4..73ffe7f 100755 --- a/python/client/screenshot.sh +++ b/python/client/screenshot.sh @@ -1,10 +1,5 @@ #!/bin/bash install_path=$1 - -echo $install_path - -firefox --headless --screenshot --window-size=600,448 file://$install_path/python/client/spotipi.html - -sudo mv /screenshot.png $install_path/python/client/screenshot.png - -python $install_path/inky/examples/7color/image.py $install_path/python/client/screenshot.png +#echo $install_path +firefox --headless --screenshot /tmp/screenshot.png --window-size=600,448 file://$install_path/python/client/spotipi-eink.html +python3 $install_path/inky/examples/7color/image.py /tmp/screenshot.png diff --git a/python/generateToken.py b/python/generateToken.py index 1095bf8..51e5658 100644 --- a/python/generateToken.py +++ b/python/generateToken.py @@ -9,4 +9,4 @@ # This way removes the need for a browser, it will instead give the URL to visit in the terminal auth = SpotifyOAuth(scope=scope, open_browser=False) - token = auth.get_access_token() + token = auth.get_access_token(as_dict=False) diff --git a/setup.sh b/setup.sh index c827af0..59611b6 100755 --- a/setup.sh +++ b/setup.sh @@ -1,26 +1,36 @@ #!/bin/bash -echo "Ensure packages are installed:" -sudo apt-get install python3-numpy git firefox-esr +if [[ $EUID -eq 0 ]]; then + echo "This script must NOT be run as root" 1>&2 + exit 1 +fi +echo "Update Packages list" +sudo apt update +echo +echo "Update to the latest" +sudo apt upgrade -y +echo +echo "Ensure system packages are installed:" +sudo apt-get install python3-pip python3-venv python3-numpy git echo "Clone repositories:" git clone https://github.com/ryanwa18/spotipi-eink +echo "Switching into installation directory" cd spotipi-eink +install_path=$(pwd) +echo "Clone inky repo:" git clone https://github.com/pimoroni/inky echo "Add font to system:" sudo cp ./fonts/CircularStd-Bold.otf /usr/share/fonts/opentype/CircularStd-Bold/CircularStd-Bold.otf -echo "Installing spotipy library:" -pip install spotipy --upgrade - -echo "Installing pillow library:" -pip install pillow --upgrade - -echo "Installing inky impression libraries:" -pip3 install inky[rpi,example-depends] - -echo "Remove numpy:" -pip3 uninstall numpy +echo "Creating Spotipi Python environment" +python3 -m venv --system-site-packages spotipienv +echo "Activating Spotipi Python environment" +source ${install_path}/spotipienv/bin/activate +echo Install Python packages: spotipy, pillow, requests, inky impression +pip3 install -r requirements.txt --upgrade +echo "Spotipi Python environment created" +echo echo "Enter your Spotify Client ID:" read spotify_client_id @@ -46,27 +56,35 @@ echo "Filename: .cache" echo "Enter the full path to your spotify token:" read spotify_token_path -install_path=$(pwd) - -echo "Removing spotipi service if it exists:" -sudo systemctl stop spotipi -sudo rm -rf /etc/systemd/system/spotipi.* -sudo systemctl daemon-reload -echo "...done" - -echo "Creating spotipi service:" -sudo cp ./config/spotipi.service /etc/systemd/system/ -sudo sed -i -e "/\[Service\]/a ExecStart=python ${install_path}/python/displayCoverArt.py ${spotify_username} ${spotify_token_path}" /etc/systemd/system/spotipi.service +if [ -f "/etc/systemd/system/spotipi-eink-display.service" ]; then + echo + echo "Removing old spotipi-eink-display service:" + sudo systemctl stop spotipi-eink-display + sudo systemctl disable spotipi-eink-display + sudo rm -rf /etc/systemd/system/spotipi-eink-display.* + sudo systemctl daemon-reload + echo "...done" +fi + +UID_TO_USE=$(id -u) +GID_TO_USE=$(id -g) +echo +echo "Creating spotipi-eink service:" +sudo cp "${install_path}/config/spotipi.service" /etc/systemd/system/ +sudo sed -i -e "/\[Service\]/a ExecStart=${install_path}/spotipienv/bin/python3 ${install_path}/python/displayCoverArt.py ${spotify_username} ${spotify_token_path}" /etc/systemd/system/spotipi.service +sudo sed -i -e "/ExecStart/a WorkingDirectory=${install_path}" /etc/systemd/system/spotipi.service +sudo sed -i -e "/EnvironmentFile/a User=${UID_TO_USE}" /etc/systemd/system/spotipi.service +sudo sed -i -e "/User/a Group=${GID_TO_USE}" /etc/systemd/system/spotipi.service sudo mkdir /etc/systemd/system/spotipi.service.d spotipi_env_path=/etc/systemd/system/spotipi.service.d/spotipi_env.conf sudo touch $spotipi_env_path -sudo echo "[Service]" >> $spotipi_env_path -sudo echo "Environment=\"SPOTIPY_CLIENT_ID=${spotify_client_id}\"" >> $spotipi_env_path -sudo echo "Environment=\"SPOTIPY_CLIENT_SECRET=${spotify_client_secret}\"" >> $spotipi_env_path -sudo echo "Environment=\"SPOTIPY_REDIRECT_URI=${spotify_redirect_uri}\"" >> $spotipi_env_path +echo "[Service]" | sudo tee -a $spotipi_env_path > /dev/null +echo "Environment=\"SPOTIPY_CLIENT_ID=${spotify_client_id}\"" | sudo tee -a $spotipi_env_path > /dev/null +echo "Environment=\"SPOTIPY_CLIENT_SECRET=${spotify_client_secret}\"" | sudo tee -a $spotipi_env_path > /dev/null +echo "Environment=\"SPOTIPY_REDIRECT_URI=${spotify_redirect_uri}\"" | sudo tee -a $spotipi_env_path > /dev/null sudo systemctl daemon-reload sudo systemctl start spotipi sudo systemctl enable spotipi echo "...done" -echo "SETUP IS COMPLETE" +echo "SETUP IS COMPLETE" \ No newline at end of file