fix: lyrics not saved in new queue

This commit is contained in:
2025-10-04 16:04:46 -04:00
parent 9e75322a43
commit 8b3989e71f

View File

@@ -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 * Download a single track
*/ */
@@ -262,6 +300,11 @@ export class DeezerQueueManager {
await this.ensureCoverUrl(track); 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 // Get user data for license token
const userData = await deezerAPI.getUserData(); const userData = await deezerAPI.getUserData();
const licenseToken = userData.USER?.OPTIONS?.license_token; const licenseToken = userData.USER?.OPTIONS?.license_token;
@@ -405,6 +448,11 @@ export class DeezerQueueManager {
await this.ensureCoverUrl(track); 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 userData = await deezerAPI.getUserData();
const licenseToken = userData.USER?.OPTIONS?.license_token; const licenseToken = userData.USER?.OPTIONS?.license_token;