This commit is contained in:
2026-04-14 16:21:06 +02:00
parent 287477753e
commit 460b41a8c5
5 changed files with 301 additions and 1 deletions

View File

@@ -565,6 +565,33 @@ class MainWindow(QMainWindow):
pass
QTimer.singleShot(5000, self.start_background_scan)
# Start AcoustID fingerprinting efter 60 sekunder hvis aktiveret
if self._settings.get("acoustid_enabled", False):
QTimer.singleShot(60000, self._start_acoustid)
def _start_acoustid(self):
"""Start AcoustID fingerprinting i baggrunden."""
from local.acoustid_worker import AcoustIDWorker, find_fpcalc
from local.local_db import DB_PATH
if not find_fpcalc():
logger.info("AcoustID: fpcalc ikke fundet — springer over")
return
if not hasattr(self, "_acoustid_worker"):
self._acoustid_worker = AcoustIDWorker(str(DB_PATH))
if self._acoustid_worker.is_running():
return
def on_progress(done, total, title):
if total > 0 and done % 10 == 0:
self._set_status(
f"AcoustID: {done}/{total}{title}", 3000
)
self._acoustid_worker.start(on_progress=on_progress)
self._set_status("AcoustID fingerprinting startet i baggrunden", 4000)
def start_background_scan(self):
"""Start scanning af alle aktive biblioteker i baggrunden."""

View File

@@ -28,6 +28,7 @@ SETTINGS_KEY_MAIN_DEVICE = "playback/audio_device_main"
SETTINGS_KEY_PREV_DEVICE = "playback/audio_device_preview"
SETTINGS_KEY_AFTER_SONG = "playback/after_song_mode"
SETTINGS_KEY_AFTER_DELAY = "playback/after_song_delay"
SETTINGS_KEY_ACOUSTID = "playback/acoustid_enabled"
def load_settings() -> dict:
@@ -50,6 +51,7 @@ def load_settings() -> dict:
"audio_device_preview":s.value(SETTINGS_KEY_PREV_DEVICE, ""),
"after_song_mode": s.value(SETTINGS_KEY_AFTER_SONG, "manual"),
"after_song_delay": s.value(SETTINGS_KEY_AFTER_DELAY, 2, type=int),
"acoustid_enabled": s.value(SETTINGS_KEY_ACOUSTID, False, type=bool),
}
@@ -72,6 +74,7 @@ def save_settings(values: dict):
s.setValue(SETTINGS_KEY_PREV_DEVICE, values.get("audio_device_preview", ""))
s.setValue(SETTINGS_KEY_AFTER_SONG, values.get("after_song_mode", "manual"))
s.setValue(SETTINGS_KEY_AFTER_DELAY, values.get("after_song_delay", 2))
s.setValue(SETTINGS_KEY_ACOUSTID, values.get("acoustid_enabled", False))
class SettingsDialog(QDialog):
@@ -260,6 +263,29 @@ class SettingsDialog(QDialog):
grp3_layout.addRow(note3)
layout.addWidget(grp3)
# AcoustID fingerprinting
grp4 = QGroupBox("AcoustID fingerprinting (valgfri)")
grp4_layout = QVBoxLayout(grp4)
grp4_layout.setSpacing(6)
self._chk_acoustid = QCheckBox("Kør AcoustID fingerprinting i baggrunden")
self._chk_acoustid.setToolTip(
"Analyserer sange uden MBID og slår dem op i AcoustID-databasen.\n"
"Kræver fpcalc (Chromaprint) installeret.\n"
"Startes automatisk 60 sekunder efter opstart."
)
grp4_layout.addWidget(self._chk_acoustid)
note4 = QLabel(
"fpcalc skal installeres separat:\n"
" Linux: sudo apt install libchromaprint-tools\n"
" Windows: download fra acoustid.org/chromaprint"
)
note4.setObjectName("result_count")
note4.setWordWrap(True)
grp4_layout.addWidget(note4)
layout.addWidget(grp4)
layout.addStretch()
return tab
@@ -449,6 +475,7 @@ class SettingsDialog(QDialog):
else:
self._radio_manual.setChecked(True)
self._spin_after_delay.setValue(v.get("after_song_delay", 2))
self._chk_acoustid.setChecked(v.get("acoustid_enabled", False))
# ── Gem ───────────────────────────────────────────────────────────────────
@@ -474,6 +501,7 @@ class SettingsDialog(QDialog):
"manual"
),
"after_song_delay": self._spin_after_delay.value(),
"acoustid_enabled": self._chk_acoustid.isChecked(),
}
save_settings(values)
self._values = values