Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VENV support and tiny updates. #4

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions config/spotipi.service
Original file line number Diff line number Diff line change
@@ -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
11 changes: 3 additions & 8 deletions python/client/screenshot.sh
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion python/generateToken.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
76 changes: 47 additions & 29 deletions setup.sh
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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"