Log errors importing tracks

This commit is contained in:
Keith Edmunds 2023-02-05 22:48:32 +00:00
parent 4f3fb6c1ae
commit 4a6d6fa208
3 changed files with 20 additions and 5 deletions

View File

@ -30,7 +30,10 @@ from sqlalchemy.orm import (
relationship, relationship,
) )
from sqlalchemy.orm.exc import ( from sqlalchemy.orm.exc import (
NoResultFound NoResultFound,
)
from sqlalchemy.exc import (
IntegrityError,
) )
from config import Config from config import Config
from helpers import ( from helpers import (
@ -653,8 +656,16 @@ class Tracks(Base):
self.mtime = mtime self.mtime = mtime
self.lastplayed = lastplayed self.lastplayed = lastplayed
try:
session.add(self) session.add(self)
session.commit() session.commit()
except IntegrityError as error:
session.rollback()
log.error(
f"Error importing track ({title=}, "
f"{title=}, {artist=}, {path=}, {error=})"
)
raise ValueError
@classmethod @classmethod
def get_all(cls, session) -> List["Tracks"]: def get_all(cls, session) -> List["Tracks"]:

View File

@ -845,7 +845,11 @@ class Window(QMainWindow, Ui_MainWindow):
with Session() as session: with Session() as session:
for (fname, tags) in tracks: for (fname, tags) in tracks:
try:
track = Tracks(session, fname) track = Tracks(session, fname)
except ValueError:
# Error adding track to database
continue
helpers.set_track_metadata(session, track) helpers.set_track_metadata(session, track)
helpers.normalise_track(track.path) helpers.normalise_track(track.path)
self.visible_playlist_tab().insert_track(session, track) self.visible_playlist_tab().insert_track(session, track)

View File

@ -132,7 +132,7 @@ class PlaylistTab(QTableWidget):
ROW_DURATION = Qt.UserRole + 2 ROW_DURATION = Qt.UserRole + 2
PLAYLISTROW_ID = Qt.UserRole + 3 PLAYLISTROW_ID = Qt.UserRole + 3
def __init__(self, musicmuster: Window, def __init__(self, musicmuster: "Window",
session: scoped_session, session: scoped_session,
playlist_id: int, *args, **kwargs) -> None: playlist_id: int, *args, **kwargs) -> None:
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)