feat(unreleased): lyrics on unreleased
This commit is contained in:
parent
8674aba673
commit
f513ce27e4
4 changed files with 34 additions and 8 deletions
4
bun.lock
4
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=="],
|
||||
|
||||
|
|
|
|||
30
js/lyrics.js
30
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 = `<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());
|
||||
|
|
|
|||
2
js/ui.js
2
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');
|
||||
}
|
||||
|
||||
|
|
|
|||
6
package-lock.json
generated
6
package-lock.json
generated
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in a new issue