Add methods for cache control to YoutubeThrottlingDecrypter.

This commit is contained in:
TobiGr 2021-07-27 20:31:20 +02:00
parent d13f531b6f
commit d70adfdb8f

View File

@ -11,9 +11,10 @@ import java.util.regex.Pattern;
/** /**
* <p> * <p>
* YouTube's media is protected with a cipher, which modifies the "n" query parameter of it's video playback urls. * YouTube's media is protected with a cipher,
* This class handles extracting that "n" query parameter, applying the cipher on it and returning the resulting url * which modifies the "n" query parameter of it's video playback urls.
* which is not throttled. * This class handles extracting that "n" query parameter,
* applying the cipher on it and returning the resulting url which is not throttled.
* </p> * </p>
* *
* <p> * <p>
@ -23,6 +24,12 @@ import java.util.regex.Pattern;
* <p> * <p>
* https://r5---sn-4g5ednsz.googlevideo.com/videoplayback?n=iHywZkMipkszqA&other=other * https://r5---sn-4g5ednsz.googlevideo.com/videoplayback?n=iHywZkMipkszqA&other=other
* </p> * </p>
* <br>
* <p>
* Decoding the "n" parameter is time intensive. For this reason, the results are cached.
* The cache can be cleared using {@link #clearCache()}
* </p>
*
*/ */
public class YoutubeThrottlingDecrypter { public class YoutubeThrottlingDecrypter {
@ -102,4 +109,18 @@ public class YoutubeThrottlingDecrypter {
final String newValue) { final String newValue) {
return url.replace(oldValue, newValue); return url.replace(oldValue, newValue);
} }
/**
* @return the number of the cached "n" query parameters.
*/
public static int getCacheSize() {
return nParams.size();
}
/**
* Clears all stored "n" query parameters.
*/
public static void clearCache() {
nParams.clear();
}
} }