Added popup on import where the user can configure how the tracks get imported.

This commit is contained in:
The Wobbler 2025-03-08 17:50:45 +01:00
parent 31b2e3bf41
commit fd34476d00
12 changed files with 289 additions and 28 deletions

View file

@ -1 +1,8 @@
#!/usr/bin/python3
def __getattr__(name):
match name:
case "Library":
from .library import Library
return Library

View file

@ -1,12 +1,12 @@
#!/usr/bin/python3
import os
import shutil
from PyQt6.QtWidgets import QTabWidget, QAbstractItemView
from ..player.playlist import Playlist
from ..ui.library.library import LibraryWidget
from ..ui.playlist_view import PlaylistView
from ..types import Types
class Library:
@ -115,15 +115,28 @@ class Library:
playlist.load()
def import_tracks(self, tracks: list[str]):
playlist = Playlist(self.app, "Temporary Playlist", tracks, True)
def import_tracks(
self,
tracks: list[str],
import_options: Types.ImportOptions
):
playlist = Playlist(self.app, "Temporary Playlist", tracks, import_options)
self.replace_temporary_playlist(playlist)
self.load_playlist_views()
playlist.load()
def import_track(self, track):
def import_track(self, track, import_options: Types.ImportOptions):
if import_options.artist is not None:
track.metadata.artist = import_options.artist
if import_options.album is not None:
track.metadata.album = import_options.album
if import_options.genre is not None:
track.metadata.genre = import_options.genre
artist_path = os.path.expanduser(f"{self.app.settings.library_path}/artists/{track.metadata.artist}")
if not os.path.exists(artist_path):
@ -134,10 +147,7 @@ class Library:
if track.path == new_track_path or os.path.exists(new_track_path): # track is already in the library
return
shutil.copyfile(track.path, new_track_path)
track.path = new_track_path
track.metadata.path = new_track_path
track.copy(new_track_path, import_options.copy_type)
def open_playlist(self, playlist_path: str):
playlist = Playlist(self.app, "Temporary Playlist", playlist_path)
@ -148,8 +158,8 @@ class Library:
playlist.load()
def import_playlist(self, playlist_path: str):
playlist = Playlist(self.app, "Temporary Playlist", playlist_path, import_tracks=True)
def import_playlist(self, playlist_path: str, import_options):
playlist = Playlist(self.app, "Temporary Playlist", playlist_path, import_options)
self.replace_temporary_playlist(playlist)