Skip to content

Raiper34/spooty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

npm version npm version Docker Image 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.

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
  • Ffmpeg
  • Python3

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.

Name Default Description
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
FORMAT mp3 Format of downloaded files (currently fully supported only mp3 but you can try whatever you want from ffmpeg)
PORT 3000 Port of Spooty server
REDIS_PORT 6379 Port of Redis server
REDIS_HOST localhost Host of Redis server
RUN_REDIS false Whenever Redis server should be started from backend (recommended for Docker environment)
SPOTIFY_CLIENT_ID your_client_id Client ID of your Spotify application (required)
SPOTIFY_CLIENT_SECRET your_client_secret Client Secret of your Spotify application (required)
YT_DOWNLOADS_PER_MINUTE 3 Set the maximum number of YouTube downloads started per minute
YT_COOKIES Allows you to pass your YouTube cookies to bypass some download restrictions. See below for instructions.

How to get your YouTube cookies (using browser dev tools):

  1. Go to https://www.youtube.com and log in if needed.
  2. Open the browser developer tools (F12 or right click > Inspect).
  3. Go to the "Application" tab (in Chrome) or "Storage" (in Firefox).
  4. In the left menu, find "Cookies" and select https://www.youtube.com.
  5. Copy all the cookies (name=value) and join them with a semicolon and a space, like: VISITOR_INFO1_LIVE=xxxx; YSC=xxxx; SID=xxxx; ...
  6. Paste this string into the YT_COOKIES environment variable (in your .env or Docker config).

โš–๏ธ License

MIT

About

Self-hosted spotify downloader

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •