mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-10 07:58:39 -05:00
Release v1.0.0
Major update since basic Spotify playlist injection: Added web UI for admin dashboard with playlist management, track matching, and manual mapping controls. Lyrics system with prefetching, caching, and manual ID mapping. Manual track mapping for missing tracks with persistent storage. Memory leak fixes and performance improvements. Security hardening with admin endpoints on internal port. Scrobbling fixes and session cleanup. HiFi API integration with automatic failover. Playlist cache pre-building for instant loading. Three-color progress bars showing local/external/missing track counts.
This commit is contained in:
73
.env.example
73
.env.example
@@ -6,6 +6,10 @@ BACKEND_TYPE=Subsonic
|
||||
# Enable Redis caching for metadata and images (default: true)
|
||||
REDIS_ENABLED=true
|
||||
|
||||
# Redis data persistence directory (default: ./redis-data)
|
||||
# Redis will save snapshots and append-only logs here to persist cache across restarts
|
||||
REDIS_DATA_PATH=./redis-data
|
||||
|
||||
# ===== SUBSONIC/NAVIDROME CONFIGURATION =====
|
||||
# Server URL (required if using Subsonic backend)
|
||||
SUBSONIC_URL=http://localhost:4533
|
||||
@@ -122,13 +126,64 @@ SPOTIFY_IMPORT_SYNC_START_MINUTE=15
|
||||
# Example: If plugin runs at 4:15 PM and window is 2 hours, checks from 4:00 PM to 6:00 PM
|
||||
SPOTIFY_IMPORT_SYNC_WINDOW_HOURS=2
|
||||
|
||||
# Playlist IDs to inject (comma-separated)
|
||||
# Get IDs from Jellyfin playlist URLs: https://jellyfin.example.com/web/#/details?id=PLAYLIST_ID
|
||||
# Example: SPOTIFY_IMPORT_PLAYLIST_IDS=4383a46d8bcac3be2ef9385053ea18df,ba50e26c867ec9d57ab2f7bf24cfd6b0
|
||||
SPOTIFY_IMPORT_PLAYLIST_IDS=
|
||||
# Matching interval: How often to run track matching (in hours)
|
||||
# Spotify playlists like Discover Weekly update once per week, Release Radar updates weekly
|
||||
# Most playlists don't change frequently, so running once per day is reasonable
|
||||
# Set to 0 to only run once on startup (manual trigger via admin UI still works)
|
||||
# Default: 24 hours
|
||||
SPOTIFY_IMPORT_MATCHING_INTERVAL_HOURS=24
|
||||
|
||||
# Playlist names (comma-separated, must match Spotify Import plugin format)
|
||||
# IMPORTANT: Use the exact playlist names as they appear in Jellyfin
|
||||
# Must be in same order as SPOTIFY_IMPORT_PLAYLIST_IDS
|
||||
# Example: SPOTIFY_IMPORT_PLAYLIST_NAMES=Discover Weekly,Release Radar
|
||||
SPOTIFY_IMPORT_PLAYLIST_NAMES=
|
||||
# Playlists configuration (JSON ARRAY FORMAT - managed by web UI)
|
||||
# Format: [["PlaylistName","SpotifyPlaylistId","first|last"],...]
|
||||
# - PlaylistName: Name as it appears in Jellyfin
|
||||
# - SpotifyPlaylistId: Get from Spotify URL (e.g., 37i9dQZF1DXcBWIGoYBM5M)
|
||||
# Accepts: spotify:playlist:ID, full URL, or just the ID
|
||||
# - first|last: Where to position local tracks (first=local tracks first, last=external tracks first)
|
||||
#
|
||||
# Example:
|
||||
# SPOTIFY_IMPORT_PLAYLISTS=[["Discover Weekly","37i9dQZEVXcV6s7Dm7RXsU","first"],["Release Radar","37i9dQZEVXbng2vDHnfQlC","first"]]
|
||||
#
|
||||
# RECOMMENDED: Use the web UI (Link Playlists tab) to manage playlists instead of editing this manually
|
||||
SPOTIFY_IMPORT_PLAYLISTS=[]
|
||||
|
||||
# ===== SPOTIFY DIRECT API (RECOMMENDED - ENABLES TRACK ORDERING & LYRICS) =====
|
||||
# This is the preferred method for Spotify playlist integration.
|
||||
# Provides: Correct track ordering, ISRC-based exact matching, synchronized lyrics
|
||||
# Does NOT require the Jellyfin Spotify Import plugin (can work standalone)
|
||||
|
||||
# Enable direct Spotify API access (default: false)
|
||||
SPOTIFY_API_ENABLED=false
|
||||
|
||||
# Spotify Client ID from https://developer.spotify.com/dashboard
|
||||
# Create an app in the Spotify Developer Dashboard to get this
|
||||
SPOTIFY_API_CLIENT_ID=
|
||||
|
||||
# Spotify Client Secret (optional - only needed for certain OAuth flows)
|
||||
SPOTIFY_API_CLIENT_SECRET=
|
||||
|
||||
# Spotify session cookie (sp_dc) - REQUIRED for editorial playlists
|
||||
# Editorial playlists (Release Radar, Discover Weekly, etc.) require authentication
|
||||
# via session cookie because they're not accessible through the official API.
|
||||
#
|
||||
# To get your sp_dc cookie:
|
||||
# 1. Open https://open.spotify.com in your browser and log in
|
||||
# 2. Open DevTools (F12) → Application → Cookies → https://open.spotify.com
|
||||
# 3. Find the cookie named "sp_dc" and copy its value
|
||||
# 4. Note: This cookie expires periodically (typically every few months)
|
||||
SPOTIFY_API_SESSION_COOKIE=
|
||||
|
||||
# Date when the session cookie was set (ISO 8601 format)
|
||||
# Automatically set by the web UI when you update the cookie
|
||||
# Used to track cookie age and warn when approaching expiration (~1 year)
|
||||
SPOTIFY_API_SESSION_COOKIE_SET_DATE=
|
||||
|
||||
# Cache duration for playlist data in minutes (default: 60)
|
||||
# Release Radar updates weekly, Discover Weekly updates Mondays
|
||||
SPOTIFY_API_CACHE_DURATION_MINUTES=60
|
||||
|
||||
# Rate limit delay between API requests in milliseconds (default: 100)
|
||||
SPOTIFY_API_RATE_LIMIT_DELAY_MS=100
|
||||
|
||||
# Prefer ISRC matching over fuzzy title/artist matching (default: true)
|
||||
# ISRC provides exact track identification across different streaming services
|
||||
SPOTIFY_API_PREFER_ISRC_MATCHING=true
|
||||
|
||||
Reference in New Issue
Block a user