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; private SettingsService settingsService;
public ArtistInfo getArtistInfo(int mediaFileId, int maxSimilarArtists, int maxTopSongs) { 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); MediaFile mediaFile = mediaFileService.getMediaFile(mediaFileId);
List<SimilarArtist> similarArtists = getSimilarArtists(mediaFileId, maxSimilarArtists); List<SimilarArtist> similarArtists = getSimilarArtists(mediaFileId, maxSimilarArtists);
ArtistBio artistBio = lastFmService.getArtistBio(mediaFile); ArtistBio artistBio = lastFmService.getArtistBio(mediaFile, userSettings.getLocale());
List<TopSong> topSongs = getTopSongs(mediaFile, maxTopSongs); List<TopSong> topSongs = getTopSongs(mediaFile, maxTopSongs);
return new ArtistInfo(similarArtists, artistBio, topSongs); return new ArtistInfo(similarArtists, artistBio, topSongs);

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

@ -223,8 +223,8 @@ public class LastFmService {
* @param mediaFile The media file (song, album or artist). * @param mediaFile The media file (song, album or artist).
* @return Artist bio. * @return Artist bio.
*/ */
public ArtistBio getArtistBio(MediaFile mediaFile) { public ArtistBio getArtistBio(MediaFile mediaFile, Locale locale) {
return getArtistBio(getCanonicalArtistName(getArtistName(mediaFile))); return getArtistBio(getCanonicalArtistName(getArtistName(mediaFile)), locale);
} }
/** /**
@ -233,8 +233,8 @@ public class LastFmService {
* @param artist The artist. * @param artist The artist.
* @return Artist bio. * @return Artist bio.
*/ */
public ArtistBio getArtistBio(org.airsonic.player.domain.Artist artist) { public ArtistBio getArtistBio(org.airsonic.player.domain.Artist artist, Locale locale) {
return getArtistBio(getCanonicalArtistName(artist.getName())); 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 { try {
if (artistName == null) { if (artistName == null) {
return 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) { if (info == null) {
return null; return null;
} }

Loading…
Cancel
Save