Sign inSign up

dudule100/spooty

By dudule100

Updated about 1 year ago

Self-hosted spotify downloader

Image
1

509

dudule100/spooty repository overview

npm version npm version npm version GitHub License GitHub Repo stars

spooty logo

Spooty - selfhosted Spotify downloader

Spooty is a self-hosted Spotify downloader. It allows download track/playlist/album from the Spotify url. It can also subscribe to a playlist or author page and download new songs upon release. Spooty basically downloads nothing from Spotify, it only gets information from spotify and then finds relevant and downloadeds music on Youtube. The project is based on NestJS and Angular.

Important

Please do not use this tool for piracy! Download only music you own rights! Use this tool only on your responsibility.

demo

Content

🚀 Installation

Recommended and the easiest way how to start to use of Spooty is using docker.

Spotify App Configuration

To fully use Spooty, you need to create an application in the Spotify Developer Dashboard:

  1. Go to Spotify Developer Dashboard
  2. Sign in with your Spotify account
  3. Create a new application
  4. Note your Client ID and Client Secret
  5. Configure the redirect URI to http://localhost:3000/api/callback (or the corresponding URL of your instance)

These credentials will be used by Spooty to access the Spotify API.

Docker

Just run docker command or use docker compose configuration. For detailed configuration, see available environment variables.

Docker command
docker run -d -p 3000:3000 \
  -v /path/to/downloads:/spooty/backend/downloads \
  -e SPOTIFY_CLIENT_ID=your_client_id \
  -e SPOTIFY_CLIENT_SECRET=your_client_secret \
  raiper34/spooty:latest
Docker compose
services:
  spooty:
    image: raiper34/spooty:latest
    container_name: spooty
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - /path/to/downloads:/spooty/backend/downloads
    environment:
      - SPOTIFY_CLIENT_ID=your_client_id
      - SPOTIFY_CLIENT_SECRET=your_client_secret
      # Configure other environment variables if needed
Build from source

Spooty can be also build from source files on your own.

Requirements
  • Node v18.19.1 (it is recommended to use nvm node version manager to install proper version of node)
  • Redis in memory cache
Process
  • install Node v18.19.1 using nvm install and use that node version nvm use
  • from project root install all dependencies using npm install
  • copy .env.default as .env in src/backend folder and modify desired environment properties (see environment variables)
  • add your Spotify application credentials to the .env file:
    SPOTIFY_CLIENT_ID=your_client_id
    SPOTIFY_CLIENT_SECRET=your_client_secret
    
  • build source files npm run build
    • built project will be stored in dist folder
  • start server npm run start
Environment variables

Some behaviour and settings of Spooty can be configured using environment variables and .env file.

NameDefaultDescription
DB_PATH./config/db.sqlite (relative to backend)Path where Spooty database will be stored
FE_PATH../frontend/browser (relative to backend)Path to frontend part of application
DOWNLOADS_PATH./downloads (relative to backend)Path where downaloded files will be stored
FORMATmp3Format of downloaded files (currently fully supported only mp3 but you can try whatever you want from ffmpeg)
PORT3000Port of Spooty server
REDIS_PORT6379Port of Redis server
REDIS_HOSTlocalhostHost of Redis server
RUN_REDISfalseWhenever Redis server should be started from backend (recommended for Docker environment)
SPOTIFY_CLIENT_IDyour_client_idClient ID of your Spotify application (required)
SPOTIFY_CLIENT_SECRETyour_client_secretClient Secret of your Spotify application (required)

⚖️ License

MIT

Tag summary

Content type

Image

Digest

sha256:78749d7e9

Size

187.1 MB

Last updated

about 1 year ago

docker pull dudule100/spooty