[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75852":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":16,"starSnapshotCount":16,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},75852,"spooty","Raiper34\u002Fspooty","Raiper34","Self-hosted  spotify downloader",null,"https:\u002F\u002Fgithub.com\u002FRaiper34\u002Fspooty","TypeScript",2359,160,8,15,0,205,65.62,false,"main","2026-06-12 04:01:19","[![npm version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fraiper34\u002Fspooty)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fraiper34\u002Fspooty)\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fimage-size\u002Fraiper34\u002Fspooty)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fraiper34\u002Fspooty)\n![Docker Image Version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fv\u002Fraiper34\u002Fspooty)\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fstars\u002Fraiper34\u002Fspooty)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fraiper34\u002Fspooty)\n[![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fraiper34\u002Fspooty)](https:\u002F\u002Fgithub.com\u002FRaiper34\u002Fspooty)\n[![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fraiper34\u002Fspooty)](https:\u002F\u002Fgithub.com\u002FRaiper34\u002Fspooty)\n\n![spooty logo](assets\u002Flogo.svg)\n# Spooty - selfhosted Spotify downloader\nSpooty is a self-hosted Spotify downloader.\nIt allows download track\u002Fplaylist\u002Falbum from the Spotify url.\nIt can also subscribe to a playlist or author page and download new songs upon release.\nSpooty basically downloads nothing from Spotify, it only gets information from spotify and then finds relevant and downloadeds music on Youtube. \nThe project is based on NestJS and Angular.\n\n> [!IMPORTANT]\n> Please do not use this tool for piracy! Download only music you own rights! Use this tool only on your responsibility.\n\n### Content\n- [🚀 Installation](#-installation)\n  - [Spotify App Configuration](#spotify-app-configuration)\n  - [Docker](#docker)\n    - [Docker command](#docker-command)\n    - [Docker compose](#docker-compose)\n  - [Build from source](#build-from-source)\n    - [Process](#requirements)\n    - [Requirements](#process)\n  - [Environment variables](#environment-variables)\n  - [YouTube cookies](#youtube-cookies)\n- [🧩 Browser Extension](#-browser-extension)\n- [⚖️ License](#-license)\n\n## 🚀 Installation\nRecommended and the easiest way how to start to use of Spooty is using docker.\n\n### Spotify App Configuration\n\nTo fully use Spooty, you need to create an application in the Spotify Developer Dashboard:\n\n1. Go to [Spotify Developer Dashboard](https:\u002F\u002Fdeveloper.spotify.com\u002Fdashboard)\n2. Sign in with your Spotify account\n3. Create a new application\n4. Note your `Client ID` and `Client Secret`\n5. Configure the redirect URI to `http:\u002F\u002F127.0.0.1:3000\u002Fapi\u002Fcallback` (or the corresponding URL of your instance)\n\nThese credentials will be used by Spooty to access the Spotify API.\n\n### Docker\n\nJust run docker command or use docker compose configuration.\nFor detailed configuration, see available [environment variables](#environment-variables).\n\n#### Docker command\n```shell\ndocker run -d -p 3000:3000 \\\n  -v \u002Fpath\u002Fto\u002Fdownloads:\u002Fspooty\u002Fbackend\u002Fdownloads \\\n  -v \u002Fpath\u002Fto\u002Fcookies.txt:\u002Fspooty\u002Fconfig\u002Fcookies.txt \\\n  -e SPOTIFY_CLIENT_ID=your_client_id \\\n  -e SPOTIFY_CLIENT_SECRET=your_client_secret \\\n  raiper34\u002Fspooty:latest\n```\n\n#### Docker compose\n```yaml\nservices:\n  spooty:\n    image: raiper34\u002Fspooty:latest\n    container_name: spooty\n    restart: unless-stopped\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - \u002Fpath\u002Fto\u002Fdownloads:\u002Fspooty\u002Fbackend\u002Fdownloads\n      - \u002Fpath\u002Fto\u002Fcookies.txt:\u002Fspooty\u002Fconfig\u002Fcookies.txt\n    environment:\n      - SPOTIFY_CLIENT_ID=your_client_id\n      - SPOTIFY_CLIENT_SECRET=your_client_secret\n      # Configure other environment variables if needed\n```\n\n### Build from source\n\nSpooty can be also build from source files on your own.\n\n#### Requirements\n- Node v20.20.0 (it is recommended to use `nvm` node version manager to install proper version of node)\n- Redis in memory cache\n- Ffmpeg\n- Python3\n\n#### Process\n- install Node v20.20.0 using `nvm install` and use that node version `nvm use`\n- from project root install all dependencies using `npm install`\n- copy `.env.default` as `.env` in `src\u002Fbackend` folder and modify desired environment properties (see [environment variables](#environment-variables))\n- add your Spotify application credentials to the `.env` file:\n  ```\n  SPOTIFY_CLIENT_ID=your_client_id\n  SPOTIFY_CLIENT_SECRET=your_client_secret\n  ```\n- build source files `npm run build`\n    - built project will be stored in `dist` folder\n- start server `npm run start`\n\n### Environment variables\n\nSome behaviour and settings of Spooty can be configured using environment variables and `.env` file.\n\n Name                    | Default                                     | Description                                                                                                                                                               |\n-------------------------|---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n DB_PATH                 | `.\u002Fconfig\u002Fdb.sqlite` (relative to backend)  | Path where Spooty database will be stored                                                                                                                                 |\n FE_PATH                 | `..\u002Ffrontend\u002Fbrowser` (relative to backend) | Path to frontend part of application                                                                                                                                      |\n EXT_PATH                | `..\u002Fextension` (relative to backend)        | Path to browser extension part of application                                                                                                                             |\n DOWNLOADS_PATH          | `.\u002Fdownloads` (relative to backend)         | Path where downaloded files will be stored                                                                                                                                |\n FORMAT                  | `mp3`                                       | Format of downloaded files ('aac', 'flac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav', 'alac')                                                                                 |\n QUALITY                 | undefined                                   | Audio quality (0-9 VBR or specific bitrate) of downloaded files                                                                                                           |\n PORT                    | 3000                                        | Port of Spooty server                                                                                                                                                     |\n REDIS_PORT              | 6379                                        | Port of Redis server                                                                                                                                                      |\n REDIS_HOST              | localhost                                   | Host of Redis server                                                                                                                                                      |\n REDIS_RUN               | false                                       | Whenever Redis server should be started from backend (recommended for Docker environment)                                                                                 |\n SPOTIFY_CLIENT_ID       | your_client_id                              | Client ID of your Spotify application (required)                                                                                                                          |\n SPOTIFY_CLIENT_SECRET   | your_client_secret                          | Client Secret of your Spotify application (required)                                                                                                                      |\n YT_DOWNLOADS_PER_MINUTE | 3                                           | Set the maximum number of YouTube downloads started per minute                                                                                                            |\n YT_COOKIES              |                                             | Browser name to automatically extract YouTube cookies from (e.g. `chrome`, `firefox`). Only works when running Spooty natively (not in Docker). See [below](#yt_cookies---browser-based-cookies-non-docker). |\n YT_COOKIES_FILE         | `.\u002Fconfig\u002Fcookies.txt`                      | Path to a Netscape-format `cookies.txt` file. Recommended for Docker deployments. See [below](#yt_cookies_file---cookies-file-recommended-for-docker).                    |\n\n### YouTube cookies\n\nYouTube may block or throttle downloads without authentication cookies. Spooty supports two ways to provide them — use the one that fits your setup.\n\n#### `YT_COOKIES` — browser-based cookies (non-Docker)\n\nSet `YT_COOKIES` to the name of your browser and yt-dlp will automatically read cookies directly from it.\nSupported values: `chrome`, `firefox`, `edge`, `safari`, `brave`, `opera`, `chromium`.\n\n```\nYT_COOKIES=chrome\n```\n\n> [!NOTE]\n> This only works when Spooty runs on the same machine as your browser (i.e. not in Docker, where no browser is present).\n\n#### `YT_COOKIES_FILE` — cookies file (recommended for Docker)\n\nExport your YouTube cookies as a Netscape `cookies.txt` file and provide its path. This is the recommended approach for Docker deployments.\n\n**How to get your `cookies.txt` file:**\n1. Install a browser extension that exports cookies in Netscape format, e.g. [Get cookies.txt LOCALLY](https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fget-cookiestxt-locally\u002Fcclelndahbckbenkjhflpdbgdldlbecc) for Chrome or [cookies.txt](https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fcookies-txt\u002F) for Firefox.\n2. Go to https:\u002F\u002Fwww.youtube.com and log in.\n3. Use the extension to export cookies for `youtube.com` and save the file as `cookies.txt`.\n\n**Docker usage:**\n\nBind mount the `cookies.txt` file into the container and set `YT_COOKIES_FILE` to its path inside the container. See the [Environment variables](#environment-variables) section for details.\n\n> [!NOTE]\n> `YT_COOKIES` takes priority over `YT_COOKIES_FILE` if both are set.\n\n## 🧩 Browser Extension\n\nSpooty ships a browser extension that adds a download button directly on the Spotify website and lets you send URLs to your self-hosted Spooty instance from the popup.\n\nThe extension is available for download directly from your Spooty instance at the **Browser Extension** section on the home page.\n\n### Chrome \u002F Chromium\n\n> **Note:** The extension is unsigned and must be loaded as an unpacked extension (Developer mode required).\n\n1. Download `spooty-chrome.zip` from the Spooty web UI.\n2. Extract the ZIP to a folder.\n3. Open `chrome:\u002F\u002Fextensions` and enable **Developer mode** (top-right toggle).\n4. Click **Load unpacked** and select the extracted folder.\n\n### Firefox\n\n1. Download `spooty-firefox.xpi` from the Spooty web UI.\n2. Open `about:addons` (Add-ons and themes).\n3. Click the gear icon → **Install Add-on From File…** and select the downloaded `.xpi`.\n\n### Configuring the backend URL\n\nAfter installing, open the extension popup and set your Spooty instance URL (default: `http:\u002F\u002Flocalhost:3000`). This is stored in the extension's local storage.\n\n# ⚖️ License\n[MIT](https:\u002F\u002Fchoosealicense.com\u002Flicenses\u002Fmit\u002F)\n","Spooty 是一个自托管的 Spotify 下载工具，允许用户从 Spotify URL 下载单曲、播放列表或专辑。其核心功能包括通过 Spotify 获取音乐信息，并从 YouTube 下载对应的音频文件，同时支持订阅播放列表或艺人页面以自动下载新发布的歌曲。项目基于 NestJS 和 Angular 构建，推荐使用 Docker 进行部署，简化了安装和配置过程。适用于希望在本地存储个人拥有版权的音乐的用户，但需注意遵守相关法律法规，避免侵犯版权。",2,"2026-05-18 11:12:57","trending"]