mopidy-musicbox-webclient/mopidy_musicbox_webclient/static/js/images.js
2016-03-05 15:49:48 +02:00

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)
}
}
}})
}