From ffb1b238f4f59dcc2c72c502ce9d2f385b4ed964 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 13 Apr 2025 16:34:37 +0100 Subject: [PATCH] WIP: Make ds.track_update more generic --- app/ds.py | 16 +++++++--------- app/file_importer.py | 4 +--- app/playlistmodel.py | 2 +- app/utilities.py | 3 +-- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/app/ds.py b/app/ds.py index ecc04a3..45ebfb3 100644 --- a/app/ds.py +++ b/app/ds.py @@ -451,7 +451,7 @@ def track_set_intro(track_id: int, intro: int) -> None: # @log_call def track_update( - path: str, track_id: int, metadata: dict[str, str | int | float] + track_id: int, metadata: dict[str, str | int | float] ) -> TrackDTO: """ Update an existing track db entry return the DTO @@ -462,14 +462,12 @@ def track_update( if not track: raise ApplicationError(f"Can't retrieve Track ({track_id=})") - track.path = str(metadata["path"]) - track.title = str(metadata["title"]) - track.artist = str(metadata["artist"]) - track.duration = int(metadata["duration"]) - track.start_gap = int(metadata["start_gap"]) - track.fade_at = int(metadata["fade_at"]) - track.silence_at = int(metadata["silence_at"]) - track.bitrate = int(metadata["bitrate"]) + + for key, value in metadata.items(): + if hasattr(track, key): + setattr(track, key, value) + else: + raise ApplicationError(f"Tried to set attribute {key} on {track}") session.commit() diff --git a/app/file_importer.py b/app/file_importer.py index f126cab..ee98eaa 100644 --- a/app/file_importer.py +++ b/app/file_importer.py @@ -640,9 +640,7 @@ class DoTrackImport(QThread): if self.track_id == 0: track_dto = ds.track_create(metadata) else: - track_dto = ds.track_update( - self.destination_track_path, self.track_id, metadata - ) + track_dto = ds.track_update(self.track_id, metadata) self.signals.status_message_signal.emit( f"{os.path.basename(self.import_file_path)} imported", 10000 diff --git a/app/playlistmodel.py b/app/playlistmodel.py index 2112bfe..f7d4a56 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -1038,7 +1038,7 @@ class PlaylistModel(QAbstractTableModel): track = self.playlist_rows[row_number] metadata = get_all_track_metadata(track.path) - _ = ds.track_update(track.path, track.track_id, metadata) + _ = ds.track_update(track.track_id, metadata) roles = [ Qt.ItemDataRole.BackgroundRole, diff --git a/app/utilities.py b/app/utilities.py index eca3990..5c8c72f 100755 --- a/app/utilities.py +++ b/app/utilities.py @@ -91,7 +91,6 @@ def update_bitrates() -> None: for track in ds.tracks_all(): try: t = get_tags(track.path) - # TODO this won't persist as we're updating DTO - track.bitrate = t.bitrate + ds.track_update(t) except FileNotFoundError: continue