Merge pull request #169 from jcass77/fix/128_album_covers
Refactor cover art retrieval
This commit is contained in:
commit
49b15f8894
@ -77,6 +77,7 @@ v2.2.0 (UNRELEASED)
|
|||||||
- Scrolling now works in full screen mode for Chrome and Safari as well. (Fixes: `#53 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/53>`_).
|
- Scrolling now works in full screen mode for Chrome and Safari as well. (Fixes: `#53 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/53>`_).
|
||||||
- No longer interferes with changes to Mopidy's volume levels that are triggered externally. (Fixes: `#162 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/162>`_).
|
- No longer interferes with changes to Mopidy's volume levels that are triggered externally. (Fixes: `#162 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/162>`_).
|
||||||
- Volume slider now works with Mopidy-ALSAMixer again. (Fixes: `#168 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/168>`_).
|
- Volume slider now works with Mopidy-ALSAMixer again. (Fixes: `#168 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/168>`_).
|
||||||
|
- Now falls back to track artist if album artist is not available for rendering cover art. (Fixes: `#128 <https://github.com/pimusicbox/mopidy-musicbox-webclient/issues/128>`_).
|
||||||
|
|
||||||
v2.1.1 (2016-02-04)
|
v2.1.1 (2016-02-04)
|
||||||
-------------------
|
-------------------
|
||||||
|
|||||||
@ -224,7 +224,7 @@ function resultsToTables(results, target, uri) {
|
|||||||
|
|
||||||
var newalbum = [];
|
var newalbum = [];
|
||||||
var newtlids = [];
|
var newtlids = [];
|
||||||
//keep a list of albums for retreiving of covers
|
//keep a list of track URIs for retrieving of covers
|
||||||
var coversList = [];
|
var coversList = [];
|
||||||
var nextname = '';
|
var nextname = '';
|
||||||
var count = 0;
|
var count = 0;
|
||||||
@ -344,19 +344,16 @@ function resultsToTables(results, target, uri) {
|
|||||||
newalbum = [];
|
newalbum = [];
|
||||||
newtlids = [];
|
newtlids = [];
|
||||||
if (results[i].album) {
|
if (results[i].album) {
|
||||||
coversList.push([results[i].album, i]);
|
coversList.push([results[i].uri, i]);
|
||||||
}
|
}
|
||||||
} //newalbum length
|
} //newalbum length
|
||||||
if (results[i].album) {
|
|
||||||
coversList.push([results[i].album, i]);
|
|
||||||
}
|
|
||||||
} //albums name
|
} //albums name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tableid = "#" + tableid;
|
tableid = "#" + tableid;
|
||||||
$(target).html(html);
|
$(target).html(html);
|
||||||
$(target).attr('data', uri);
|
$(target).attr('data', uri);
|
||||||
//retreive albumcovers
|
//retrieve albumcovers
|
||||||
for (i = 0; i < coversList.length; i++) {
|
for (i = 0; i < coversList.length; i++) {
|
||||||
getCover(coversList[i][0], target + '-cover-' + coversList[i][1], 'small');
|
getCover(coversList[i][0], target + '-cover-' + coversList[i][1], 'small');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,7 +129,7 @@ function setSongInfo(data) {
|
|||||||
}
|
}
|
||||||
if (data.track.album && data.track.album.name) {
|
if (data.track.album && data.track.album.name) {
|
||||||
$("#modalalbum").html('<a href="#" onclick="return showAlbum(\'' + data.track.album.uri + '\');">' + data.track.album.name + '</a>');
|
$("#modalalbum").html('<a href="#" onclick="return showAlbum(\'' + data.track.album.uri + '\');">' + data.track.album.name + '</a>');
|
||||||
getCover(data.track.album, '#infocover, #controlspopupimage', 'extralarge');
|
getCover(data.track.uri, '#infocover, #controlspopupimage', 'extralarge');
|
||||||
} else {
|
} else {
|
||||||
$("#modalalbum").html('');
|
$("#modalalbum").html('');
|
||||||
$("#infocover").attr('src', 'images/default_cover.png');
|
$("#infocover").attr('src', 'images/default_cover.png');
|
||||||
|
|||||||
@ -19,31 +19,65 @@ $(window).load(function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function getCover(album, images, size) {
|
function getCover(uri, images, size) {
|
||||||
var defUrl = 'images/default_cover.png';
|
var defUrl = 'images/default_cover.png';
|
||||||
$(images).attr('src', defUrl);
|
$(images).attr('src', defUrl);
|
||||||
if (!album) {
|
if (!uri) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var albumname = album.name || '';
|
|
||||||
var artistname = '';
|
mopidy.library.getImages({'uris': [uri]}).then(function(imageResults) {
|
||||||
if ( album.artists && (album.artists.length > 0) ) {
|
var uri = Object.keys(imageResults)[0];
|
||||||
artistname = album.artists[0].name;
|
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;
|
||||||
}
|
}
|
||||||
if (album.images && (album.images.length > 0) ) {
|
var albumname = track.album.name || '';
|
||||||
$(images).attr('src', album.images[0]);
|
var artistname = '';
|
||||||
} else {
|
if ( track.album.artists && (track.album.artists.length > 0) ) {
|
||||||
lastfm.album.getInfo( {artist: artistname, album: albumname},
|
// First look for the artist in the album
|
||||||
{ success: function(data){
|
artistname = track.album.artists[0].name;
|
||||||
for (var i = 0; i < data.album.image.length; i++) {
|
} else if (track.artists && (track.artists.length > 0) ) {
|
||||||
if ( data.album.image[i]['size'] == size) {
|
// Fallback to using artists for specific track
|
||||||
$(images).attr('src', data.album.image[i]['#text'] || defUrl);
|
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) {
|
function getArtistImage(nwartist, image, size) {
|
||||||
|
|||||||
@ -115,9 +115,9 @@ function processBrowseDir(resultArr) {
|
|||||||
if (resultArr[i].type == 'track') {
|
if (resultArr[i].type == 'track') {
|
||||||
//console.log(resultArr[i]);
|
//console.log(resultArr[i]);
|
||||||
mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultDict) {
|
mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultDict) {
|
||||||
var lookup_uri = Object.keys(resultDict)[0];
|
var lookupUri = Object.keys(resultDict)[0];
|
||||||
popupData[lookup_uri] = resultDict[lookup_uri][0];
|
popupData[lookupUri] = resultDict[lookupUri][0];
|
||||||
browseTracks.push(resultDict[lookup_uri][0]);
|
browseTracks.push(resultDict[lookupUri][0]);
|
||||||
}, console.error);
|
}, console.error);
|
||||||
child += '<li class="song albumli" id="browselisttracks-' + resultArr[i].uri + '">' +
|
child += '<li class="song albumli" id="browselisttracks-' + resultArr[i].uri + '">' +
|
||||||
'<a href="#" class="moreBtn" onclick="return popupTracks(event, \'' + uri + '\', \'' + resultArr[i].uri + '\', \'' + index + '\');">' +
|
'<a href="#" class="moreBtn" onclick="return popupTracks(event, \'' + uri + '\', \'' + resultArr[i].uri + '\', \'' + index + '\');">' +
|
||||||
@ -249,6 +249,6 @@ function processAlbumResults(resultArr) {
|
|||||||
$('#h_albumartist').html(artistname);
|
$('#h_albumartist').html(artistname);
|
||||||
$('#coverpopupalbumname').html(albumname);
|
$('#coverpopupalbumname').html(albumname);
|
||||||
$('#coverpopupartist').html(artistname);
|
$('#coverpopupartist').html(artistname);
|
||||||
getCover(resultArr[0].album, '#albumviewcover, #coverpopupimage', 'extralarge');
|
getCover(resultArr[0].uri, '#albumviewcover, #coverpopupimage', 'extralarge');
|
||||||
showLoading(false);
|
showLoading(false);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user