Add final and adjust utils class name
This commit is contained in:
parent
60794aea31
commit
48d897e6ad
|
@ -3,7 +3,7 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.utils.JavaScript;
|
import org.schabi.newpipe.extractor.utils.JavaScript;
|
||||||
import org.schabi.newpipe.extractor.utils.Parser;
|
import org.schabi.newpipe.extractor.utils.Parser;
|
||||||
import org.schabi.newpipe.extractor.utils.StringUtil;
|
import org.schabi.newpipe.extractor.utils.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -81,7 +81,7 @@ public class YoutubeThrottlingDecrypter {
|
||||||
|
|
||||||
private String parseWithParenthesisMatching(final String playerJsCode, final String functionName) {
|
private String parseWithParenthesisMatching(final String playerJsCode, final String functionName) {
|
||||||
final String functionBase = functionName + "=function";
|
final String functionBase = functionName + "=function";
|
||||||
return functionBase + StringUtil.matchToClosingParenthesis(playerJsCode, functionBase) + ";";
|
return functionBase + StringUtils.matchToClosingParenthesis(playerJsCode, functionBase) + ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
private String parseWithRegex(final String playerJsCode, final String functionName) throws Parser.RegexException {
|
private String parseWithRegex(final String playerJsCode, final String functionName) throws Parser.RegexException {
|
||||||
|
|
|
@ -79,13 +79,13 @@ public class Parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isMatch(String pattern, String input) {
|
public static boolean isMatch(String pattern, String input) {
|
||||||
Pattern pat = Pattern.compile(pattern);
|
final Pattern pat = Pattern.compile(pattern);
|
||||||
Matcher mat = pat.matcher(input);
|
final Matcher mat = pat.matcher(input);
|
||||||
return mat.find();
|
return mat.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isMatch(Pattern pattern, String input) {
|
public static boolean isMatch(Pattern pattern, String input) {
|
||||||
Matcher mat = pattern.matcher(input);
|
final Matcher mat = pattern.matcher(input);
|
||||||
return mat.find();
|
return mat.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
package org.schabi.newpipe.extractor.utils;
|
package org.schabi.newpipe.extractor.utils;
|
||||||
|
|
||||||
import edu.umd.cs.findbugs.annotations.NonNull;
|
|
||||||
|
|
||||||
public class StringUtil {
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
private StringUtil() {
|
public class StringUtils {
|
||||||
|
|
||||||
|
private StringUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string The string to search in
|
* @param string The string to search in
|
||||||
* @param start A string from which to start searching.
|
* @param start A string from which to start searching.
|
||||||
* @return A substring where each '{' matches a '}'
|
* @return A substring where each '{' matches a '}'
|
||||||
* @throws IndexOutOfBoundsException If {@ string} does not contain {@code start}
|
* @throws IndexOutOfBoundsException If {@code string} does not contain {@code start}
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@Nonnull
|
||||||
public static String matchToClosingParenthesis(@NonNull final String string, @NonNull final String start) {
|
public static String matchToClosingParenthesis(@Nonnull final String string, @Nonnull final String start) {
|
||||||
int startIndex = string.indexOf(start);
|
int startIndex = string.indexOf(start);
|
||||||
if (startIndex < 0) {
|
if (startIndex < 0) {
|
||||||
throw new IndexOutOfBoundsException();
|
throw new IndexOutOfBoundsException();
|
|
@ -23,11 +23,11 @@ public class YoutubeThrottlingDecrypterTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testExtractFunction__success() throws ParsingException {
|
public void testExtractFunction__success() throws ParsingException {
|
||||||
String[] videoIds = {"jE1USQrs1rw", "CqxjzfudGAc", "goH-9MfQI7w", "KYIdr_7H5Yw", "J1WeqmGbYeI"};
|
final String[] videoIds = {"jE1USQrs1rw", "CqxjzfudGAc", "goH-9MfQI7w", "KYIdr_7H5Yw", "J1WeqmGbYeI"};
|
||||||
|
|
||||||
final String encryptedUrl = "https://r6---sn-4g5ednek.googlevideo.com/videoplayback?expire=1626562120&ei=6AnzYO_YBpql1gLGkb_IBQ&ip=127.0.0.1&id=o-ANhBEf36Z5h-8U9DDddtPDqtS0ZNwf0XJAAigudKI2uI&itag=278&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&source=youtube&requiressl=yes&vprv=1&mime=video%2Fwebm&ns=TvecOReN0vPuXb3j_zq157IG&gir=yes&clen=2915100&dur=270.203&lmt=1608157174907785&keepalive=yes&fexp=24001373,24007246&c=WEB&txp=5535432&n=N9BWSTFT7vvBJrvQ&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&alr=yes&sig=AOq0QJ8wRQIgW6XnUDKPDSxiT0_KE_tDDMpcaCJl2Un5p0Fu9qZNQGkCIQDWxsDHi_s2BEmRqIbd1C5g_gzfihB7RZLsScKWNMwzzA%3D%3D&cpn=9r2yt3BqcYmeb2Yu&cver=2.20210716.00.00&redirect_counter=1&cm2rm=sn-4g5ezy7s&cms_redirect=yes&mh=Y5&mm=34&mn=sn-4g5ednek&ms=ltu&mt=1626540524&mv=m&mvi=6&pl=43&lsparams=mh,mm,mn,ms,mv,mvi,pl&lsig=AG3C_xAwRQIhAIUzxTn9Vw1-vm-_7OQ5-0h1M6AZsY9Bx1FlCCTeMICzAiADtGggbn4Znsrh2EnvyOsGnYdRGcbxn4mW9JMOQiInDQ%3D%3D&range=259165-480735&rn=11&rbuf=20190";
|
final String encryptedUrl = "https://r6---sn-4g5ednek.googlevideo.com/videoplayback?expire=1626562120&ei=6AnzYO_YBpql1gLGkb_IBQ&ip=127.0.0.1&id=o-ANhBEf36Z5h-8U9DDddtPDqtS0ZNwf0XJAAigudKI2uI&itag=278&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278&source=youtube&requiressl=yes&vprv=1&mime=video%2Fwebm&ns=TvecOReN0vPuXb3j_zq157IG&gir=yes&clen=2915100&dur=270.203&lmt=1608157174907785&keepalive=yes&fexp=24001373,24007246&c=WEB&txp=5535432&n=N9BWSTFT7vvBJrvQ&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&alr=yes&sig=AOq0QJ8wRQIgW6XnUDKPDSxiT0_KE_tDDMpcaCJl2Un5p0Fu9qZNQGkCIQDWxsDHi_s2BEmRqIbd1C5g_gzfihB7RZLsScKWNMwzzA%3D%3D&cpn=9r2yt3BqcYmeb2Yu&cver=2.20210716.00.00&redirect_counter=1&cm2rm=sn-4g5ezy7s&cms_redirect=yes&mh=Y5&mm=34&mn=sn-4g5ednek&ms=ltu&mt=1626540524&mv=m&mvi=6&pl=43&lsparams=mh,mm,mn,ms,mv,mvi,pl&lsig=AG3C_xAwRQIhAIUzxTn9Vw1-vm-_7OQ5-0h1M6AZsY9Bx1FlCCTeMICzAiADtGggbn4Znsrh2EnvyOsGnYdRGcbxn4mW9JMOQiInDQ%3D%3D&range=259165-480735&rn=11&rbuf=20190";
|
||||||
|
|
||||||
for (String videoId : videoIds) {
|
for (final String videoId : videoIds) {
|
||||||
try {
|
try {
|
||||||
final String decryptedUrl = new YoutubeThrottlingDecrypter(videoId).apply(encryptedUrl);
|
final String decryptedUrl = new YoutubeThrottlingDecrypter(videoId).apply(encryptedUrl);
|
||||||
assertNotEquals(encryptedUrl, decryptedUrl);
|
assertNotEquals(encryptedUrl, decryptedUrl);
|
||||||
|
|
Loading…
Reference in New Issue