fix: filter albums and tracks by artist ID to prevent showing wrong same-name artists
This commit is contained in:
parent
3ecaa3c74a
commit
fbe101050a
1 changed files with 11 additions and 2 deletions
13
js/api.js
13
js/api.js
|
|
@ -1073,11 +1073,11 @@ export class LosslessAPI {
|
||||||
entries.forEach((entry) => scan(entry, visited));
|
entries.forEach((entry) => scan(entry, visited));
|
||||||
scan(primaryData, visited);
|
scan(primaryData, visited);
|
||||||
|
|
||||||
|
const numericArtistId = Number(artistId);
|
||||||
if (!options.lightweight) {
|
if (!options.lightweight) {
|
||||||
try {
|
try {
|
||||||
const videoSearch = await this.searchVideos(artist.name);
|
const videoSearch = await this.searchVideos(artist.name);
|
||||||
if (videoSearch && videoSearch.items) {
|
if (videoSearch && videoSearch.items) {
|
||||||
const numericArtistId = Number(artistId);
|
|
||||||
for (const item of videoSearch.items) {
|
for (const item of videoSearch.items) {
|
||||||
const itemArtistId = item.artist?.id;
|
const itemArtistId = item.artist?.id;
|
||||||
const matchesArtist =
|
const matchesArtist =
|
||||||
|
|
@ -1094,7 +1094,11 @@ export class LosslessAPI {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const rawReleases = Array.from(albumMap.values());
|
const rawReleases = Array.from(albumMap.values()).filter((album) => {
|
||||||
|
const albumArtistId = album.artist?.id;
|
||||||
|
return albumArtistId === numericArtistId ||
|
||||||
|
(Array.isArray(album.artists) && album.artists.some((a) => a.id === numericArtistId));
|
||||||
|
});
|
||||||
const allReleases = this.deduplicateAlbums(rawReleases).sort(
|
const allReleases = this.deduplicateAlbums(rawReleases).sort(
|
||||||
(a, b) => new Date(b.releaseDate || 0) - new Date(a.releaseDate || 0)
|
(a, b) => new Date(b.releaseDate || 0) - new Date(a.releaseDate || 0)
|
||||||
);
|
);
|
||||||
|
|
@ -1103,6 +1107,11 @@ export class LosslessAPI {
|
||||||
const albums = allReleases.filter((a) => !eps.includes(a));
|
const albums = allReleases.filter((a) => !eps.includes(a));
|
||||||
|
|
||||||
const topTracks = Array.from(trackMap.values())
|
const topTracks = Array.from(trackMap.values())
|
||||||
|
.filter((track) => {
|
||||||
|
const trackArtistId = track.artist?.id;
|
||||||
|
return trackArtistId === numericArtistId ||
|
||||||
|
(Array.isArray(track.artists) && track.artists.some((a) => a.id === numericArtistId));
|
||||||
|
})
|
||||||
.sort((a, b) => (b.popularity || 0) - (a.popularity || 0))
|
.sort((a, b) => (b.popularity || 0) - (a.popularity || 0))
|
||||||
.slice(0, 15);
|
.slice(0, 15);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue