Skip to content

Commit d6132a9

Browse files
authored
Merge pull request #1076 from AudricV/yt-fix-throttling-parameter-regex
[YouTube] Support multiple declarations for throttling parameter function name array
2 parents d961d34 + 4e22c5e commit d6132a9

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ public final class YoutubeThrottlingDecrypter {
4848
private static final String DECRYPT_FUNCTION_BODY_REGEX =
4949
"=\\s*function([\\S\\s]*?\\}\\s*return [\\w$]+?\\.join\\(\"\"\\)\\s*\\};)";
5050

51+
private static final String DECRYPT_FUNCTION_ARRAY_OBJECT_TYPE_DECLARATION_REGEX = "var ";
52+
private static final String FUNCTION_NAMES_IN_DECRYPT_ARRAY_REGEX = "\\s*=\\s*\\[(.+?)][;,]";
53+
5154
private static final Map<String, String> N_PARAMS_CACHE = new HashMap<>();
5255
private static String decryptFunction;
5356
private static String decryptFunctionName;
@@ -117,7 +120,8 @@ private static String parseDecodeFunctionName(final String playerJsCode)
117120

118121
final int arrayNum = Integer.parseInt(matcher.group(2));
119122
final Pattern arrayPattern = Pattern.compile(
120-
"var " + Pattern.quote(functionName) + "\\s*=\\s*\\[(.+?)];");
123+
DECRYPT_FUNCTION_ARRAY_OBJECT_TYPE_DECLARATION_REGEX + Pattern.quote(functionName)
124+
+ FUNCTION_NAMES_IN_DECRYPT_ARRAY_REGEX);
121125
final String arrayStr = Parser.matchGroup1(arrayPattern, playerJsCode);
122126
final String[] names = arrayStr.split(",");
123127
return names[arrayNum];

0 commit comments

Comments
 (0)