feat(unreleased): lyrics on unreleased

This commit is contained in:
Samidy 2026-03-13 02:58:57 +03:00
parent 8674aba673
commit f513ce27e4
4 changed files with 34 additions and 8 deletions

View file

@ -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=="],

View file

@ -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 = `<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" style="opacity: 0.7;"><path d="M12 24c6.627 0 12-5.373 12-12S18.627 0 12 0 0 5.373 0 12s5.373 12 12 12z" /><path d="M6.3 6.3h11.4v11.4H6.3z" fill="var(--card)"/></svg>`;
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());

View file

@ -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');
}

6
package-lock.json generated
View file

@ -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",