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
|
* 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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user