Files

35 lines
1.0 KiB
Swift

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 }
}