From e884201df4a0ebae19a14e6b37062c195bb92697 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Mon, 3 Jun 2024 19:06:00 +0100 Subject: [PATCH] Don't accept unreadable track into _TrackManager --- app/musicmuster.py | 14 +++++++++----- app/playlistmodel.py | 2 +- app/trackmanager.py | 4 ++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index 84b2ccc..8db99a2 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -1075,11 +1075,15 @@ class Window(QMainWindow, Ui_MainWindow): self.btnPreview.setChecked(False) return - with db.Session() as session: - self.preview_track_manager = PreviewTrackManager( - session=session, track_id=track_id, row_number=row_number - ) - self.preview_track_manager.play() + try: + with db.Session() as session: + self.preview_track_manager = PreviewTrackManager( + session=session, track_id=track_id, row_number=row_number + ) + self.preview_track_manager.play() + except ValueError as e: + log.error(f"Error creating PreviewTrackManager({str(e)})") + return else: if self.preview_track_manager: diff --git a/app/playlistmodel.py b/app/playlistmodel.py index dfd8bda..19b5d40 100644 --- a/app/playlistmodel.py +++ b/app/playlistmodel.py @@ -1270,7 +1270,7 @@ class PlaylistModel(QAbstractTableModel): track_sequence.next = MainTrackManager(session, prd.plrid) self.invalidate_row(row_number) except ValueError as e: - log.error(f"Error creating PlaylistTrack({prd=}): ({str(e)})") + log.error(f"Error creating MainTrackManager({prd=}): ({str(e)})") return self.signals.search_wikipedia_signal.emit( diff --git a/app/trackmanager.py b/app/trackmanager.py index ae82881..dc88674 100644 --- a/app/trackmanager.py +++ b/app/trackmanager.py @@ -381,6 +381,10 @@ class _TrackManager: self.row_number = row_number self.preview_player = preview_player + # Check file readable + if file_is_unreadable(track.path): + raise ValueError(f"_TrackManager.__init__: {track.path=} unreadable") + self.artist = track.artist self.bitrate = track.bitrate self.duration = track.duration