mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
62 lines
1.1 KiB
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)
|
|
}
|
|
}
|