Skip to content

Commit 2967d1a

Browse files
committed
[YouTube] Compile YoutubeThrottlingDecrypter pattern statically
1 parent 1c78976 commit 2967d1a

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeThrottlingDecrypter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333
*/
3434
public class YoutubeThrottlingDecrypter {
3535

36-
private static final String N_PARAM_REGEX = "[&?]n=([^&]+)";
36+
private static final Pattern N_PARAM_PATTERN = Pattern.compile("[&?]n=([^&]+)");
37+
private static final Pattern FUNCTION_NAME_PATTERN = Pattern.compile(
38+
"b=a\\.get\\(\"n\"\\)\\)&&\\(b=(\\w+)\\(b\\),a\\.set\\(\"n\",b\\)");
39+
3740
private static final Map<String, String> nParams = new HashMap<>();
3841

3942
private final String functionName;
@@ -62,9 +65,7 @@ public YoutubeThrottlingDecrypter() throws ParsingException {
6265

6366
private String parseDecodeFunctionName(final String playerJsCode)
6467
throws Parser.RegexException {
65-
Pattern pattern = Pattern.compile(
66-
"b=a\\.get\\(\"n\"\\)\\)&&\\(b=(\\w+)\\(b\\),a\\.set\\(\"n\",b\\)");
67-
return Parser.matchGroup1(pattern, playerJsCode);
68+
return Parser.matchGroup1(FUNCTION_NAME_PATTERN, playerJsCode);
6869
}
6970

7071
@Nonnull
@@ -86,12 +87,11 @@ public String apply(final String url) throws Parser.RegexException {
8687
}
8788

8889
private boolean containsNParam(final String url) {
89-
return Parser.isMatch(N_PARAM_REGEX, url);
90+
return Parser.isMatch(N_PARAM_PATTERN, url);
9091
}
9192

9293
private String parseNParam(final String url) throws Parser.RegexException {
93-
Pattern nValuePattern = Pattern.compile(N_PARAM_REGEX);
94-
return Parser.matchGroup1(nValuePattern, url);
94+
return Parser.matchGroup1(N_PARAM_PATTERN, url);
9595
}
9696

9797
private String decryptNParam(final String nParam) {

extractor/src/main/java/org/schabi/newpipe/extractor/utils/Parser.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public static boolean isMatch(String pattern, String input) {
8484
return mat.find();
8585
}
8686

87+
public static boolean isMatch(Pattern pattern, String input) {
88+
Matcher mat = pattern.matcher(input);
89+
return mat.find();
90+
}
91+
8792
public static Map<String, String> compatParseMap(final String input) throws UnsupportedEncodingException {
8893
Map<String, String> map = new HashMap<>();
8994
for (String arg : input.split("&")) {

0 commit comments

Comments
 (0)