140 lines
4.5 KiB
Bash
Executable File
140 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Journey FM Playlist Creator - Linux Installer
|
|
|
|
set -e
|
|
|
|
echo "Journey FM Playlist Creator - Linux Installer"
|
|
echo "=============================================="
|
|
|
|
# Get the directory where this script is located
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
|
|
echo "Installing in: $DIR"
|
|
|
|
# Default configuration values
|
|
DEFAULT_PLEX_TOKEN="pU-m3HWYUZU6iXJFhJyA"
|
|
DEFAULT_SERVER_IP="172.16.16.106"
|
|
DEFAULT_PLAYLIST_NAME="Radio"
|
|
DEFAULT_SELECTED_STATIONS="journey_fm,spirit_fm,klove"
|
|
DEFAULT_AUTO_UPDATE="true"
|
|
DEFAULT_UPDATE_INTERVAL="15"
|
|
DEFAULT_UPDATE_UNIT="Minutes"
|
|
DEFAULT_CONTAINER_RUN_MODE="loop"
|
|
DEFAULT_ENABLE_WEB_DASHBOARD="true"
|
|
DEFAULT_DASHBOARD_PORT="8765"
|
|
DEFAULT_JOURNEYFM_DATA_DIR="/data"
|
|
DEFAULT_CHROME_BINARY="/usr/bin/chromium"
|
|
DEFAULT_CHROMEDRIVER_PATH="/usr/bin/chromedriver"
|
|
DEFAULT_JOURNEYFM_CONTAINER="1"
|
|
DEFAULT_PYTHONUNBUFFERED="1"
|
|
DEFAULT_PYTHONDONTWRITEBYTECODE="1"
|
|
DEFAULT_LANG="C.UTF-8"
|
|
DEFAULT_TERM="xterm"
|
|
|
|
# Helper for interactive prompts
|
|
ask_value() {
|
|
local prompt="$1"
|
|
local default="$2"
|
|
local var
|
|
read -p "$prompt [$default]: " var
|
|
if [ -z "$var" ]; then
|
|
var="$default"
|
|
fi
|
|
echo "$var"
|
|
}
|
|
|
|
echo "Configuring environment for .env file (press Enter to accept defaults)."
|
|
|
|
PLEX_TOKEN=$(ask_value "Plex token" "$DEFAULT_PLEX_TOKEN")
|
|
SERVER_IP=$(ask_value "Plex server IP" "$DEFAULT_SERVER_IP")
|
|
PLAYLIST_NAME=$(ask_value "Playlist name" "$DEFAULT_PLAYLIST_NAME")
|
|
SELECTED_STATIONS=$(ask_value "Selected stations" "$DEFAULT_SELECTED_STATIONS")
|
|
AUTO_UPDATE=$(ask_value "Auto update" "$DEFAULT_AUTO_UPDATE")
|
|
UPDATE_INTERVAL=$(ask_value "Update interval" "$DEFAULT_UPDATE_INTERVAL")
|
|
UPDATE_UNIT=$(ask_value "Update unit (Minutes/Hours)" "$DEFAULT_UPDATE_UNIT")
|
|
CONTAINER_RUN_MODE=$(ask_value "Container run mode (loop/once)" "$DEFAULT_CONTAINER_RUN_MODE")
|
|
ENABLE_WEB_DASHBOARD=$(ask_value "Enable web dashboard" "$DEFAULT_ENABLE_WEB_DASHBOARD")
|
|
DASHBOARD_PORT=$(ask_value "Dashboard port" "$DEFAULT_DASHBOARD_PORT")
|
|
JOURNEYFM_DATA_DIR=$(ask_value "Data volume path" "$DEFAULT_JOURNEYFM_DATA_DIR")
|
|
CHROME_BINARY=$(ask_value "Chrome binary path" "$DEFAULT_CHROME_BINARY")
|
|
CHROMEDRIVER_PATH=$(ask_value "Chromedriver path" "$DEFAULT_CHROMEDRIVER_PATH")
|
|
|
|
cat > "$DIR/.env" << EOF
|
|
PLEX_TOKEN=$PLEX_TOKEN
|
|
SERVER_IP=$SERVER_IP
|
|
PLAYLIST_NAME=$PLAYLIST_NAME
|
|
SELECTED_STATIONS=$SELECTED_STATIONS
|
|
AUTO_UPDATE=$AUTO_UPDATE
|
|
UPDATE_INTERVAL=$UPDATE_INTERVAL
|
|
UPDATE_UNIT=$UPDATE_UNIT
|
|
CONTAINER_RUN_MODE=$CONTAINER_RUN_MODE
|
|
ENABLE_WEB_DASHBOARD=$ENABLE_WEB_DASHBOARD
|
|
DASHBOARD_PORT=$DASHBOARD_PORT
|
|
JOURNEYFM_DATA_DIR=$JOURNEYFM_DATA_DIR
|
|
CHROME_BINARY=$CHROME_BINARY
|
|
CHROMEDRIVER_PATH=$CHROMEDRIVER_PATH
|
|
JOURNEYFM_CONTAINER=$DEFAULT_JOURNEYFM_CONTAINER
|
|
PYTHONUNBUFFERED=$DEFAULT_PYTHONUNBUFFERED
|
|
PYTHONDONTWRITEBYTECODE=$DEFAULT_PYTHONDONTWRITEBYTECODE
|
|
LANG=$DEFAULT_LANG
|
|
TERM=$DEFAULT_TERM
|
|
EOF
|
|
|
|
echo ".env file created at $DIR/.env"
|
|
|
|
# Ensure Docker compose exists
|
|
if ! command -v docker-compose > /dev/null 2>&1 && ! command -v docker > /dev/null 2>&1; then
|
|
echo "docker-compose/docker not found. install docker and docker-compose before running container mode." >&2
|
|
fi
|
|
|
|
# Check if Python 3 is installed
|
|
if ! command -v python3 > /dev/null 2>&1; then
|
|
echo "Python 3 not found. Installing Python 3..."
|
|
sudo apt update && sudo apt install -y python3 python3-pip python3-venv
|
|
fi
|
|
|
|
# Create virtual environment
|
|
echo "Creating virtual environment..."
|
|
python3 -m venv "$DIR/.venv"
|
|
|
|
# Activate virtual environment
|
|
source "$DIR/.venv/bin/activate"
|
|
|
|
# Install Python dependencies
|
|
echo "Installing Python dependencies..."
|
|
pip install -r "$DIR/requirements.txt"
|
|
|
|
# Install Chromium browser if not available
|
|
if ! command -v chromium-browser > /dev/null 2>&1 && ! command -v chromium > /dev/null 2>&1; then
|
|
echo "Installing Chromium browser..."
|
|
sudo apt update && sudo apt install -y chromium-browser
|
|
fi
|
|
|
|
# Create desktop entry
|
|
echo "Creating desktop entry..."
|
|
mkdir -p ~/.local/share/applications
|
|
|
|
cat > ~/.local/share/applications/journey-fm.desktop << EOF
|
|
[Desktop Entry]
|
|
Name=Journey FM Playlist
|
|
Exec=$DIR/journey_fm_app.sh
|
|
Icon=$DIR/icon.png
|
|
Type=Application
|
|
Categories=Utility;
|
|
EOF
|
|
|
|
chmod +x ~/.local/share/applications/journey-fm.desktop
|
|
|
|
# Update desktop database
|
|
echo "Updating desktop database..."
|
|
update-desktop-database ~/.local/share/applications || true
|
|
|
|
# Make scripts executable
|
|
chmod +x "$DIR/journey_fm_app.sh"
|
|
|
|
# Optionally start web dashboard and/or app
|
|
echo "Installation complete!"
|
|
echo "Run with Docker compose (server at http://localhost:$DASHBOARD_PORT):"
|
|
echo " docker compose up -d"
|
|
echo "To start GUI app: $DIR/journey_fm_app.sh"
|