mirror of
https://github.com/markuryy/shark.git
synced 2025-12-12 11:41:02 +00:00
fix: lyrics not saved in new queue
This commit is contained in:
@@ -239,6 +239,44 @@ export class DeezerQueueManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure track has lyrics by fetching if needed
|
||||
* Reuses the same logic as addToQueue for consistency
|
||||
*/
|
||||
private async ensureLyrics(track: DeezerTrack): Promise<void> {
|
||||
// Skip if already has lyrics
|
||||
if (track.lyrics) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Fetch lyrics from Deezer
|
||||
try {
|
||||
const lyricsData = await deezerAPI.getLyrics(track.id.toString());
|
||||
|
||||
if (lyricsData) {
|
||||
// Parse LRC format (synced lyrics)
|
||||
let syncLrc = '';
|
||||
if (lyricsData.LYRICS_SYNC_JSON) {
|
||||
for (const line of lyricsData.LYRICS_SYNC_JSON) {
|
||||
const text = line.line || '';
|
||||
const timestamp = line.lrc_timestamp || '[00:00.00]';
|
||||
syncLrc += `${timestamp}${text}\n`;
|
||||
}
|
||||
}
|
||||
|
||||
track.lyrics = {
|
||||
sync: syncLrc || undefined,
|
||||
unsync: lyricsData.LYRICS_TEXT || undefined,
|
||||
syncID3: undefined
|
||||
};
|
||||
|
||||
console.log(`[DeezerQueueManager] Fetched lyrics for "${track.title}"`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(`[DeezerQueueManager] Could not fetch lyrics for track "${track.title}":`, error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Download a single track
|
||||
*/
|
||||
@@ -262,6 +300,11 @@ export class DeezerQueueManager {
|
||||
await this.ensureCoverUrl(track);
|
||||
}
|
||||
|
||||
// Ensure track has lyrics if lyrics are enabled
|
||||
if (appSettings.embedLyrics || appSettings.saveLrcFile) {
|
||||
await this.ensureLyrics(track);
|
||||
}
|
||||
|
||||
// Get user data for license token
|
||||
const userData = await deezerAPI.getUserData();
|
||||
const licenseToken = userData.USER?.OPTIONS?.license_token;
|
||||
@@ -405,6 +448,11 @@ export class DeezerQueueManager {
|
||||
await this.ensureCoverUrl(track);
|
||||
}
|
||||
|
||||
// Ensure track has lyrics if lyrics are enabled
|
||||
if (appSettings.embedLyrics || appSettings.saveLrcFile) {
|
||||
await this.ensureLyrics(track);
|
||||
}
|
||||
|
||||
const userData = await deezerAPI.getUserData();
|
||||
const licenseToken = userData.USER?.OPTIONS?.license_token;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user