Localize artist bios from last.fm
Using the current user's locale. Signed-off-by: Peter Marheine <peter@taricorp.net>
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
+5
-2
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user