diff --git a/main/src/main/java/com/sedmelluq/discord/lavaplayer/track/playback/LocalAudioTrackExecutor.java b/main/src/main/java/com/sedmelluq/discord/lavaplayer/track/playback/LocalAudioTrackExecutor.java index 28eb79669..795b324dc 100644 --- a/main/src/main/java/com/sedmelluq/discord/lavaplayer/track/playback/LocalAudioTrackExecutor.java +++ b/main/src/main/java/com/sedmelluq/discord/lavaplayer/track/playback/LocalAudioTrackExecutor.java @@ -124,23 +124,26 @@ private void attemptProcess(TrackStateListener listener) { if (e.getMessage().contains("Not success status code: 403") && (lastRetry == -1 || lastRetry + RETRY_COOLDOWN <= System.currentTimeMillis()) && audioTrack.getSourceManager() instanceof YoutubeAudioSourceManager) { - lastRetry = System.currentTimeMillis(); - - log.debug("Detected 403, clearing cipher cache and retrying."); YoutubeAudioSourceManager sourceManager = (YoutubeAudioSourceManager) audioTrack.getSourceManager(); - DefaultYoutubeTrackDetailsLoader trackDetailsLoader = (DefaultYoutubeTrackDetailsLoader) sourceManager.getTrackDetailsLoader(); - DefaultYoutubeTrackDetailsLoader.CachedPlayerScript cachedScript = trackDetailsLoader.getCachedPlayerScript(); - // Clear cached scripts and ciphers. - if (cachedScript != null) { - ((YoutubeSignatureCipherManager) sourceManager.getSignatureResolver()).clearCache(cachedScript.getPlayerScriptUrl()); - trackDetailsLoader.clearCache(); - } + if (sourceManager.getTrackDetailsLoader() instanceof DefaultYoutubeTrackDetailsLoader) { + log.debug("Detected 403, clearing cipher cache and retrying."); + lastRetry = System.currentTimeMillis(); + + DefaultYoutubeTrackDetailsLoader trackDetailsLoader = (DefaultYoutubeTrackDetailsLoader) sourceManager.getTrackDetailsLoader(); + DefaultYoutubeTrackDetailsLoader.CachedPlayerScript cachedScript = trackDetailsLoader.getCachedPlayerScript(); - // Attempt to process again. - attemptProcess(listener); - return; + // Clear cached scripts and ciphers. + if (cachedScript != null) { + ((YoutubeSignatureCipherManager) sourceManager.getSignatureResolver()).clearCache(cachedScript.getPlayerScriptUrl()); + trackDetailsLoader.clearCache(); + } + + // Attempt to process again. + attemptProcess(listener); + return; + } } // Temporarily clear the interrupted status so it would not disrupt listener methods.