feat: explicit metadata, lyrics embedding, E badge in global search

Backend:
- fetchLyrics() queries LRCLIB for plain + synced lyrics
- Synced lyrics saved as .lrc file (Navidrome reads these)
- Plain lyrics embedded via ffmpeg -metadata lyrics=
- ITUNESADVISORY=1 written for explicit tracks
- explicit flag passed through album/track download chain
- fetchItunesTracks + searchItunesAlbumTracks use country=us&explicit=Yes

Frontend:
- explicit:true sent in download payload from iTunes track data
- "E" badge shown on explicit tracks in global search track list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-04-26 18:12:53 +02:00
1 parent 3c5048f017
commit 93b859bf0e
4 files changed
+41 -10

No files matched your search

+2 -1
View File
@@ -123,7 +123,8 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.gtrack-item:hover{background:var(--surface)}
.gtrack-art{width:52px;height:52px;border-radius:6px;overflow:hidden;background:var(--surface2);flex-shrink:0}
.gtrack-art img{width:100%;height:100%;object-fit:cover}
.gtrack-info .gtrack-title{font-size:14px;font-weight:600}
.gtrack-info .gtrack-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:5px}
.explicit-badge{display:inline-flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;width:13px;height:13px;border-radius:2px;background:var(--text3);color:var(--bg);flex-shrink:0;letter-spacing:0}
.gtrack-info .gtrack-sub{font-size:12px;color:var(--text2);margin-top:2px}
.gtrack-actions{display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .15s}
.gtrack-item:hover .gtrack-actions{opacity:1}