IDer
This commit is contained in:
@@ -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."""
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user