1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Persephone/Models/Album.swift

62 lines
1.1 KiB
Swift

//
// AlbumItem.swift
// Persephone
//
// Created by Daniel Barber on 2019/2/26.
// Copyright © 2019 Dan Barber. All rights reserved.
//
import AppKit
import CryptoSwift
struct Album {
var mpdAlbum: MPDClient.MPDAlbum
init(mpdAlbum: MPDClient.MPDAlbum) {
self.mpdAlbum = mpdAlbum
}
var title: String {
return mpdAlbum.title
}
var artist: String {
return mpdAlbum.artist
}
var date: String {
guard let date = mpdAlbum.date else { return "" }
return date
}
var hash: String {
return "\(title) - \(artist)".sha1()
}
var coverArtFilenames: [String] {
return [
"folder.jpg",
"cover.jpg",
"\(artist) - \(title ).jpg"
]
}
var coverArtFilePath: String? {
let musicDir = App.store.state.preferencesState.expandedMpdLibraryDir
guard let albumPath = mpdAlbum.path else { return nil }
return coverArtFilenames
.lazy
.map { "\(musicDir)/\(albumPath)/\($0)" }
.first {
FileManager.default.fileExists(atPath: $0)
}
}
}
extension Album: Equatable {
static func == (lhs: Album, rhs: Album) -> Bool {
return (lhs.mpdAlbum == rhs.mpdAlbum)
}
}