mirror of
https://github.com/markuryy/shark.git
synced 2025-12-15 12:41:02 +00:00
fix(wip): add fallback format support for unavailable tracks
Add support for selecting a fallback audio format if the requested track format is unavailable. Users can now choose to fall back to MP3_320, MP3_128, or the highest available format, or opt to fail if the requested format is not found. The queue manager and downloader now fetch fresh track data just-in-time, handle dz fallback parameters, and ensure the correct track ID is used for decryption. Settings UI and store are updated to allow configuring the fallback format.
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
setPlaylistsFolder,
|
||||
setDeezerConcurrency,
|
||||
setDeezerFormat,
|
||||
setDeezerFallbackFormat,
|
||||
setDeezerOverwrite,
|
||||
setEmbedCoverArt,
|
||||
setSaveCoverToFolder,
|
||||
@@ -23,6 +24,7 @@
|
||||
let currentPlaylistsFolder = $state<string | null>(null);
|
||||
let currentDeezerConcurrency = $state<number>(1);
|
||||
let currentDeezerFormat = $state<'FLAC' | 'MP3_320' | 'MP3_128'>('FLAC');
|
||||
let currentDeezerFallbackFormat = $state<'none' | 'MP3_320' | 'MP3_128' | 'highest'>('none');
|
||||
let currentDeezerOverwrite = $state<boolean>(false);
|
||||
let currentEmbedCoverArt = $state<boolean>(true);
|
||||
let currentSaveCoverToFolder = $state<boolean>(true);
|
||||
@@ -37,6 +39,7 @@
|
||||
currentPlaylistsFolder = $settings.playlistsFolder;
|
||||
currentDeezerConcurrency = $settings.deezerConcurrency;
|
||||
currentDeezerFormat = $settings.deezerFormat;
|
||||
currentDeezerFallbackFormat = $settings.deezerFallbackFormat;
|
||||
currentDeezerOverwrite = $settings.deezerOverwrite;
|
||||
currentEmbedCoverArt = $settings.embedCoverArt;
|
||||
currentSaveCoverToFolder = $settings.saveCoverToFolder;
|
||||
@@ -50,6 +53,7 @@
|
||||
currentPlaylistsFolder = $settings.playlistsFolder;
|
||||
currentDeezerConcurrency = $settings.deezerConcurrency;
|
||||
currentDeezerFormat = $settings.deezerFormat;
|
||||
currentDeezerFallbackFormat = $settings.deezerFallbackFormat;
|
||||
currentDeezerOverwrite = $settings.deezerOverwrite;
|
||||
currentEmbedCoverArt = $settings.embedCoverArt;
|
||||
currentSaveCoverToFolder = $settings.saveCoverToFolder;
|
||||
@@ -210,6 +214,21 @@
|
||||
<small class="help-text">Select the audio quality for downloaded tracks</small>
|
||||
</div>
|
||||
|
||||
<div class="field-row-stacked">
|
||||
<label for="deezer-fallback">Fallback Format</label>
|
||||
<select
|
||||
id="deezer-fallback"
|
||||
bind:value={currentDeezerFallbackFormat}
|
||||
onchange={() => setDeezerFallbackFormat(currentDeezerFallbackFormat)}
|
||||
>
|
||||
<option value="none">None (fail if unavailable)</option>
|
||||
<option value="highest">Highest Available</option>
|
||||
<option value="MP3_320">MP3 320kbps</option>
|
||||
<option value="MP3_128">MP3 128kbps</option>
|
||||
</select>
|
||||
<small class="help-text">What to do if the requested format is unavailable</small>
|
||||
</div>
|
||||
|
||||
<div class="field-row-stacked">
|
||||
<label for="deezer-concurrency">Download Concurrency</label>
|
||||
<div class="slider-container">
|
||||
|
||||
Reference in New Issue
Block a user