From f513ce27e4a90b0250733d475aafb9b3edffae04 Mon Sep 17 00:00:00 2001 From: Samidy Date: Fri, 13 Mar 2026 02:58:57 +0300 Subject: [PATCH] feat(unreleased): lyrics on unreleased --- bun.lock | 4 ++-- js/lyrics.js | 30 +++++++++++++++++++++++++++--- js/ui.js | 2 +- package-lock.json | 6 ++++-- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index 75cff93..0017fe0 100644 --- a/bun.lock +++ b/bun.lock @@ -10,7 +10,7 @@ "@ffmpeg/util": "^0.12.2", "@kawarp/core": "^1.1.1", "@neutralinojs/lib": "^6.5.0", - "@uimaxbai/am-lyrics": "^1.1.1", + "@uimaxbai/am-lyrics": "^1.1.2", "appwrite": "^23.0.0", "butterchurn": "^2.6.7", "butterchurn-presets": "^2.4.7", @@ -546,7 +546,7 @@ "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], - "@uimaxbai/am-lyrics": ["@uimaxbai/am-lyrics@1.1.1", "", { "dependencies": { "@babel/runtime": "^7.27.6", "lit": "^3.1.4" }, "peerDependencies": { "@lit/react": "^1.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@lit/react", "react"] }, "sha512-U4qnMK2gWqfIWUwH9Wm4r5PGeCqmvmHVNCeYOTsSUIAMMZd3LBDyCZL/dAs5A4VaHxJecCyy2dy94IN4zH5gzg=="], + "@uimaxbai/am-lyrics": ["@uimaxbai/am-lyrics@1.1.2", "", { "dependencies": { "@babel/runtime": "^7.27.6", "lit": "^3.1.4" }, "peerDependencies": { "@lit/react": "^1.0.0", "react": ">=17.0.0" }, "optionalPeers": ["@lit/react", "react"] }, "sha512-M7LxiE6nzSoPpKPO9qX7msy7SRRU5Hn4Bbu05uj//BeSeuPmVT5+ii5wOyeO5npT99IezcKr+MvJaUqArfsbvw=="], "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], diff --git a/js/lyrics.js b/js/lyrics.js index 48db23b..c03eecd 100644 --- a/js/lyrics.js +++ b/js/lyrics.js @@ -22,6 +22,21 @@ function trackHasAsianText(track) { const artist = getTrackArtists(track) || ''; return containsAsianText(title) || containsAsianText(artist); } + +function cleanTrackerSearch(text) { + if (!text) return ''; + // chud emojis will NOT be tolerated in my precious genius lyrics worker + let cleaned = text.replace(/[\p{Extended_Pictographic}\p{Emoji_Component}\p{Emoji_Presentation}\p{Emoji_Modifier}\p{Emoji_Modifier_Base}\p{Symbol}]/gu, ''); + + cleaned = cleaned.replace(/[\u2600-\u27BF\u2B50\u2B06\u2194\u21AA\u2934\u203C\u2049\u3030\u303D\u3297\u3299]/g, ''); + + cleaned = cleaned.replace(/\[v\s*\d+\s*\]/gi, ''); + + cleaned = cleaned.replace(/\s+/g, ' '); + + return cleaned.trim(); +} + const SVG_GENIUS_INACTIVE = ``; class GeniusManager { @@ -943,13 +958,22 @@ async function renderLyricsComponent(container, track, audioPlayer, lyricsManage const durationMs = track.duration ? Math.round(track.duration * 1000) : undefined; const isrc = track.isrc || ''; + const isTracker = track.isTracker || (track.id && String(track.id).startsWith('tracker-')); + let queryTitle = title; + let queryArtist = artist; + + if (isTracker) { + queryTitle = cleanTrackerSearch(title); + queryArtist = cleanTrackerSearch(artist); + } + container.innerHTML = ''; const amLyrics = document.createElement('am-lyrics'); - amLyrics.setAttribute('song-title', title); - amLyrics.setAttribute('song-artist', artist); + amLyrics.setAttribute('song-title', queryTitle); + amLyrics.setAttribute('song-artist', queryArtist); if (album) amLyrics.setAttribute('song-album', album); if (durationMs) amLyrics.setAttribute('song-duration', durationMs); - amLyrics.setAttribute('query', `${title} ${artist}`.trim()); + amLyrics.setAttribute('query', `${queryTitle} ${queryArtist}`.trim()); if (isrc) amLyrics.setAttribute('isrc', isrc); amLyrics.setAttribute('highlight-color', getLyricsHighlightColor()); diff --git a/js/ui.js b/js/ui.js index 52c2d85..f589c9b 100644 --- a/js/ui.js +++ b/js/ui.js @@ -283,7 +283,7 @@ export class UIRenderer { } } if (lyricsBtn) { - if (isLocal || isTracker) lyricsBtn.style.display = 'none'; + if (isLocal) lyricsBtn.style.display = 'none'; else lyricsBtn.style.removeProperty('display'); } diff --git a/package-lock.json b/package-lock.json index bf90722..b6a52a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@ffmpeg/util": "^0.12.2", "@kawarp/core": "^1.1.1", "@neutralinojs/lib": "^6.5.0", - "@uimaxbai/am-lyrics": "^1.1.1", + "@uimaxbai/am-lyrics": "^1.1.2", "appwrite": "^23.0.0", "butterchurn": "^2.6.7", "butterchurn-presets": "^2.4.7", @@ -3797,7 +3797,9 @@ "license": "MIT" }, "node_modules/@uimaxbai/am-lyrics": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@uimaxbai/am-lyrics/-/am-lyrics-1.1.2.tgz", + "integrity": "sha512-M7LxiE6nzSoPpKPO9qX7msy7SRRU5Hn4Bbu05uj//BeSeuPmVT5+ii5wOyeO5npT99IezcKr+MvJaUqArfsbvw==", "license": "MPL-2.0", "dependencies": { "@babel/runtime": "^7.27.6",