feat: artist in filename, hide album=title subtitle, remove title hover
Naming convention (download + edit-metadata):
Before: {01 - }Title.ext
After: {01 - }Artist1, Artist2 - Title.ext
- ytdlp.js: builds fileBase with artist prefix; findExistingTrack checks
both new and old format so existing files aren't re-downloaded
- metadata.js: findExistingTrack accepts optional safeArtist param
- novasonic-server.js: file rename on title edit now includes artist
(falls back to Navidrome's stored artist if not provided in body)
Song list subtitle: hide album name when album === title (singles where
the album is named after the track appear to duplicate the title)
Player bar: removed .player-title:hover underline/colour effect
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
2dd3d7c7e5
commit
7ba5b8ce9a
5 files changed
+26
-17
No files matched your search
@@ -47,9 +47,12 @@ async function downloadArtwork(url, dir) {
|
||||
|
||||
const AUDIO_EXTS = ['mp3', 'flac', 'opus', 'm4a', 'ogg', 'wav'];
|
||||
|
||||
function findExistingTrack(dir, trackPrefix, safeTitle) {
|
||||
return AUDIO_EXTS
|
||||
.map(ext => path.join(dir, `${trackPrefix}${safeTitle}.${ext}`))
|
||||
function findExistingTrack(dir, trackPrefix, safeTitle, safeArtist) {
|
||||
// Check new format "{prefix}{artist} - {title}.ext" first, then old format "{prefix}{title}.ext"
|
||||
const names = safeArtist
|
||||
? [`${trackPrefix}${safeArtist} - ${safeTitle}`, `${trackPrefix}${safeTitle}`]
|
||||
: [`${trackPrefix}${safeTitle}`];
|
||||
return AUDIO_EXTS.flatMap(ext => names.map(n => path.join(dir, `${n}.${ext}`)))
|
||||
.find(f => fs.existsSync(f)) || null;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user