Localize artist bios from last.fm

Using the current user's locale.

Signed-off-by: Peter Marheine <peter@taricorp.net>
master
Peter Marheine 7 years ago
parent dc14f35b17
commit 64846da360
  1. 5
      airsonic-main/src/main/java/org/airsonic/player/ajax/MultiService.java
  2. 7
      airsonic-main/src/main/java/org/airsonic/player/controller/SubsonicRESTController.java
  3. 12
      airsonic-main/src/main/java/org/airsonic/player/service/LastFmService.java

@ -62,9 +62,12 @@ public class MultiService {
private SettingsService settingsService;
public ArtistInfo getArtistInfo(int mediaFileId, int maxSimilarArtists, int maxTopSongs) {
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
UserSettings userSettings = settingsService.getUserSettings(securityService.getCurrentUsername(request));
MediaFile mediaFile = mediaFileService.getMediaFile(mediaFileId);
List<SimilarArtist> similarArtists = getSimilarArtists(mediaFileId, maxSimilarArtists);
ArtistBio artistBio = lastFmService.getArtistBio(mediaFile);
ArtistBio artistBio = lastFmService.getArtistBio(mediaFile, userSettings.getLocale());
List<TopSong> topSongs = getTopSongs(mediaFile, maxTopSongs);
return new ArtistInfo(similarArtists, artistBio, topSongs);

@ -431,7 +431,7 @@ public class SubsonicRESTController {
for (MediaFile similarArtist : similarArtists) {
result.getSimilarArtist().add(createJaxbArtist(similarArtist, username));
}
ArtistBio artistBio = lastFmService.getArtistBio(mediaFile);
ArtistBio artistBio = lastFmService.getArtistBio(mediaFile, getUserLocale(request));
if (artistBio != null) {
result.setBiography(artistBio.getBiography());
result.setMusicBrainzId(artistBio.getMusicBrainzId());
@ -468,7 +468,7 @@ public class SubsonicRESTController {
for (org.airsonic.player.domain.Artist similarArtist : similarArtists) {
result.getSimilarArtist().add(createJaxbArtist(new ArtistID3(), similarArtist, username));
}
ArtistBio artistBio = lastFmService.getArtistBio(artist);
ArtistBio artistBio = lastFmService.getArtistBio(artist, getUserLocale(request));
if (artistBio != null) {
result.setBiography(artistBio.getBiography());
result.setMusicBrainzId(artistBio.getMusicBrainzId());
@ -2402,6 +2402,9 @@ public class SubsonicRESTController {
return !players.isEmpty() ? players.get(0).getId() : null;
}
private Locale getUserLocale(HttpServletRequest request) {
return settingsService.getUserSettings(securityService.getCurrentUsername(request)).getLocale();
}
public enum ErrorCode {

@ -223,8 +223,8 @@ public class LastFmService {
* @param mediaFile The media file (song, album or artist).
* @return Artist bio.
*/
public ArtistBio getArtistBio(MediaFile mediaFile) {
return getArtistBio(getCanonicalArtistName(getArtistName(mediaFile)));
public ArtistBio getArtistBio(MediaFile mediaFile, Locale locale) {
return getArtistBio(getCanonicalArtistName(getArtistName(mediaFile)), locale);
}
/**
@ -233,8 +233,8 @@ public class LastFmService {
* @param artist The artist.
* @return Artist bio.
*/
public ArtistBio getArtistBio(org.airsonic.player.domain.Artist artist) {
return getArtistBio(getCanonicalArtistName(artist.getName()));
public ArtistBio getArtistBio(org.airsonic.player.domain.Artist artist, Locale locale) {
return getArtistBio(getCanonicalArtistName(artist.getName()), locale);
}
/**
@ -370,13 +370,13 @@ public class LastFmService {
}
private ArtistBio getArtistBio(String artistName) {
private ArtistBio getArtistBio(String artistName, Locale locale) {
try {
if (artistName == null) {
return null;
}
Artist info = Artist.getInfo(artistName, LAST_FM_KEY);
Artist info = Artist.getInfo(artistName, locale, null /* username */, LAST_FM_KEY);
if (info == null) {
return null;
}

Loading…
Cancel
Save