diff --git a/src/components.js b/src/components.js index 3f35e2e..37edd8f 100644 --- a/src/components.js +++ b/src/components.js @@ -32,7 +32,7 @@ export function makeSongItem(s, idx, list, { noArtistLink = false, noAlbumLink = if(s.starred && !s._starred) s._starred = true; el.className = 'song-item' + (S.queue[S.qIdx]?.id === s.id ? ' playing' : ''); const cv = coverUrl(s.coverArt, 60); - const artistParts = (s.artist || '').split(' / ').filter(Boolean); + const artistParts = (s.artist || '').split(/\s*(?:\/|•)\s*/).filter(Boolean); const artistHtml = artistParts.length ? artistParts.map((name, i) => { const aid = i === 0 ? (s.artistId || '') : ''; diff --git a/src/views.js b/src/views.js index 9191eb6..75d2955 100644 --- a/src/views.js +++ b/src/views.js @@ -422,8 +422,11 @@ export async function loadAlbumDetail(album) { album._fromArtist ? navigate('artist-detail', album._fromArtist) : navigate('albums'); document.getElementById('album-detail-name').textContent = album.name; const artistEl = document.getElementById('album-detail-artist'); - artistEl.textContent = album.artist || ''; - artistEl.onclick = () => { if(album.artistId) navigate('artist-detail', {id:album.artistId, name:album.artist}); }; + const albumArtistParts = (album.artist || '').split(/\s*(?:\/|•)\s*/).filter(Boolean); + artistEl.innerHTML = albumArtistParts.map((name, i) => { + const aid = i === 0 ? (album.artistId || '') : ''; + return `${esc(name)}`; + }).join(' / ') || ''; const cw = document.getElementById('album-cover-wrap'); const cv = coverUrl(album.coverArt, 300); cw.innerHTML = cv ? `` : '
💿
'; @@ -440,7 +443,7 @@ export async function loadAlbumDetail(album) { toast(`⬇ ${songs.length} Titel Download gestartet`); }; sl.innerHTML = ''; - songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noArtistLink: true, noAlbumLink: true }))); + songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noAlbumLink: true }))); } catch(e) { sl.innerHTML = `

${e.message}

`; } } @@ -492,7 +495,7 @@ export async function loadPlaylistDetail(pl) { playQueue(shuffled, 0); }; sl.innerHTML = ''; - songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noArtistLink: true }))); + songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs))); } catch(e) { sl.innerHTML = `

${e.message}

`; } }