import Foundation struct MusicFolder: Identifiable, Hashable, Sendable { let number: Int let url: URL var tracks: [MusicTrack] var customName: String? = nil var id: Int { number } var title: String { customName ?? tracks.first(where: { !$0.album.isEmpty })?.album ?? "Ordner \(String(format: "%02d", number))" } } struct MusicTrack: Identifiable, Hashable, Sendable { let url: URL var title: String var artist: String var album: String var albumArtist: String = "" var trackNumber: String = "" var discNumber: String = "" var year: String = "" var genre: String = "" var acoustID: String = "" var musicBrainzRecordingID: String = "" var musicBrainzReleaseID: String = "" var id: String { url.path } var displayTitle: String { title.isEmpty ? url.deletingPathExtension().lastPathComponent : title } } struct SystemMusicFolder: Identifiable, Hashable, Sendable { let name: String let url: URL var tracks: [MusicTrack] var id: String { name } }