Skip to content

Fluent UI app for downloading lossless FLACs, metadata editing, audio format conversions, music source matching, and more!

Notifications You must be signed in to change notification settings

DerekYang2/FluentDL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AboutInstallationBuildAuthentication

Sample Webp

About

A Fluent UI desktop application that helps you download lossless songs as FLACs, convert between audio formats, match songs between different online sources, edit song metadata, and more. This project was made with WinUI 3 and TemplateStudio. Under the hood, the app uses FFmpeg and APIs for Deezer, Qobuz, Spotify, and Youtube.

FluentDL is organized into three sections: Search, Local Explorer, and Queue.

Search
  • Lookup songs from any of the four online sources
  • Search using natural language or strict search by title/artist/album
  • Parse all tracks from an online link, with track/album/playlist links supported
  • Open songs in preview sidebar that can view large cover art, preview audio, show full metadata

Search Webp

Local Explorer
  • Upload files from your computer or scan all audio files in a folder
  • View file metadata and technical audio specs in-depth
  • Edit file metadata live, including option to change cover art!
  • Convert between flac, mp3, aac, alac, vorbis, opus with control over bitrate

Local Webp

Queue
  • Add files from Search or Local Explorer into the queue
  • Run custom terminal tools on tracks (with wildcards)
  • Match between any of the online sources (e.g., convert Spotify and YouTube to Deezer equivalents)
  • Download tracks from Deezer, Qobuz, or Youtube with maximum quality
  • Download entire queue using Convert: select Local as output

Queue Webp

Note

Tip: change the number of threads in settings for significantly faster conversions, matching, and downloading.

Installation

This project is deployed using MSIX, which installs the application on Windows. To install this application, download the first zip from Releases.

Option 1

The application may be installed directly using a powershell script located in the zip folder. In the root folder inside of the zip, you should see an Install.ps1 file and other files such as FluentDL_{VERSION}_x64_MSIX.msix.

Right click on Install.ps1 and press Run with PowerShell.

If you have already installed FluentDL before, you can directly double click to run FluentDL_{VERSION}_x64_MSIX.msix. The release will note when this does not work (the occasion that the certificate is updated/changed).

Option 2

If that option is not available, open Powershell or CMD into the root directory and run the command:

powershell.exe -executionpolicy unrestricted .\Install.ps1

The application is now installed, and you should be able to find "FluentDL" with Search or in your Apps list.

What does the Powershell script do?

Ideally, you would only need to run FluentDL_{VERSION}_x64_MSIX.msix, which opens the official Microsoft Store installer interface. However, the certificate is self-signed because ones from certificate authorities can cost hundreds of dollars per year. The powershell script trusts the self-signed certificate on your machine and then runs the MSIX. The manual way of trusting a certificate is more work. This is also why if you have already ran the script (trusted the certificate), you can directly run the MSIX in the future.

A future solution could be deploying to the Microsoft Store directly for a smaller, one-time free.

Build

Your machine should have the ability to develop WinUI 3 applications. The simplest setup method is using the Visual Studio Installer and selecting Windows application development.

Then, open the Solution file .\FluentDL\FluentDL.sln using Visual Studio. It should prompt you to install the correct .NET SDK. If not, install the latest .NET 8 SDK.

An experimental package must be installed seperately. The package can be found here. Installation instructions for these packages can be found here under the Visual Studio tab.

In order to deploy the application, follow Project > Publish > Create App Packages and sign it with a certificate.

The pre-built FFmpeg executable is found at ./FluentDL/Assets/ffmpeg/bin and contains many additional codecs, such as libopus and libvorbis.

You may use your own FFmpeg binaries, but note that libopus is required for Youtube's highest quality source.

Authentication

The authentication required depends on the sources and features you use.

Searching and Converting

Searches/conversions for Deezer, Qobuz, and Youtube do not require authentication.

If you are logged into the Spotify web player, you will not need to authenticate. Authentication tokens are automatically grabbed from cookies.

However, if this method fails for whatever reason, use the more reliable Spotify authentication method described in the authentication wiki.

Downloading

Authentication requirements for downloading varies for the sources. The type of account (free vs subscription) may also affect the audio quality available. You do not have re-enter credentials each time because they are stored locally. They can be left alone for months or even longer, but may eventually expire or invalidate due to occasional web-player changes.

Service Downloads
Youtube No Authentication Required (128 kbps OPUS, similar to 256kbps MP3)
Deezer Free Account (128 kbps MP3), Premium Account (320 kbps MP3 and 16bit/44.1kHZ FLAC)
Qobuz Free Account (30 second preview), Premium Account (up to 24bit/192khz FLAC)
Spotify Not Available
Click to learn more about file sound quality

You cannot determine the quality of a file by checking its bitrate. Files can be transcoded (converted), meaning a FLAC or high-bitrate file may have originated from a low-quality source. Here is a guide on using Spek, a spectrogram tool, to verify audio file quality.

Additional Notes:

  • As verified through spectrogram, the highest quality YouTube sources use the very efficient OPUS codec. The issue is OPUS containers, such as .ogg or .webm, have poor metadata support and compatibility. FluentDL transcodes them into a FLAC in order to maintain original quality and support metadata. However, they are NOT actually lossless and is an example of transcoding.
  • There may not be a significant difference between 128 kbps and higher depending on your audio hardware and ear. For example, you may be content with music on Spotify Web or YouTube without subscriptions, which are both low-bitrate. ABX tests are a good way to test your limits!
  • Downloading directly from Spotify is not supported. Most tools out there download low bitrate MP3s. However, there are a few Python tools that get the true sources (320 kbps Vorbis, 256 kbps AAC). Unfortunately, I could not find .NET equivalents. For FluentDL, use the convert tool to get equivalent Deezer/Qobuz/YouTube tracks, then set the output to Local (download).

Retrieving Tokens

Qobuz email and password is self explanatory. Some authentication methods, such as Deezer ARL, Qobuz id/tokens alternative, or Spotify developer app tokens, are not obvious.

However, tokens are not difficult to obtain: see the authentication wiki for a detailed guide.