added config for cover art save
This commit is contained in:
@@ -2,4 +2,4 @@ waitress==3.0.2
|
|||||||
celery==5.5.3
|
celery==5.5.3
|
||||||
Flask==3.1.1
|
Flask==3.1.1
|
||||||
flask_cors==6.0.0
|
flask_cors==6.0.0
|
||||||
deezspot-spotizerr==1.4.0
|
deezspot-spotizerr==1.4.1
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ def download_album(
|
|||||||
custom_dir_format="%ar_album%/%album%/%copyright%",
|
custom_dir_format="%ar_album%/%album%/%copyright%",
|
||||||
custom_track_format="%tracknum%. %music% - %artist%",
|
custom_track_format="%tracknum%. %music% - %artist%",
|
||||||
pad_tracks=True,
|
pad_tracks=True,
|
||||||
|
save_cover=True,
|
||||||
initial_retry_delay=5,
|
initial_retry_delay=5,
|
||||||
retry_delay_increase=5,
|
retry_delay_increase=5,
|
||||||
max_retries=3,
|
max_retries=3,
|
||||||
@@ -114,6 +115,7 @@ def download_album(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -155,6 +157,7 @@ def download_album(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -195,6 +198,7 @@ def download_album(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -229,6 +233,7 @@ def download_album(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ DEFAULT_MAIN_CONFIG = {
|
|||||||
'customDirFormat': '%ar_album%/%album%',
|
'customDirFormat': '%ar_album%/%album%',
|
||||||
'customTrackFormat': '%tracknum%. %music%',
|
'customTrackFormat': '%tracknum%. %music%',
|
||||||
'tracknum_padding': True,
|
'tracknum_padding': True,
|
||||||
|
'save_cover': True,
|
||||||
'maxConcurrentDownloads': 3,
|
'maxConcurrentDownloads': 3,
|
||||||
'maxRetries': 3,
|
'maxRetries': 3,
|
||||||
'retryDelaySeconds': 5,
|
'retryDelaySeconds': 5,
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ def get_config_params():
|
|||||||
'customDirFormat': config.get('customDirFormat', '%ar_album%/%album%'),
|
'customDirFormat': config.get('customDirFormat', '%ar_album%/%album%'),
|
||||||
'customTrackFormat': config.get('customTrackFormat', '%tracknum%. %music%'),
|
'customTrackFormat': config.get('customTrackFormat', '%tracknum%. %music%'),
|
||||||
'tracknum_padding': config.get('tracknum_padding', True),
|
'tracknum_padding': config.get('tracknum_padding', True),
|
||||||
|
'save_cover': config.get('save_cover', True),
|
||||||
'maxRetries': config.get('maxRetries', 3),
|
'maxRetries': config.get('maxRetries', 3),
|
||||||
'retryDelaySeconds': config.get('retryDelaySeconds', 5),
|
'retryDelaySeconds': config.get('retryDelaySeconds', 5),
|
||||||
'retry_delay_increase': config.get('retry_delay_increase', 5)
|
'retry_delay_increase': config.get('retry_delay_increase', 5)
|
||||||
@@ -74,6 +75,7 @@ def get_config_params():
|
|||||||
'customDirFormat': '%ar_album%/%album%',
|
'customDirFormat': '%ar_album%/%album%',
|
||||||
'customTrackFormat': '%tracknum%. %music%',
|
'customTrackFormat': '%tracknum%. %music%',
|
||||||
'tracknum_padding': True,
|
'tracknum_padding': True,
|
||||||
|
'save_cover': True,
|
||||||
'maxRetries': 3,
|
'maxRetries': 3,
|
||||||
'retryDelaySeconds': 5,
|
'retryDelaySeconds': 5,
|
||||||
'retry_delay_increase': 5
|
'retry_delay_increase': 5
|
||||||
@@ -198,6 +200,7 @@ class CeleryDownloadQueueManager:
|
|||||||
"custom_dir_format": original_request.get("custom_dir_format", config_params['customDirFormat']),
|
"custom_dir_format": original_request.get("custom_dir_format", config_params['customDirFormat']),
|
||||||
"custom_track_format": original_request.get("custom_track_format", config_params['customTrackFormat']),
|
"custom_track_format": original_request.get("custom_track_format", config_params['customTrackFormat']),
|
||||||
"pad_tracks": self._parse_bool_param(original_request.get("tracknum_padding"), config_params['tracknum_padding']),
|
"pad_tracks": self._parse_bool_param(original_request.get("tracknum_padding"), config_params['tracknum_padding']),
|
||||||
|
"save_cover": self._parse_bool_param(original_request.get("save_cover"), config_params['save_cover']),
|
||||||
"retry_count": 0,
|
"retry_count": 0,
|
||||||
"original_request": original_request,
|
"original_request": original_request,
|
||||||
"created_at": time.time()
|
"created_at": time.time()
|
||||||
|
|||||||
@@ -1086,6 +1086,7 @@ def download_track(self, **task_data):
|
|||||||
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
||||||
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
||||||
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
||||||
|
save_cover = task_data.get("save_cover", config_params.get("save_cover", True))
|
||||||
|
|
||||||
# Execute the download - service is now determined from URL
|
# Execute the download - service is now determined from URL
|
||||||
download_track_func(
|
download_track_func(
|
||||||
@@ -1098,6 +1099,7 @@ def download_track(self, **task_data):
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
progress_callback=self.progress_callback
|
progress_callback=self.progress_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1153,6 +1155,7 @@ def download_album(self, **task_data):
|
|||||||
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
||||||
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
||||||
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
||||||
|
save_cover = task_data.get("save_cover", config_params.get("save_cover", True))
|
||||||
|
|
||||||
# Execute the download - service is now determined from URL
|
# Execute the download - service is now determined from URL
|
||||||
download_album_func(
|
download_album_func(
|
||||||
@@ -1165,6 +1168,7 @@ def download_album(self, **task_data):
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
progress_callback=self.progress_callback
|
progress_callback=self.progress_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1220,6 +1224,7 @@ def download_playlist(self, **task_data):
|
|||||||
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
custom_dir_format = task_data.get("custom_dir_format", config_params.get("customDirFormat", "%ar_album%/%album%"))
|
||||||
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
custom_track_format = task_data.get("custom_track_format", config_params.get("customTrackFormat", "%tracknum%. %music%"))
|
||||||
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
pad_tracks = task_data.get("pad_tracks", config_params.get("tracknum_padding", True))
|
||||||
|
save_cover = task_data.get("save_cover", config_params.get("save_cover", True))
|
||||||
|
|
||||||
# Get retry parameters
|
# Get retry parameters
|
||||||
initial_retry_delay = task_data.get("initial_retry_delay", config_params.get("retryDelaySeconds", 5))
|
initial_retry_delay = task_data.get("initial_retry_delay", config_params.get("retryDelaySeconds", 5))
|
||||||
@@ -1237,6 +1242,7 @@ def download_playlist(self, **task_data):
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries,
|
max_retries=max_retries,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ def download_playlist(
|
|||||||
custom_dir_format="%ar_album%/%album%/%copyright%",
|
custom_dir_format="%ar_album%/%album%/%copyright%",
|
||||||
custom_track_format="%tracknum%. %music% - %artist%",
|
custom_track_format="%tracknum%. %music% - %artist%",
|
||||||
pad_tracks=True,
|
pad_tracks=True,
|
||||||
|
save_cover=True,
|
||||||
initial_retry_delay=5,
|
initial_retry_delay=5,
|
||||||
retry_delay_increase=5,
|
retry_delay_increase=5,
|
||||||
max_retries=3,
|
max_retries=3,
|
||||||
@@ -109,6 +110,7 @@ def download_playlist(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries,
|
max_retries=max_retries,
|
||||||
@@ -150,6 +152,7 @@ def download_playlist(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -190,6 +193,7 @@ def download_playlist(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -224,6 +228,7 @@ def download_playlist(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ def download_track(
|
|||||||
custom_dir_format="%ar_album%/%album%/%copyright%",
|
custom_dir_format="%ar_album%/%album%/%copyright%",
|
||||||
custom_track_format="%tracknum%. %music% - %artist%",
|
custom_track_format="%tracknum%. %music% - %artist%",
|
||||||
pad_tracks=True,
|
pad_tracks=True,
|
||||||
|
save_cover=True,
|
||||||
initial_retry_delay=5,
|
initial_retry_delay=5,
|
||||||
retry_delay_increase=5,
|
retry_delay_increase=5,
|
||||||
max_retries=3,
|
max_retries=3,
|
||||||
@@ -108,6 +109,7 @@ def download_track(
|
|||||||
not_interface=False,
|
not_interface=False,
|
||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -143,6 +145,7 @@ def download_track(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -176,6 +179,7 @@ def download_track(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
@@ -204,6 +208,7 @@ def download_track(
|
|||||||
custom_dir_format=custom_dir_format,
|
custom_dir_format=custom_dir_format,
|
||||||
custom_track_format=custom_track_format,
|
custom_track_format=custom_track_format,
|
||||||
pad_tracks=pad_tracks,
|
pad_tracks=pad_tracks,
|
||||||
|
save_cover=save_cover,
|
||||||
initial_retry_delay=initial_retry_delay,
|
initial_retry_delay=initial_retry_delay,
|
||||||
retry_delay_increase=retry_delay_increase,
|
retry_delay_increase=retry_delay_increase,
|
||||||
max_retries=max_retries
|
max_retries=max_retries
|
||||||
|
|||||||
@@ -121,6 +121,8 @@ async function loadConfig() {
|
|||||||
if (retryDelayIncrease) retryDelayIncrease.value = savedConfig.retry_delay_increase || '5';
|
if (retryDelayIncrease) retryDelayIncrease.value = savedConfig.retry_delay_increase || '5';
|
||||||
const tracknumPaddingToggle = document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null;
|
const tracknumPaddingToggle = document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null;
|
||||||
if (tracknumPaddingToggle) tracknumPaddingToggle.checked = savedConfig.tracknum_padding === undefined ? true : !!savedConfig.tracknum_padding;
|
if (tracknumPaddingToggle) tracknumPaddingToggle.checked = savedConfig.tracknum_padding === undefined ? true : !!savedConfig.tracknum_padding;
|
||||||
|
const saveCoverToggle = document.getElementById('saveCoverToggle') as HTMLInputElement | null;
|
||||||
|
if (saveCoverToggle) saveCoverToggle.checked = savedConfig.save_cover === undefined ? true : !!savedConfig.save_cover;
|
||||||
|
|
||||||
// Update explicit filter status
|
// Update explicit filter status
|
||||||
updateExplicitFilterStatus(savedConfig.explicitFilter);
|
updateExplicitFilterStatus(savedConfig.explicitFilter);
|
||||||
@@ -243,6 +245,7 @@ function setupEventListeners() {
|
|||||||
(document.getElementById('spotifyQualitySelect') as HTMLSelectElement | null)?.addEventListener('change', saveConfig);
|
(document.getElementById('spotifyQualitySelect') as HTMLSelectElement | null)?.addEventListener('change', saveConfig);
|
||||||
(document.getElementById('deezerQualitySelect') as HTMLSelectElement | null)?.addEventListener('change', saveConfig);
|
(document.getElementById('deezerQualitySelect') as HTMLSelectElement | null)?.addEventListener('change', saveConfig);
|
||||||
(document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
(document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
||||||
|
(document.getElementById('saveCoverToggle') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
||||||
(document.getElementById('maxRetries') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
(document.getElementById('maxRetries') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
||||||
(document.getElementById('retryDelaySeconds') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
(document.getElementById('retryDelaySeconds') as HTMLInputElement | null)?.addEventListener('change', saveConfig);
|
||||||
|
|
||||||
@@ -843,7 +846,8 @@ async function saveConfig() {
|
|||||||
maxRetries: parseInt((document.getElementById('maxRetries') as HTMLInputElement | null)?.value || '3', 10) || 3,
|
maxRetries: parseInt((document.getElementById('maxRetries') as HTMLInputElement | null)?.value || '3', 10) || 3,
|
||||||
retryDelaySeconds: parseInt((document.getElementById('retryDelaySeconds') as HTMLInputElement | null)?.value || '5', 10) || 5,
|
retryDelaySeconds: parseInt((document.getElementById('retryDelaySeconds') as HTMLInputElement | null)?.value || '5', 10) || 5,
|
||||||
retry_delay_increase: parseInt((document.getElementById('retryDelayIncrease') as HTMLInputElement | null)?.value || '5', 10) || 5,
|
retry_delay_increase: parseInt((document.getElementById('retryDelayIncrease') as HTMLInputElement | null)?.value || '5', 10) || 5,
|
||||||
tracknum_padding: (document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null)?.checked
|
tracknum_padding: (document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null)?.checked,
|
||||||
|
save_cover: (document.getElementById('saveCoverToggle') as HTMLInputElement | null)?.checked
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -901,6 +905,8 @@ async function saveConfig() {
|
|||||||
if (retryDelayIncrease) retryDelayIncrease.value = savedConfig.retry_delay_increase || '5';
|
if (retryDelayIncrease) retryDelayIncrease.value = savedConfig.retry_delay_increase || '5';
|
||||||
const tracknumPaddingToggle = document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null;
|
const tracknumPaddingToggle = document.getElementById('tracknumPaddingToggle') as HTMLInputElement | null;
|
||||||
if (tracknumPaddingToggle) tracknumPaddingToggle.checked = savedConfig.tracknum_padding === undefined ? true : !!savedConfig.tracknum_padding;
|
if (tracknumPaddingToggle) tracknumPaddingToggle.checked = savedConfig.tracknum_padding === undefined ? true : !!savedConfig.tracknum_padding;
|
||||||
|
const saveCoverToggle = document.getElementById('saveCoverToggle') as HTMLInputElement | null;
|
||||||
|
if (saveCoverToggle) saveCoverToggle.checked = savedConfig.save_cover === undefined ? true : !!savedConfig.save_cover;
|
||||||
|
|
||||||
// Update explicit filter status
|
// Update explicit filter status
|
||||||
updateExplicitFilterStatus(savedConfig.explicitFilter);
|
updateExplicitFilterStatus(savedConfig.explicitFilter);
|
||||||
|
|||||||
@@ -201,6 +201,7 @@
|
|||||||
<option value="%mood%">%mood% - Mood information</option>
|
<option value="%mood%">%mood% - Mood information</option>
|
||||||
<option value="%rating%">%rating% - Track rating</option>
|
<option value="%rating%">%rating% - Track rating</option>
|
||||||
<option value="%website%">%website% - Website information</option>
|
<option value="%website%">%website% - Website information</option>
|
||||||
|
<option value="%quality%">%quality% - Quality of the track</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
<optgroup label="ReplayGain">
|
<optgroup label="ReplayGain">
|
||||||
<option value="%replaygain_album_gain%">%replaygain_album_gain% - Album gain</option>
|
<option value="%replaygain_album_gain%">%replaygain_album_gain% - Album gain</option>
|
||||||
@@ -225,6 +226,17 @@
|
|||||||
When enabled: "01. Track" - When disabled: "1. Track"
|
When enabled: "01. Track" - When disabled: "1. Track"
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- New Save Cover Art Toggle -->
|
||||||
|
<div class="config-item">
|
||||||
|
<label>Save Cover Art:</label>
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" id="saveCoverToggle" />
|
||||||
|
<span class="slider"></span>
|
||||||
|
</label>
|
||||||
|
<div class="setting-description">
|
||||||
|
When enabled, cover art will saved as cover.jpg in the same directory as the track.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="watch-options-config card">
|
<div class="watch-options-config card">
|
||||||
|
|||||||
Reference in New Issue
Block a user