Fix crash importing files

This commit is contained in:
Keith Edmunds 2025-01-01 13:13:54 +00:00
parent e23f6e2cc8
commit 85cfebe0f7

View File

@ -175,6 +175,8 @@ class FileImporter:
self.unimportable_files: list[FileErrors] = [] self.unimportable_files: list[FileErrors] = []
# Files user doesn't want imported # Files user doesn't want imported
self.do_not_import: list[str] = [] 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: def do_import(self) -> None:
""" """
@ -223,7 +225,10 @@ class FileImporter:
self.import_files_data = [ self.import_files_data = [
x x
for x in self.import_files_data 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. # Import all that's left.
@ -253,9 +258,9 @@ class FileImporter:
) )
if matching_track < 0: # User cancelled 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( self.import_files_data[idx].destination_track_path = os.path.join(
Config.IMPORT_DESTINATION, Config.IMPORT_DESTINATION,
os.path.basename(self.import_files_data[idx].import_file_path), os.path.basename(self.import_files_data[idx].import_file_path),
@ -277,7 +282,7 @@ class FileImporter:
f = self.import_files_data[idx] f = self.import_files_data[idx]
# Import in separate thread # Import in separate thread
self.import_thread = QThread() self.import_thread[idx] = QThread()
self.worker = DoTrackImport( self.worker = DoTrackImport(
import_file_path=f.import_file_path, import_file_path=f.import_file_path,
tags=f.tags, tags=f.tags,
@ -288,12 +293,12 @@ class FileImporter:
row_number=self.row_number, row_number=self.row_number,
) )
self.worker.moveToThread(self.import_thread) self.worker.moveToThread(self.import_thread[idx])
self.import_thread.started.connect(self.worker.run) self.import_thread[idx].started.connect(self.worker.run)
self.worker.import_finished.connect(self.import_thread.quit) self.worker.import_finished.connect(self.import_thread[idx].quit)
self.worker.import_finished.connect(self.worker.deleteLater) self.worker.import_finished.connect(self.worker.deleteLater)
self.import_thread.finished.connect(self.import_thread.deleteLater) self.import_thread[idx].finished.connect(self.import_thread[idx].deleteLater)
self.import_thread.start() self.import_thread[idx].start()
def order_by_artist(self, idx: int, track_ids_to_check: list[int]) -> list[int]: def order_by_artist(self, idx: int, track_ids_to_check: list[int]) -> list[int]:
""" """