Skip to content

Fluent UI metadata searcher and editor, command line runner, music downloader

License

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

FluentDL

AboutSetupInstallation and RunningManual InstallationAuthentication

Sample Webp

About

A Fluent UI desktop application that helps you manage your local music files, perform audio format conversions, download songs, match songs between different online sources, and more. This project was made with WinUI 3 and TemplateStudio. Under the hood, the app uses FFmpeg and APIs from 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 any of these formats: flac, mp3, aac, alac, vorbis, opus

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 online sources

Queue Webp

Setup

In order to run these project in Visual Studio, you must have WinUI 3 setup (Template Studio is not required).

WinUI 3 can be automatically configured using the Visual Studio Installer or manual installation. See the official documentation for full details.

All dependencies should be automatically handled by Visual Studio and can be found on NuGet. There is one package MarqueeText that has to be installed manually.

A pre-built FFmpeg executable can be found in ./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 proper Youtube downloading.

Installation and Running

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

Easy Installation

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. Open Powershell or CMD into this 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.

Running powershell scripts must be enabled by the user, but -executionpolicy unrestricted overrides these rules just for the single command.

Manual Installation

Running the FluentDL_{VERSION}_x64_MSIX.msix file will open the Microsoft Store installer prompt that handles the installation and all dependencies (including the FFmpeg executable). This installation process requires an extra step because the certificate is currently self-signed. It must be trusted by the user before running the MSIX installer, otherwise the install button is greyed-out.

In order to trust the certificate, click and open the FluentDL_Certificate.cer certificate file in the folder.

You will see a security warning prompt ("Do you want to open this file?") and press open.

Next, the certificate pop-up will explain how to add the certificate to "Trusted Root Certification Authorities". In order to this, follow these steps:

  • Press Install Certificate..., which should open "Certificate Import Wizard"
  • Choose Local Machine then select Next
  • Choose Place all certificates in the following store then press Browse..., which should open a new dialog
  • In the new "Select Certificate Store" dialog, select the second option Trusted Root Certification Authorities and press OK
  • Select Next and then Finish. You should see a dialog that says: The import was successful.

After adding the certificate to this storage, FluentDL_Certificate.cer should be trusted and you may now run FluentDL_{VERSION}_x64_MSIX.msix.

Authentication

Before using the application, head over to the settings page through the sidebar.

For the sources Deezer, Qobuz, and Youtube, no authentication is required for searches (each have public APIs).

Spotify will require API tokens (a client ID and client secret) which can be entered in the settings page. For more details on obtaining these tokens, visit the official documentation.

Deezer and Qobuz are authenticated through ARLs and Tokens respectively. Support for username/email and password logins for Qobuz may be supported in the future. You do not have to login each time, but may need to occasionally re-enter new tokens after expiry or web-player changes.

Retrieving Tokens

In order to obtain your Deezer ARL, log into https://www.deezer.com/. Then open Developer Tools, and head to the Application tab. In the sidebar, open the dropdown list for Cookies and there should be an subitem https://www.deezer.com/. Click on the subitem and to find the the arl value, which should be 192 characters long. Note that you should open the dropdown for the Cookies section, not click on it.

Similarly, to obtain a Qobuz id and token, log into https://play.qobuz.com/ and open Developer Tools. Head over the Application tab, open the dropdown list for Local Storage and click on the subitem https://play.qobuz.com. You should then click on the localuser JSON object in the viewing window, where you can find the fields id (7 digits) and token (86 characters).