Usage
Download high quality (320kbps) songs from *****. Songs may have lower qualities if high quality is unavailable.
- Simple Usage
Run music-dl.exe as a normal application or from command prompt either as "music-dl" or as "music-dl query"
e.g. music-dl song-link
- Advanced Usage
music-dl query --arguments
music-dl song-link --dd "2000s Music"
music-dl song-link --redownload +c --pbcs = --pbrs -
How it works ?
- It takes query parameter as a song/playlist/album link or file containing html body of the song search page or artist page.
- It then fetches the info about the link from an API (there are three API, anyone can be used if an API is down).
- The response from API contains the metadata, url to actual media file, album cover and other metadata tags.
- The media file can be downloaded from media url and then saved to local filesystem which can be listened using any media player.
- The downloaded file is just media i.e. it doesn't contain any information about the title, album, artist, etc. and no embedded lyrics and album cover.
- The album cover is downloaded which is applied to downloaded media files later.
- Lyrics is also downloaded which is embedded into the media file.
- aria2 is used in this project to fetch API response and download songs/albums/lyrics by doing system call to aria2c.exe.
- When the media is downloaded, then its time to write the metadata into it.
- kid3-cli is used to write the metadata and embed the album cover and lyrics into downloaded plain media file.
- The filename is assigned as 'album' - 'title' by default.
- Any file naming format can specified in the config file or from command line arguments.
File Based Database
I have made music-dl in such a way that if one song is downloaded, then it should not be downoaded again by default.
All the info about downloaded songs will be saved to local file as pipe-separated-values which is used to remove duplicates.
Renamer
This tool can also be used to rename any local music files based on their metadata. More details in help file.
Info
The app is working but I have stopped it because the streaming platform may not be happy if someone downloads their content. So, all the API links, streaming service related links and some logic have been hidden from the source code. But the app will definitely work when they are placed again.
A lot more information is in the help file