From 780b0532195bb30816ed459bcc9da7d74c600b7b Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Thu, 23 Sep 2021 18:07:28 +0100 Subject: [PATCH] Check for duplicate title on import Fixes #80 --- app/songdb.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/songdb.py b/app/songdb.py index 8cda432..d8c2c93 100755 --- a/app/songdb.py +++ b/app/songdb.py @@ -66,15 +66,27 @@ def create_track_from_file(session, path, verbose=False): str = f"Importing {path}" INFO(str) INFO("-" * len(str)) - track = Tracks.get_or_create(session, path) - if verbose: INFO("Get track info...") t = get_music_info(path) - track.title = t['title'] - track.artist = t['artist'] + title = t['title'] + artist = t['artist'] if verbose: - INFO(f" Title: \"{track.title}\"") - INFO(f" Artist: \"{track.artist}\"") + INFO(f" Title: \"{title}\"") + INFO(f" Artist: \"{artist}\"") + # Check for duplicate + tracks = Tracks.search_titles(session, title) + if tracks: + print("Found the following possible matches:") + for track in tracks: + print(f'"{track.title}" by {track.artist}') + response = input("Continue [c] or abort [a]?") + if not response: + return + if response[0].lower() not in ['c', 'y']: + return + track = Tracks.get_or_create(session, path) + track.title = title + track.artist = artist track.duration = int(round( t['duration'], Config.MILLISECOND_SIGFIGS) * 1000)