Skip to content

Commit

Permalink
Fix ClassCastException if not using default Youtube track details loader
Browse files Browse the repository at this point in the history
  • Loading branch information
Demeng7215 authored and Demeng7215 committed May 31, 2021
1 parent 4947594 commit 29eecb1
Showing 1 changed file with 16 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 29eecb1

Please sign in to comment.