diff --git a/app/file_importer.py b/app/file_importer.py index 1a584d6..9b25746 100644 --- a/app/file_importer.py +++ b/app/file_importer.py @@ -175,6 +175,8 @@ class FileImporter: self.unimportable_files: list[FileErrors] = [] # Files user doesn't want imported self.do_not_import: list[str] = [] + # Place to keep reference to importer while it runs + self.import_thread: dict[int, QThread] = {} def do_import(self) -> None: """ @@ -223,7 +225,10 @@ class FileImporter: self.import_files_data = [ x for x in self.import_files_data - if x.import_file_path not in self.do_not_import + if ( + x.import_file_path not in self.do_not_import + or x.track_id != -1 + ) ] # Import all that's left. @@ -253,9 +258,9 @@ class FileImporter: ) if matching_track < 0: # User cancelled - return + matching_track = -1 - if matching_track == 0: + elif matching_track == 0: self.import_files_data[idx].destination_track_path = os.path.join( Config.IMPORT_DESTINATION, os.path.basename(self.import_files_data[idx].import_file_path), @@ -277,7 +282,7 @@ class FileImporter: f = self.import_files_data[idx] # Import in separate thread - self.import_thread = QThread() + self.import_thread[idx] = QThread() self.worker = DoTrackImport( import_file_path=f.import_file_path, tags=f.tags, @@ -288,12 +293,12 @@ class FileImporter: row_number=self.row_number, ) - self.worker.moveToThread(self.import_thread) - self.import_thread.started.connect(self.worker.run) - self.worker.import_finished.connect(self.import_thread.quit) + self.worker.moveToThread(self.import_thread[idx]) + self.import_thread[idx].started.connect(self.worker.run) + self.worker.import_finished.connect(self.import_thread[idx].quit) self.worker.import_finished.connect(self.worker.deleteLater) - self.import_thread.finished.connect(self.import_thread.deleteLater) - self.import_thread.start() + self.import_thread[idx].finished.connect(self.import_thread[idx].deleteLater) + self.import_thread[idx].start() def order_by_artist(self, idx: int, track_ids_to_check: list[int]) -> list[int]: """