93 lines
2.9 KiB
JavaScript
93 lines
2.9 KiB
JavaScript
/**
|
|
* @author Wouter van Wijk
|
|
*/
|
|
|
|
API_KEY = 'b6d34c3af91d62ab0ae00ab1b6fa8733'
|
|
API_SECRET = '2c631802c2285d5d5d1502462fe42a2b'
|
|
|
|
var fmcache
|
|
var lastfm
|
|
|
|
$(window).load(function () {
|
|
// create a Cache object
|
|
fmcache = new LastFMCache()
|
|
// create a LastFM object
|
|
lastfm = new LastFM({
|
|
apiKey : API_KEY,
|
|
apiSecret : API_SECRET,
|
|
cache : fmcache
|
|
})
|
|
})
|
|
|
|
function getCover (uri, images, size) {
|
|
var defUrl = 'images/default_cover.png'
|
|
$(images).attr('src', defUrl)
|
|
if (!uri) {
|
|
return
|
|
}
|
|
|
|
mopidy.library.getImages({'uris': [uri]}).then(function (imageResults) {
|
|
var uri = Object.keys(imageResults)[0]
|
|
if (imageResults[uri].length > 0) {
|
|
$(images).attr('src', imageResults[uri][0].uri)
|
|
} else {
|
|
// Also check deprecated 'album.images' in case backend does not
|
|
// implement mopidy.library.getImages yet...
|
|
getCoverFromAlbum(uri, images, size)
|
|
}
|
|
})
|
|
}
|
|
|
|
// Note that this approach has been deprecated in Mopidy
|
|
// TODO: Remove when Mopidy no longer supports getting images
|
|
// with 'album.images'.
|
|
function getCoverFromAlbum (uri, images, size) {
|
|
mopidy.library.lookup({'uris': [uri]}).then(function (resultDict) {
|
|
var uri = Object.keys(resultDict)[0]
|
|
var track = resultDict[uri][0]
|
|
if (track.album && track.album.images && (track.album.images.length > 0)) {
|
|
$(images).attr('src', track.album.images[0])
|
|
} else {
|
|
// Fallback to last.fm
|
|
getCoverFromLastFm(track, images, size)
|
|
}
|
|
})
|
|
}
|
|
|
|
function getCoverFromLastFm (track, images, size) {
|
|
var defUrl = 'images/default_cover.png'
|
|
if (!(track.album || track.artist)) {
|
|
return
|
|
}
|
|
var albumname = track.album.name || ''
|
|
var artistname = ''
|
|
if (track.album.artists && (track.album.artists.length > 0)) {
|
|
// First look for the artist in the album
|
|
artistname = track.album.artists[0].name
|
|
} else if (track.artists && (track.artists.length > 0)) {
|
|
// Fallback to using artists for specific track
|
|
artistname = track.artists[0].name
|
|
}
|
|
|
|
lastfm.album.getInfo({artist: artistname, album: albumname},
|
|
{ success: function (data) {
|
|
for (var i = 0; i < data.album.image.length; i++) {
|
|
if (data.album.image[i].size == size) {
|
|
$(images).attr('src', data.album.image[i]['#text'] || defUrl)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
function getArtistImage (nwartist, image, size) {
|
|
var defUrl = 'images/user_24x32.png'
|
|
lastfm.artist.getInfo({artist: nwartist}, {success: function (data) {
|
|
for (var i = 0; i < data.artist.image.length; i++) {
|
|
if (data.artist.image[i].size == size) {
|
|
$(image).attr('src', data.artist.image[i]['#text'] || defUrl)
|
|
}
|
|
}
|
|
}})
|
|
}
|