mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
70 lines
1.7 KiB
Swift
70 lines
1.7 KiB
Swift
//
|
|
// AlbumArtService+Filesystem.swift
|
|
// Persephone
|
|
//
|
|
// Created by Daniel Barber on 2019/3/17.
|
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
extension AlbumArtService {
|
|
func getArtworkFromFilesystem(
|
|
for album: AlbumItem,
|
|
callback: @escaping (_ image: NSImage) -> Void
|
|
) {
|
|
var tryImage: NSImage?
|
|
|
|
let coverArtFilenames = [
|
|
"folder.jpg",
|
|
"cover.jpg",
|
|
"\(album.artist) - \(album.title).jpg"
|
|
]
|
|
|
|
let callback = { (_ albumURI: String?) in
|
|
guard let albumURI = albumURI
|
|
else { return }
|
|
|
|
let musicDir = self.preferences.expandedMpdLibraryDir
|
|
let fullAlbumURI = "\(musicDir)/\(albumURI)"
|
|
|
|
for coverArtFilename in coverArtFilenames {
|
|
let coverArtURI = "\(fullAlbumURI)/\(coverArtFilename)"
|
|
|
|
tryImage = self.tryImage(coverArtURI)
|
|
|
|
if let image = tryImage {
|
|
self.cacheArtwork(
|
|
for: album,
|
|
data: image.jpegData(compressionQuality: self.cachedArtworkQuality)
|
|
)
|
|
callback(image)
|
|
break
|
|
}
|
|
}
|
|
|
|
if tryImage == nil && self.preferences.fetchMissingArtworkFromInternet {
|
|
self.getRemoteArtwork(for: album, callback: callback)
|
|
}
|
|
}
|
|
|
|
AppDelegate.mpdClient.getAlbumURI(
|
|
for: album.album,
|
|
callback: callback
|
|
)
|
|
}
|
|
|
|
func tryImage(_ filePath: String) -> NSImage? {
|
|
guard FileManager.default.fileExists(atPath: filePath),
|
|
let data = FileManager.default.contents(atPath: filePath),
|
|
let image = NSImage(data: data)
|
|
else { return nil }
|
|
|
|
let imageThumb = image.toFitBox(
|
|
size: NSSize(width: self.cachedArtworkSize, height: self.cachedArtworkSize)
|
|
)
|
|
|
|
return imageThumb
|
|
}
|
|
}
|