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

Compare commits

...

2 Commits

Author SHA1 Message Date
ed44f2da0d
Updated screenshot 2019-03-06 17:10:23 -05:00
1a4d52418b
WIP: Code to try out different services 2019-03-06 17:10:07 -05:00
2 changed files with 71 additions and 4 deletions

View File

@ -73,9 +73,8 @@ class AlbumArtService: NSObject {
guard let searchURL = urlComponents.url
else { return }
firstly {
URLSession.shared.dataTask(.promise, with: searchURL).validate()
}.compactMap {
.compactMap {
JSON($0.data)
}.compactMap {
$0["releases"][0]["id"].string
@ -89,8 +88,76 @@ class AlbumArtService: NSObject {
return NSImage(data: $0.data)
}.done {
callback($0)
}.catch {
if let httpError = $0 as? PMKHTTPError {
print(httpError.description)
}
//print($0)
//self.cacheArtwork(for: album, data: Data())
}
}
func getArtworkFromITunes(for album: AlbumItem, callback: @escaping (_ image: NSImage) -> Void) {
guard var urlComponents = URLComponents(string: "https://itunes.apple.com/search")
else { return }
urlComponents.query = "term=\(album.artist) \(album.title)&country=us&entity=album&limit=1"
guard let searchURL = urlComponents.url
else { return }
URLSession.shared.dataTask(.promise, with: searchURL).validate()
.compactMap {
JSON($0.data)
}.compactMap {
$0["results"][0]["artworkUrl100"].string
}.compactMap {
$0.replacingOccurrences(of: "100x100", with: "600x600")
}.then { (imageURL: String) -> Promise<(data: Data, response: URLResponse)> in
let url = URL(string: imageURL)!
return URLSession.shared.dataTask(.promise, with: url).validate()
}.compactMap {
self.cacheArtwork(for: album, data: $0.data)
return NSImage(data: $0.data)
}.done {
callback($0)
}.catch { (error: Error) in
self.cacheArtwork(for: album, data: Data())
print(error)
//self.cacheArtwork(for: album, data: Data())
}
}
func getArtworkFromDiscogs(for album: AlbumItem, callback: @escaping (_ image: NSImage) -> Void) {
// TODO: Don't leave this token here!
let token = "fzCyDdJHwuDsjZoqbVyQnYRufHwltcjNUGOAWgeJ"
let apiURL = "https://api.discogs.com"
guard var urlComponents = URLComponents(string: "\(apiURL)/database/search")
else { return }
urlComponents.query = "artist=\(album.artist)&release_title=\(album.title)&country=us&format=album&token=\(token)"
guard let searchURL = urlComponents.url
else { return }
print(searchURL)
URLSession.shared.dataTask(.promise, with: searchURL).validate()
.compactMap {
JSON($0.data)
}.compactMap {
$0["results"][0]["cover_image"].string
}.then { (imageURL: String) -> Promise<(data: Data, response: URLResponse)> in
let url = URL(string: imageURL)!
return URLSession.shared.dataTask(.promise, with: url).validate()
}.compactMap {
self.cacheArtwork(for: album, data: $0.data)
return NSImage(data: $0.data)
}.done {
callback($0)
}.catch { (error: Error) in
print(error)
//self.cacheArtwork(for: album, data: Data())
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 621 KiB