diff --git a/lib/API/musify.dart b/lib/API/musify.dart index 4cbda418..c9cff377 100644 --- a/lib/API/musify.dart +++ b/lib/API/musify.dart @@ -664,10 +664,6 @@ Future getSong(String songId, bool isLive) async { unawaited(updateRecentlyPlayed(songId)); - if (playNextSongAutomatically.value) { - getSimilarSong(songId); - } - if (cachedUrl != null) { return cachedUrl; } @@ -676,7 +672,7 @@ Future getSong(String songId, bool isLive) async { return await getLiveStreamUrl(songId); } - return await getAudioUrl(songId, cacheKey); + return await getAudioUrl(songId); } catch (e, stackTrace) { logger.log('Error while getting song streaming URL', e, stackTrace); rethrow; @@ -690,12 +686,11 @@ Future getLiveStreamUrl(String songId) async { return streamInfo; } -Future getAudioUrl(String songId, String cacheKey) async { +Future getAudioUrl(String songId) async { final manifest = await _yt.videos.streamsClient.getManifest(songId); final audioQuality = selectAudioQuality(manifest.audioOnly.sortByBitrate()); final audioUrl = audioQuality.url.toString(); - addOrUpdateData('cache', cacheKey, audioUrl); return audioUrl; } diff --git a/lib/services/audio_service.dart b/lib/services/audio_service.dart index 8285fef2..4fa233b2 100644 --- a/lib/services/audio_service.dart +++ b/lib/services/audio_service.dart @@ -262,6 +262,10 @@ class MusifyAudioHandler extends BaseAudioHandler { await audioPlayer.setAudioSource(audioSource); await audioPlayer.play(); + + final cacheKey = 'song_${song['ytid']}_${audioQualitySetting.value}_url'; + if (!isOffline) addOrUpdateData('cache', cacheKey, songUrl); + if (playNextSongAutomatically.value) getSimilarSong(song['ytid']); } catch (e, stackTrace) { logger.log('Error playing song', e, stackTrace); }