github spotizerr-dev/spotizerr 2.0.0

latest releases: 3.3.0, 3.2.1, 3.2.0...
3 months ago

Hey guys, I've been cooking 2.0 during my absence and I think you are going to like it.

This version introduces major architectural changes including the implementation of Watchlist and History features, and a migration of frontend code to TypeScript (fucking finally).


New Features

  • Watchlist:
    • Monitor Spotify Playlists and Artists for new releases/tracks.
    • Automatically queue downloads for new content based on configuration.
    • New UI page (/watchlist) to view and manage watched items.
    • API endpoints (/api/playlist/watch, /api/artist/watch) to add, remove, list, and trigger checks for watched items.
    • Configurable watch settings (enable/disable, poll interval, artist album groups).
  • Download History:
    • Persistent storage of completed, errored, and cancelled downloads.
    • New UI page (/history) to view past download activity.
    • API endpoint (/api/history) with pagination, sorting, and filtering.
  • Duplicate Download Prevention:
    • New tasks for items already in progress or in the queue are now detected.
    • For manual requests, this creates an error task indicating the duplicate.
    • For watchlist tasks, duplicate active downloads are automatically skipped.
  • Credential Validation:
    • Credential data (Spotify credentials.json / Deezer arl) is now validated when added or edited, including basic connection retry logic.

Improvements & Changes

  • API Endpoint Structure: Download endpoints now use item IDs in the URL path (e.g., /api/album/<album_id>) instead of relying solely on a ?url= query parameter. Metadata is fetched internally after receiving the ID.
  • Configuration Management:
    • Configuration files and credentials are now stored under a new ./data directory (e.g., ./data/config, ./data/creds).
    • New config options added for Watchlist.
  • Frontend Technology Stack:
    • I knew it had to happen someday, so what better time than now? Ported the frontend to Typescript.
    • Introduction of new UI pages for Watchlist and History.
  • Backend Rework:
    • Refactored download functions (routes.utils.album.py, etc.) to work with the new task management system.
    • Celery worker logging is now captured and directed to the main application logs.
    • Added periodic cleanup task to manage Redis data size.
  • Logging:
    • Application logging setup improved to prevent duplicate handlers.
    • Task-specific log files are now generated under ./logs/tasks/.

Installation & Deployment Notes

  • New Directories: You must create the following directories before launching the containers: data/creds, data/config, data/watch, data/history, downloads, logs/tasks, .cache.
  • Volume Mapping: Update your docker-compose.yml volumes to reflect the new directory structure, particularly mapping ./data to /app/data.
  • Dockerfile: The Docker build process now requires nodejs and npm to compile TypeScript. These are automatically installed by the updated Dockerfile.
  • Configuration File Location: Your main.json configuration file should now be located at ./data/config/main.json.

Here, get some screenshots my friend:

image
image

Don't miss a new spotizerr release

NewReleases is sending notifications on new releases.