Releases: DJDoubleD/QobuzDownloaderX-MOD
Version 1.2.7.0
What's Changed
New Features / improvements
-
Add settings screen to provide custom AppId and AppSecret values (resolves #107)
Qobuz recently updated their Web Player to version 7.2.0-b082e and this version now uses a new AppId (app_id) and corresponding secret.
Together with this change, Qobuz implemented a change so that logging into an app with a given AppId, generates a User Auth Token that only works in combination with that specific App's values.
To accommodate this change, a new Settings screen was added where the user can optionally enter the AppId and AppSecret, in case they want to use a User Auth Token not generated by the most current Web Player (e.g. Tokens from the previous Web Player).
For User Auth Tokens obtained via the method explained in the Wiki in combination with the latest Qobuz Web Player, these 2 new settings fields can be left empty so that QobuzDownloaderX-MOD will automatically retrieve those values from the current Web Player, as before.Access new settings screen
Before logging in, click the gear icon at the top right of the login screen to open the settings screen
In the settings screen, enter the App Id and App Secret of the app compatible with your User Auth Token, press the save button and close the settings screen ( X icon top right)
Clear the App Id and App Secret fields (you can use the X buttons next to each field) and save the settings screen to return to letting the application fetch the current web player's values.
Version 1.2.6.0
What's Changed
Bugfix release:
-
Fix crash when logging in with a free/expired account
Finally figured out that there was a null pointer error when logging in with a free/expired account, causing theObject reference not set to an instance of an object
crash, so made a quick bugfix that should solve #87 & #98 (duplicate) -
Some minor housekeeping
Updated target .NET framework to v4.8.1, updates some dependencies & fixed some minor lint warnings
Version 1.2.5.0
What's Changed
New Features / improvements
-
Display full Release Date in search results (resolves #30)
The full release date is now displayed in the search results instead of only the year.
Opted for the format yyyy-mm-dd as it seems most obvious internationally. -
Added Long Paths support (resolves #56)
When downloading tracks for which the total path length exceeds the Windows maximum of 260 characters, the following error can occur:
System.IO.DirectoryNotFoundException: Could not find a part of the path <path to file>
To prevent this error, the application now supports Long Paths when Enabled by the user in Windows 10 (Version 1607 and Later).
In order to enable Long Paths, you can either run the .reg file in theEnableLongPaths.zip
file attached to this release or execute the following command in a powershell window (run as administrator!):New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" ` -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
As an alternative workaround, it is still possible to limit the length of paths and filenames by reducing the value of the
Max File Name Length
setting. -
Added Explicit indication to search results (resolves #55)
Search results now show an "E" label for Explicit Tracks & Albums:
Bug Fixes
-
Fix missing dialog buttons for long release notes (resolves #50 )
When the release notes were to long, the update dialog could grow so large that the buttons were unreachable.
This has been fixed by using a FlexibleMessageBox, which will adapt to the screen size and introduce a scrollbar when needed.
Version 1.2.4.0
What's Changed
New Features / improvements
-
Added optional URL metadata Tag (resolves #41)
Added option to write the album's store URL (as provided by the Qobuz API ! ) to the audiofile's metadata.
This controls the tagging as follows:
For FLAC:
- Writes the Album's store URL to the custom URL (it's not listed anywhere as an official Vorbis Comment field but several players and tools I've tested seem to recognize it.
For MP3:
- Writes the Album's store URL to the WCOM ID3 v2.4 Frame.
-
Separate Release Date & Year + use different tags (resolves #42)
Added a separate checkbox for the
Release Year
tag so that now theRelease Year
andRelease Date
are completely separate.This controls the tagging as follows:
For FLAC:
- Release Year: YYYY written to the Vorbis Comment "YEAR" field.
- Release Date: YYYY-MM-DD written to the Vorbis Comment "DATE" field.
(replaces the buggy ORIGINALRELEASETIME from previous version)
For MP3:
- Release Year: YYYY written to the ID3 v2.4 "TDRC" (recording date) Frame.
- Release Date: YYYY-MM-DD written to the ID3 v2.4 "TDRL" (release date) Frame.
This seems to stick as close as possible to both the Vorbis Comment and ID3 v2.4 specs and seems to work well with Plex and other players.
-
Write Publisher also to LABEL field for FLAC files (resolves #43)
In addition to the Vorbis Comment standard ORGANIZATION field, the track's publisher will also be written to the custom LABEL tag for FLAC files. This seems to provide some extra compatibility with some players.
-
Increase file download buffer
Increased the download write buffer from 8KB to 32KB as this seems to yield some download speed increase. Mileage may vary...
Bugfixes
- Add "Performer" to Main Artist mapping (fixed #46)
- Add fallback to single Album Artist when API doesn't return Album.Artists records (fixed #45)
- Add fallback to single Track Artist when API doesn't return known Main Artist role in Track.Performers
- Add fallback to single Composer when API doesn't return known Composer role in Track.Performers
Version 1.2.3.0
What's Changed
Bugfix release:
- Correctly handle duplicate performers in the performers list
Merge duplicate performers (and their roles) in the performers list provided by Qobuz's API instead of crashing (fixes #40)
Version 1.2.2.0
What's Changed
New Features / improvements
-
Made application settings portable (resolves #17 )
The application settings will no longer be written to the %APPDATA%
folder but in the <Application Folder>/settings/settings.json
file.
This makes the application more portable.
-
Changed Max. File/Folder name length
To allow better use of the changes to the tagging options below, the maximum length that can be set for folder & filenames has been increased to 150 with 100 as default (instead of 36).
Your mileage may vary on this...
-
Performers tagging overhaul (resolves #39)
New settings
- Producer checkbox: write the producer(s) tag(s) to the audiofile (only for FLAC downloads).
- Label checkbox: write the record label to the Publisher tag to the audiofile.
The tag follows the ID3 v2.4 standard for Publisher for mp3's.
Since the Vorbis Comment standard uses the "ORGANIZATION" tag for the Publisher, this tag is used in FLAC files. - Involved People checkbox: write the InvolvedPeople tag to the audiofile.
The Qobuz API gives a string containing all "performers" and their roles for a Track in a "not ideally structured" way.
In order to give the user all available info, the entire unaltered string is written to the InvolvedPeople tag.
This field is recognized in the ID3 v2.4 standard standard but not in the Vorbis Comment standard. Nevertheless the same tag is written to both MP3 and FLAC files. - PrimaryListSeparator Textfield: A string of max 3 characters which will be used to separate all but the second to last and last item of a list. Default value set to ", ".
- ListEndSeparator Textfield: A string of max 3 characters which will be used to separate the second to last and last item of a list. Default value set to "& ".
- Merge Performers checkbox: Merge the tags that consist of (possible) lists into 1 string. (unchecked by default)
Functionality is explained in a tooltip. Detailed info of impacted tags below:
AlbumArtist
Instead of using the Album.Artist.Name returned by the Qobuz API by default, now all Album.Artists returned by the Qobuz API are gathered and a list of "Album.Artist.Name"s is used instead.
First the Artists with role "main-artist" (if any) are collected and then the Artists with role "featured-artist" (if any) are added to the list.
Only if the resulting AlbumArtists list is empty, the singular Album.Artist.Name is used.
-
Merge Performers unchecked
The gathered list of AlbumArtists is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple artists, multiple ALBUMARTIST tags will be written to the audio file.
The Album.Artist.Name is still used in folder names (like before). -
Merge Performers checked
The gathered list of AlbumArtists is merged into a singular delimited string and written to the audio file in 1 ALBUMARTIST tag. This merged string is also used in folder names.
In order to create the merged string of artists, first all of the Main Artists are concatenated using the PrimaryListSeparator string as delimiter. This is done for all artists except for the last 2. These 2 are concatenated using the ListEndSeparator value as delimiter.
The same process is used to merge the Featured Artists if any and more then 1 are present.
Finally the merged string of Main Artists is concatenated with the merged Featured Artists list (if any), using the " Feat. " string as delimiter.
TrackArtist (Artist)
Instead of using the Track.Performer.Name returned by the Qobuz API by default, now the complete Track.Performers string, returned by the Qobuz API, is parsed (best effort) into a list of Performers and their respective roles.
From this resulting list, first the Performers with role "main-artist" (if any) are collected and then the Performers with role "featured-artist" (if any) are added to the list.
Only if the resulting Artists list is empty, the singular Track.Performer.Name is used.
-
Merge Performers unchecked
The gathered list of Artists is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple Performers, multiple ARTIST tags will be written to the audio file.
The Track.Performer.Name is still used in file names (like before when downloading single tracks). -
Merge Performers checked
The parsed list of Artists is merged into a singular delimited string and written to the audio file in 1 ARTIST tag. This merged string is also used in file names (when downloading single tracks).
The same merger process as described for the AlbumArtist is used to merge the Track's Main Artists and Featured Artists.
Composer
From the parsed Track.Performers string, the Performers with the Composer role are collected into a list of Composers.
Only if the resulting Composers list is empty, the singular Track.Composer.Name as returned by the Qobuz API, is used.
-
Merge Performers unchecked
The gathered list of Composers is written to the audio file using the respective ID3 v2.4 (MP3) or Vorbis Comment (FLAC) specifications. This means that if there are multiple Composers, multiple COMPOSER tags will be written to the audio file. -
Merge Performers checked
The parsed list of Composers is merged into a singular delimited string and written to the audio file in 1 COMPOSER tag.
The Composers are merged using the PrimaryListSeparator & ListEndSeparator, as described ealier.
Producer
From the parsed Track.Performers string, the Performers with the Producer role are collected into a list of Producers.
The Producers only seem to be returned in the Track.Performers string by the Qobuz API, so there is no fallback field.
The ID3 v2.4 (MP3) spec doesn't seem to provide a tag for Producer, so it's only written to FLAC files.
-
Merge Performers unchecked
The gathered list of Producers is written to the audio file in analogy with the previous described tags. This means that if there are multiple Producers, multiple PRODUCER tags will be written to the audio file. -
Merge Performers checked
The parsed list of Producers is merged into a singular delimited string and written to the audio file in 1 PRODUCER tag.
The Producers are merged using the PrimaryListSeparator & ListEndSeparator, as described ealier.
Example album Magic Island Sampler 002, 1st Track (01 - Mediterraneo (Club Mix)):
-
Results with Merge Performers UNCHECKED
Download Folder =<DownloadPath>\Der Mystik\Magic Island Sampler 002\<Quality>\
ALBUMAARTIST tag =Der Mystik\\Alex Reliic\\Perplexity\\Renov8\\EuphoriK
(= 5 separate tags)
ARTIST tag=Alex Reliic\\Perplexity\\Der Mystik & Alex Reliic
(= 3 separate tags) -
Results with Merge Performers CHECKED (PrimaryListSeparator & ListEndSeparator left default ", " and " & ")
Download Folder =<DownloadPath>\Der Mystik, Alex Reliic, Perplexity, Renov8 & EuphoriK\Magic Island Sampler 002\<Quality>\
ALBUMAARTIST tag =Der Mystik, Alex Reliic, Perplexity, Renov8 & EuphoriK
(= 1 tag)
ARTIST tag=Der Mystik, Alex Reliic & Perplexity
(= 1 tag)
Full Changelog: 1.2.1.0...1.2.2.0
Version 1.2.1.0
What's Changed
Bugfix release:
- Use safe filename when creating playlist m3u8 file
Remove special characters from the playlist name before using in in creating the playlist m3u8 file (fixes #35)
Version 1.2.0.0
What's Changed
New Features
-
Get max available items for each collection download (Resolves #32)
There are multiple (nested) collections of items that can be downloaded.
An album and a playlist have a collection of tracks and an artist and label have a collection of albums.
In previous versions, for each type of collection, only 500 items were fetched and downloaded.
Now for each type of collection, the maximum number of items that can be requested from the Qobuz API is retrieved for download.
This means:- Get max number of tracks per album allowed by API
- Get max number of tracks per playlist allowed by API
- Get max number of albums per artist allowed by API
- Get max number of albums per label allowed by API
- Get max number of tracks from favorites allowed by API
- Get max number of albums from favorites allowed by API
- Get max number of artists from favorites allowed by API
At the moment of this release, the maxima seem to be capped server-side at 10000 items.
-
After downloading a playlist, a .m3u8 file is created (Resolves #33)
When a playlist is downloaded, a playlist file
<PlaylistName>.m3u8
is created in the playlist root folder. This playlist file allows playback of the tracks in their original order.
A.m3u8
file is used because the UTF-8 encoding seems to offer maximum compatibility.
Bugfix / Improvement
-
Support 2 types of tracklist delivery by API for playlists
Sigh... Technical API stuff, but will add it here for reference.
Turns out the Qobuz API can return 2 different object types for the Playlist track_ids field:- track_ids can be a list of numbers in JSON (most common)
e.g.:track_ids":[19512577, 36681027]
Example playlist: https://play.qobuz.com/playlist/5887115 - track_ids can also be a list of string:number combination in JSON
e.g.:track_ids":{"0":63353139,"1":53197054,"2":53207301}
Example playlist: https://play.qobuz.com/playlist/14888891
This has now been solved in the latest release of QobuzApiSharp and both types of playlists are correctly parsed and downloaded.
- track_ids can be a list of numbers in JSON (most common)
Version 1.1.0.0
What's Changed
New Features
-
Added ability to stop download task (Resolves #28)
When a download task is started, theDownload
button will turn into a redStop Download
button.
Pressing theStop Download
button will stop the download job.
If a track is in the middle of being downloaded when the button is pressed, the job will stop right after this last track download has completed. -
Display live download speed
A new label has been added to the bottom right of the main screen, which displays the live download speed in MB/s (MegaBytes per second).
When an item (track, cover image, digital booklet, ...) is being downloaded, the current download speed will be displayed.
When no download is active (or in between downloads), the label will displayIdle
. -
Added support for Artist and Label store links
2 new link types from the Qobuz webstore are now supported:- Store Artist links in format
https://www.qobuz.com/<CountryCode>/interpreter/<slug>/<ArtistId>
e.g. :https://www.qobuz.com/us-en/interpreter/david-guetta/35894
- Store Label links in format
https://www.qobuz.com/<CountryCode>/label/<slug>/download-streaming-albums/<LabelId>
e.g. :https://www.qobuz.com/us-en/label/parlophone-uk/download-streaming-albums/49020
Reminder: Check the Wiki for all supported link types.
- Store Artist links in format
Improvements
- Lots of boring backend rework to separate the download, logging & tagging logic from the UI.
Removed the legacy Background Workers in favor of async Tasks.
This will hopefully help in adding new features/improvements in the future while not introducing new bugs...
Bugfixes
- Updated QobuzApiSharp to 0.0.3.0 to fix Json parse error
Added some missing model classes for objects that were only present in few albums (but caused those album downloads to fail).
Version 1.0.0.1
What's Changed
Bugfix release:
Oops! 😮
- Fix number of albums downloaded when downloading label links
Removed accidental leftover testing limit of 2 albums per label. Max allowed number of albums in 1 API call used again now.