fix(lastfm): format multiple artists with ampersands for scrobbling
This commit is contained in:
parent
13627cdd61
commit
4ca1923f15
1 changed files with 18 additions and 3 deletions
21
js/lastfm.js
21
js/lastfm.js
|
|
@ -50,6 +50,21 @@ export class LastFMScrobbler {
|
||||||
return !!this.sessionKey;
|
return !!this.sessionKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getScrobbleArtist(track) {
|
||||||
|
if (!track) return 'Unknown Artist';
|
||||||
|
let artistName = 'Unknown Artist';
|
||||||
|
|
||||||
|
if (track.artists && track.artists.length > 0) {
|
||||||
|
artistName = track.artists.map((a) => (typeof a === 'string' ? a : a.name || a)).join(', ');
|
||||||
|
} else {
|
||||||
|
artistName = track.artist?.name || track.artist || 'Unknown Artist';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof artistName !== 'string') artistName = 'Unknown Artist';
|
||||||
|
|
||||||
|
return artistName.replace(/, /g, ' & ');
|
||||||
|
}
|
||||||
|
|
||||||
async generateSignature(params) {
|
async generateSignature(params) {
|
||||||
const filteredParams = { ...params };
|
const filteredParams = { ...params };
|
||||||
delete filteredParams.format;
|
delete filteredParams.format;
|
||||||
|
|
@ -154,7 +169,7 @@ export class LastFMScrobbler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
artist: track.artists?.[0]?.name || track.artist?.name || 'Unknown Artist',
|
artist: this._getScrobbleArtist(track),
|
||||||
track: track.title,
|
track: track.title,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -203,7 +218,7 @@ export class LastFMScrobbler {
|
||||||
const timestamp = Math.floor(Date.now() / 1000);
|
const timestamp = Math.floor(Date.now() / 1000);
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
artist: this.currentTrack.artists?.[0]?.name || this.currentTrack.artist?.name || 'Unknown Artist',
|
artist: this._getScrobbleArtist(this.currentTrack),
|
||||||
track: this.currentTrack.title,
|
track: this.currentTrack.title,
|
||||||
timestamp: timestamp,
|
timestamp: timestamp,
|
||||||
};
|
};
|
||||||
|
|
@ -234,7 +249,7 @@ export class LastFMScrobbler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
artist: track.artists?.[0]?.name || track.artist?.name || 'Unknown Artist',
|
artist: this._getScrobbleArtist(track),
|
||||||
track: track.title,
|
track: track.title,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue