About
The .NET rewrite
In September 2024, version 2.0.0 was released as a full rewrite in .NET. The previous implementation relied more heavily on spotDL behavior, but a long series of 429 rate limit errors from the Spotify API made it difficult to keep reliable downloads.
After trying the recommended mitigations described in the spotDL issue tracker, the decision was made to build a dedicated scheduler and tracking layer in .NET, while still using spotDL for the actual download and tagging.
The result is a container that focuses on:
- predictable scheduling
- flexible tracking rules
- better control over the download workflow
The choice of .NET was mostly pragmatic: it matches the maintainer's day-to-day tooling and makes iteration faster.
Related projects
This project works especially well together with volume-normalizer, another Docker-based tool that I built to normalize the volume of your music library using ReplayGain.
While spotify-downloader handles fetching and organizing your music, volume-normalizer takes care of keeping your library consistently balanced in terms of loudness, making both tools a good match for a complete self-hosted music pipeline.
Credits
Special thanks to the projects that make this possible:
- spotDL for the core download engine
- SpotifyAPI-NET for the Spotify API client
- TagLib# for audio metadata access
- YamlDotNet for YAML parsing
- EasyCronJob for cron scheduling in .NET
- Picture of a hand holding headsets from the banner by Sound On