SomeDL - Song+Metadata Downloader
SomeDL is an easy-to-use command-line tool for downloading music with accurate metadata. Simple installation and no login or API tokens required! Now also with a feature-rich WebUI. Free and open source forever, source code hosted on GitHub.
Command line interface (CLI):
WebUI:
Tip
If you have any problems, feature requests, suggestions of improvements of any kind or even general questions, do not hesitate to open an issue or start an discussion here GitHub. I am open to add functionality based on individual usecases. See How can I give feedback or make feature requests?
Disclaimer
This project - although being fully functional - is primarily a way for me to learn the handling of APIs in python. This program is for educational purposes. SomeDL is developed on Linux and tested on Linux & Windows. This project is human-made, no code from generative AI is used.
The audio is downloaded using yt-dlp. SomeDL accepts text queries, YouTube URLs and YouTube playlist URLs. Metadata is fetched from YouTube, MusicBrainz, Genius and Deezer. Setlist data is fetched from setlist.fm. No API tokens required for any of these services, it works out of the box.
Contents:
- Installation
- Usage
- General usage
- Configuring SomeDL
- How To
- How to get the most accurate metadata?
- How can I download an entire album with just a search query?
- How can I download all songs from an artist?
- How can I change configurations?
- How do I download age-restricted songs?
- How can I exclude the cover art or change the cover art resolution?
- How can I slow the downloads down to prevent YouTube IP blocking?
- How can I download only a part of a playlist/album?
- How do I use sync files?
- How can I avoid redownloading files when removing them from the download folder?
- How can I change the output template for already downloaded files?
- How can I add metadata to already downloaded files?
- How can I update only specific metadata for my already downloaded songs?
- FAQ
- How can I give feedback or make feature requests?
- Why should I use SomeDL over yt-dlp?
- Why is the wrong version of the song downloaded?
- Why does downloading pause at “Fetching lyrics from lrclib” for so long?
- Why is the wrong genre / no genre set?
- What is the “Download Report …. .html” file?
- How long does a song download take?
- What does this error message / warning mean?
- YT-DLP specific warnings:
- Features overview
- Code Documentation