{"repo":"madmax1301/tonus","free":true,"listed":false,"github":"https://github.com/madmax1301/tonus","clone":"git clone https://github.com/madmax1301/tonus.git","description":"Self-hosted music acquisition for Navidrome — multi-user from day one (2FA, encrypted secrets, PATs). Spotify/Deezer search, YouTube audio. SvelteKit + FastAPI + Go plugin. Docker-only, NAS-friendly.","language":"Python","stars":16,"topics":["deezer-downloader","docker","fastapi","homelab","music-downloader","music-server","nas","navidrome","opensubsonic","self-hosted"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"Self-hosted music acquisition for Navidrome. Multi-user from day one — 2FA, encrypted secrets, per-user access tokens. Spotify, Deezer or YouTube as source. --- What is Tonus Tonus is the acquisition half of a self-hosted music setup. You search, you queue, Tonus downloads and lands the file in your Navidrome library folder. Navidrome itself stays the player — Tonus does not stream, transcode, or expose music to clients. Think of it as the \"buy/grab\" workflow that sits next to your existing Navidrome instance. It's a single-tenant tool you self-host on a NAS (or any Docker host). All credentials and audio stay on your machine — no external service calls beyond the metadata APIs you opt into. Project status Alpha. The core acquisition pipeline (search → download → tag → file in Navidrome library) and the multi-user auth stack (JWT + Argon2id + TOTP + PATs + brute-force ban) are stable and used in production by the maintainer. Expect breaking changes — env-var renames, DB-schema migrations — until the first v1.0.0 tag. Stable enough to use daily: - Core acquisition: Deezer/Spotify search → YouTube/SoundCloud download → Navidrome scan trigger → file delivered, tagged, and visible in your library - Bulk import: drop a CSV (or a Spotify Extended Streaming History export) and Tonus matches every track against your existing Navidrome library first, queues only the missing ones, and reconciles playlist memberships into Subsonic playlists - Sane-result guarantee: candidates longer tha","default_branch":null,"files":null,"tree":[],"storefront":"/r/madmax1301","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/madmax1301/tonus/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}