Improve tests and randomness
- Use the existing RNG inside YoutubeParsingHelper - Deduplicated test-setup for YouTube tests - Minor improvements
This commit is contained in:
parent
52376949e5
commit
349ba8db7f
|
@ -1,3 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Created by Christian Schabesberger on 02.03.16.
|
||||||
|
*
|
||||||
|
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
|
||||||
|
* YoutubeParsingHelper.java is part of NewPipe Extractor.
|
||||||
|
*
|
||||||
|
* NewPipe Extractor is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* NewPipe Extractor is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with NewPipe Extractor. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.NewPipe.getDownloader;
|
import static org.schabi.newpipe.extractor.NewPipe.getDownloader;
|
||||||
|
@ -7,7 +27,6 @@ import static org.schabi.newpipe.extractor.utils.Utils.HTTPS;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
|
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.getStringResultFromRegexArray;
|
import static org.schabi.newpipe.extractor.utils.Utils.getStringResultFromRegexArray;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.randomStringFromAlphabet;
|
|
||||||
|
|
||||||
import com.grack.nanojson.JsonArray;
|
import com.grack.nanojson.JsonArray;
|
||||||
import com.grack.nanojson.JsonBuilder;
|
import com.grack.nanojson.JsonBuilder;
|
||||||
|
@ -29,6 +48,7 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
||||||
import org.schabi.newpipe.extractor.stream.Description;
|
import org.schabi.newpipe.extractor.stream.Description;
|
||||||
import org.schabi.newpipe.extractor.utils.JsonUtils;
|
import org.schabi.newpipe.extractor.utils.JsonUtils;
|
||||||
import org.schabi.newpipe.extractor.utils.Parser;
|
import org.schabi.newpipe.extractor.utils.Parser;
|
||||||
|
import org.schabi.newpipe.extractor.utils.RandomStringFromAlphabetGenerator;
|
||||||
import org.schabi.newpipe.extractor.utils.Utils;
|
import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -37,6 +57,7 @@ import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.SecureRandom;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.time.ZoneOffset;
|
import java.time.ZoneOffset;
|
||||||
|
@ -54,26 +75,6 @@ import java.util.Random;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
/*
|
|
||||||
* Created by Christian Schabesberger on 02.03.16.
|
|
||||||
*
|
|
||||||
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
|
|
||||||
* YoutubeParsingHelper.java is part of NewPipe Extractor.
|
|
||||||
*
|
|
||||||
* NewPipe Extractor is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* NewPipe Extractor is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with NewPipe Extractor. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public final class YoutubeParsingHelper {
|
public final class YoutubeParsingHelper {
|
||||||
|
|
||||||
private YoutubeParsingHelper() {
|
private YoutubeParsingHelper() {
|
||||||
|
@ -83,11 +84,6 @@ public final class YoutubeParsingHelper {
|
||||||
public static final String CPN = "cpn";
|
public static final String CPN = "cpn";
|
||||||
public static final String VIDEO_ID = "videoId";
|
public static final String VIDEO_ID = "videoId";
|
||||||
|
|
||||||
/**
|
|
||||||
* Seed that will be used for video tests, in order to mock video requests.
|
|
||||||
*/
|
|
||||||
private static final long SEED_FOR_VIDEOS_TESTS = 3000;
|
|
||||||
|
|
||||||
private static final String HARDCODED_CLIENT_VERSION = "2.20220114.01.00";
|
private static final String HARDCODED_CLIENT_VERSION = "2.20220114.01.00";
|
||||||
private static final String HARDCODED_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
private static final String HARDCODED_KEY = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8";
|
||||||
|
|
||||||
|
@ -122,7 +118,7 @@ public final class YoutubeParsingHelper {
|
||||||
private static final String CONTENT_PLAYBACK_NONCE_ALPHABET =
|
private static final String CONTENT_PLAYBACK_NONCE_ALPHABET =
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
||||||
|
|
||||||
private static Random numberGenerator = new Random();
|
private static Random numberGenerator = new SecureRandom();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code PENDING+} means that the user did not yet submit their choices.
|
* {@code PENDING+} means that the user did not yet submit their choices.
|
||||||
|
@ -606,12 +602,13 @@ public final class YoutubeParsingHelper {
|
||||||
|
|
||||||
if (keyAndVersionExtracted) {
|
if (keyAndVersionExtracted) {
|
||||||
return clientVersion;
|
return clientVersion;
|
||||||
} else {
|
}
|
||||||
|
|
||||||
if (areHardcodedClientVersionAndKeyValid()) {
|
if (areHardcodedClientVersionAndKeyValid()) {
|
||||||
clientVersion = HARDCODED_CLIENT_VERSION;
|
clientVersion = HARDCODED_CLIENT_VERSION;
|
||||||
return clientVersion;
|
return clientVersion;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
throw new ExtractionException("Could not get YouTube WEB client version");
|
throw new ExtractionException("Could not get YouTube WEB client version");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,12 +628,12 @@ public final class YoutubeParsingHelper {
|
||||||
|
|
||||||
if (keyAndVersionExtracted) {
|
if (keyAndVersionExtracted) {
|
||||||
return key;
|
return key;
|
||||||
} else {
|
}
|
||||||
|
|
||||||
if (areHardcodedClientVersionAndKeyValid()) {
|
if (areHardcodedClientVersionAndKeyValid()) {
|
||||||
key = HARDCODED_KEY;
|
key = HARDCODED_KEY;
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// The ANDROID API key is also valid with the WEB client so return it if we couldn't
|
// The ANDROID API key is also valid with the WEB client so return it if we couldn't
|
||||||
// extract the WEB API key.
|
// extract the WEB API key.
|
||||||
|
@ -1508,7 +1505,8 @@ public final class YoutubeParsingHelper {
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public static String generateContentPlaybackNonce() {
|
public static String generateContentPlaybackNonce() {
|
||||||
return randomStringFromAlphabet(CONTENT_PLAYBACK_NONCE_ALPHABET, 16);
|
return RandomStringFromAlphabetGenerator.generate(
|
||||||
|
CONTENT_PLAYBACK_NONCE_ALPHABET, 16, numberGenerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1524,23 +1522,7 @@ public final class YoutubeParsingHelper {
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public static String generateTParameter() {
|
public static String generateTParameter() {
|
||||||
return randomStringFromAlphabet(CONTENT_PLAYBACK_NONCE_ALPHABET, 12);
|
return RandomStringFromAlphabetGenerator.generate(
|
||||||
}
|
CONTENT_PLAYBACK_NONCE_ALPHABET, 12, numberGenerator);
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the seed for video tests.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* This seed will be used to generate the same {@code t} and {@code cpn} values between
|
|
||||||
* different execution of tests so mocks can be used for stream tests.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* This method will call {@link Utils#setSecureRandomSeed(long)} with the
|
|
||||||
* {@link #SEED_FOR_VIDEOS_TESTS value}.
|
|
||||||
* </p>
|
|
||||||
*/
|
|
||||||
public static void setSeedForVideoTests() {
|
|
||||||
Utils.setSecureRandomSeed(SEED_FOR_VIDEOS_TESTS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package org.schabi.newpipe.extractor.utils;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a random string from a predefined alphabet.
|
||||||
|
*/
|
||||||
|
public final class RandomStringFromAlphabetGenerator {
|
||||||
|
private RandomStringFromAlphabetGenerator() {
|
||||||
|
// No impl
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a random string from an alphabet.
|
||||||
|
*
|
||||||
|
* @param alphabet the characters' alphabet to use
|
||||||
|
* @param length the length of the returned string (> 0)
|
||||||
|
* @param random {@link Random} (or better {@link java.security.SecureRandom}) used for generating the random string
|
||||||
|
* @return a random string of the requested length made of only characters from the provided
|
||||||
|
* alphabet
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
public static String generate(
|
||||||
|
final String alphabet,
|
||||||
|
final int length,
|
||||||
|
final Random random) {
|
||||||
|
final StringBuilder stringBuilder = new StringBuilder(length);
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
stringBuilder.append(alphabet.charAt(random.nextInt(alphabet.length())));
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,14 +8,13 @@ import java.io.UnsupportedEncodingException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public final class Utils {
|
public final class Utils {
|
||||||
|
@ -26,7 +25,6 @@ public final class Utils {
|
||||||
public static final String EMPTY_STRING = "";
|
public static final String EMPTY_STRING = "";
|
||||||
private static final Pattern M_PATTERN = Pattern.compile("(https?)?:\\/\\/m\\.");
|
private static final Pattern M_PATTERN = Pattern.compile("(https?)?:\\/\\/m\\.");
|
||||||
private static final Pattern WWW_PATTERN = Pattern.compile("(https?)?:\\/\\/www\\.");
|
private static final Pattern WWW_PATTERN = Pattern.compile("(https?)?:\\/\\/www\\.");
|
||||||
private static final SecureRandom random = new SecureRandom();
|
|
||||||
|
|
||||||
private Utils() {
|
private Utils() {
|
||||||
// no instance
|
// no instance
|
||||||
|
@ -75,8 +73,9 @@ public final class Utils {
|
||||||
multiplier = Parser.matchGroup("[\\d]+([\\.,][\\d]+)?([KMBkmb])+", numberWord, 2);
|
multiplier = Parser.matchGroup("[\\d]+([\\.,][\\d]+)?([KMBkmb])+", numberWord, 2);
|
||||||
} catch (final ParsingException ignored) {
|
} catch (final ParsingException ignored) {
|
||||||
}
|
}
|
||||||
final double count = Double.parseDouble(
|
|
||||||
Parser.matchGroup1("([\\d]+([\\.,][\\d]+)?)", numberWord).replace(",", "."));
|
final double count = Double.parseDouble(Parser.matchGroup1("([\\d]+([\\.,][\\d]+)?)",
|
||||||
|
numberWord).replace(",", "."));
|
||||||
switch (multiplier.toUpperCase()) {
|
switch (multiplier.toUpperCase()) {
|
||||||
case "K":
|
case "K":
|
||||||
return (long) (count * 1e3);
|
return (long) (count * 1e3);
|
||||||
|
@ -443,43 +442,4 @@ public final class Utils {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate a random string using the secure random device {@link #random}.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* {@link #setSecureRandomSeed(long)} might be useful when mocking tests.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param alphabet the characters' alphabet to use
|
|
||||||
* @param length the length of the returned string
|
|
||||||
* @return a random string of the requested length made of only characters from the provided
|
|
||||||
* alphabet
|
|
||||||
*/
|
|
||||||
@Nonnull
|
|
||||||
public static String randomStringFromAlphabet(final String alphabet, final int length) {
|
|
||||||
final StringBuilder stringBuilder = new StringBuilder();
|
|
||||||
for (int i = 0; i < length; ++i) {
|
|
||||||
stringBuilder.append(alphabet.charAt(random.nextInt(alphabet.length())));
|
|
||||||
}
|
|
||||||
return stringBuilder.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Seed the secure random device used for {@link #randomStringFromAlphabet(String, int)}.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* Use this in tests so that they can be mocked as the same random numbers are always
|
|
||||||
* generated.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* This is not intended to be used outside of tests.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param seed the seed to pass to {@link SecureRandom#setSeed(long)}
|
|
||||||
*/
|
|
||||||
public static void setSecureRandomSeed(final long seed) {
|
|
||||||
random.setSeed(seed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,17 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertContains;
|
||||||
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestGetPageInNewExtractor;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestMoreItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -15,13 +27,6 @@ import org.schabi.newpipe.extractor.services.BaseChannelExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertContains;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link ChannelExtractor}
|
* Test for {@link ChannelExtractor}
|
||||||
|
@ -33,8 +38,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,8 +134,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
public static class NotSupported {
|
public static class NotSupported {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notSupported"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notSupported"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,8 +152,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "gronkh"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "gronkh"));
|
||||||
extractor = (YoutubeChannelExtractor) YouTube
|
extractor = (YoutubeChannelExtractor) YouTube
|
||||||
.getChannelExtractor("http://www.youtube.com/user/Gronkh");
|
.getChannelExtractor("http://www.youtube.com/user/Gronkh");
|
||||||
|
@ -246,8 +248,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "VSauce"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "VSauce"));
|
||||||
extractor = (YoutubeChannelExtractor) YouTube
|
extractor = (YoutubeChannelExtractor) YouTube
|
||||||
.getChannelExtractor("https://www.youtube.com/user/Vsauce");
|
.getChannelExtractor("https://www.youtube.com/user/Vsauce");
|
||||||
|
@ -342,8 +343,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagt"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "kurzgesagt"));
|
||||||
extractor = (YoutubeChannelExtractor) YouTube
|
extractor = (YoutubeChannelExtractor) YouTube
|
||||||
.getChannelExtractor("https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q");
|
.getChannelExtractor("https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q");
|
||||||
|
@ -460,8 +460,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "captainDisillusion"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "captainDisillusion"));
|
||||||
extractor = (YoutubeChannelExtractor) YouTube
|
extractor = (YoutubeChannelExtractor) YouTube
|
||||||
.getChannelExtractor("https://www.youtube.com/user/CaptainDisillusion/videos");
|
.getChannelExtractor("https://www.youtube.com/user/CaptainDisillusion/videos");
|
||||||
|
@ -555,8 +554,7 @@ public class YoutubeChannelExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "random"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "random"));
|
||||||
extractor = (YoutubeChannelExtractor) YouTube
|
extractor = (YoutubeChannelExtractor) YouTube
|
||||||
.getChannelExtractor("https://www.youtube.com/channel/UCUaQMQS9lY5lit3vurpXQ6w");
|
.getChannelExtractor("https://www.youtube.com/channel/UCUaQMQS9lY5lit3vurpXQ6w");
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.ListExtractor;
|
import org.schabi.newpipe.extractor.ListExtractor;
|
||||||
|
@ -14,11 +18,6 @@ import java.time.temporal.ChronoUnit;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class that tests multiple channels and ranges of "time ago".
|
* A class that tests multiple channels and ranges of "time ago".
|
||||||
|
@ -30,8 +29,7 @@ public class YoutubeChannelLocalizationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAllSupportedLocalizations() throws Exception {
|
public void testAllSupportedLocalizations() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "localization"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "localization"));
|
||||||
|
|
||||||
testLocalizationsFor("https://www.youtube.com/user/NBCNews");
|
testLocalizationsFor("https://www.youtube.com/user/NBCNews");
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -17,13 +23,6 @@ import org.schabi.newpipe.extractor.utils.Utils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
public class YoutubeCommentsExtractorTest {
|
public class YoutubeCommentsExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/comments/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/comments/";
|
||||||
|
@ -38,8 +37,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "thomas"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "thomas"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -127,8 +125,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "empty"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "empty"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -167,8 +164,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "hearted"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "hearted"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -210,8 +206,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "pinned"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "pinned"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -252,8 +247,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "likes"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "likes"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -284,8 +278,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "localized_vote_count"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "localized_vote_count"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
@ -313,8 +306,7 @@ public class YoutubeCommentsExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "replies"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "replies"));
|
||||||
extractor = (YoutubeCommentsExtractor) YouTube
|
extractor = (YoutubeCommentsExtractor) YouTube
|
||||||
.getCommentsExtractor(url);
|
.getCommentsExtractor(url);
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -10,14 +17,6 @@ import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeFeedExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeFeedExtractor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
|
||||||
|
|
||||||
public class YoutubeFeedExtractorTest {
|
public class YoutubeFeedExtractorTest {
|
||||||
|
|
||||||
|
@ -28,8 +27,7 @@ public class YoutubeFeedExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||||
extractor = (YoutubeFeedExtractor) YouTube
|
extractor = (YoutubeFeedExtractor) YouTube
|
||||||
.getFeedExtractor("https://www.youtube.com/user/Kurzgesagt");
|
.getFeedExtractor("https://www.youtube.com/user/Kurzgesagt");
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -8,13 +13,6 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
import org.schabi.newpipe.extractor.services.BaseListExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
|
||||||
|
|
||||||
public class YoutubeKioskExtractorTest {
|
public class YoutubeKioskExtractorTest {
|
||||||
|
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/kiosk/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/kiosk/";
|
||||||
|
@ -24,8 +22,7 @@ public class YoutubeKioskExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "trending"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "trending"));
|
||||||
extractor = (YoutubeTrendingExtractor) YouTube.getKioskList().getDefaultKioskExtractor();
|
extractor = (YoutubeTrendingExtractor) YouTube.getKioskList().getDefaultKioskExtractor();
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -31,7 +31,6 @@ import java.nio.charset.StandardCharsets;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class YoutubeMixPlaylistExtractorTest {
|
public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
@ -47,8 +46,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "mix"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "mix"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
|
@ -142,8 +140,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "mixWithIndex"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "mixWithIndex"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
|
@ -228,8 +225,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "myMix"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "myMix"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
|
@ -318,8 +314,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "invalid"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "invalid"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
}
|
}
|
||||||
|
@ -353,8 +348,7 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "channelMix"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "channelMix"));
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
|
@ -417,9 +411,8 @@ public class YoutubeMixPlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "genreMix"));
|
||||||
NewPipe.init(new DownloaderFactory().getDownloader(RESOURCE_PATH + "genreMix"));
|
|
||||||
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
dummyCookie.put(YoutubeMixPlaylistExtractor.COOKIE_NAME, "whatever");
|
||||||
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
extractor = (YoutubeMixPlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID
|
.getPlaylistExtractor("https://www.youtube.com/watch?v=" + VIDEO_ID
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -8,10 +11,6 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
|
|
||||||
public class YoutubeParsingHelperTest {
|
public class YoutubeParsingHelperTest {
|
||||||
|
|
||||||
|
@ -19,8 +18,7 @@ public class YoutubeParsingHelperTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "youtubeParsingHelper"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "youtubeParsingHelper"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube;
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
||||||
|
import static org.schabi.newpipe.extractor.ListExtractor.ITEM_COUNT_UNKNOWN;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestGetPageInNewExtractor;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestListOfItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestMoreItems;
|
||||||
|
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -16,20 +29,6 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubePlaylistE
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl;
|
|
||||||
import static org.schabi.newpipe.extractor.ListExtractor.ITEM_COUNT_UNKNOWN;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.assertNoMoreItems;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestGetPageInNewExtractor;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestListOfItems;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestMoreItems;
|
|
||||||
import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestRelatedItems;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link YoutubePlaylistExtractor}
|
* Test for {@link YoutubePlaylistExtractor}
|
||||||
|
@ -41,8 +40,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,8 +64,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "TimelessPopHits"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "TimelessPopHits"));
|
||||||
extractor = (YoutubePlaylistExtractor) YouTube
|
extractor = (YoutubePlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("http://www.youtube.com/watch?v=lp-EO5I60KA&list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj");
|
.getPlaylistExtractor("http://www.youtube.com/watch?v=lp-EO5I60KA&list=PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj");
|
||||||
|
@ -174,8 +171,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "huge"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "huge"));
|
||||||
extractor = (YoutubePlaylistExtractor) YouTube
|
extractor = (YoutubePlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/watch?v=8SbUC-UaAxE&list=PLWwAypAcFRgKAIIFqBr9oy-ZYZnixa_Fj");
|
.getPlaylistExtractor("https://www.youtube.com/watch?v=8SbUC-UaAxE&list=PLWwAypAcFRgKAIIFqBr9oy-ZYZnixa_Fj");
|
||||||
|
@ -298,8 +294,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "learning"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "learning"));
|
||||||
extractor = (YoutubePlaylistExtractor) YouTube
|
extractor = (YoutubePlaylistExtractor) YouTube
|
||||||
.getPlaylistExtractor("https://www.youtube.com/playlist?list=PL8dPuuaLjXtOAKed_MxxWBNaPno5h3Zs8");
|
.getPlaylistExtractor("https://www.youtube.com/playlist?list=PL8dPuuaLjXtOAKed_MxxWBNaPno5h3Zs8");
|
||||||
|
@ -407,8 +402,7 @@ public class YoutubePlaylistExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "continuations"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "continuations"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -29,10 +32,6 @@ import org.schabi.newpipe.extractor.localization.Localization;
|
||||||
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
|
import org.schabi.newpipe.extractor.suggestion.SuggestionExtractor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link SuggestionExtractor}
|
* Test for {@link SuggestionExtractor}
|
||||||
|
@ -45,8 +44,7 @@ public class YoutubeSuggestionExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + ""), new Localization("de", "DE"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + ""), new Localization("de", "DE"));
|
||||||
suggestionExtractor = YouTube.getSuggestionExtractor();
|
suggestionExtractor = YouTube.getSuggestionExtractor();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
package org.schabi.newpipe.extractor.services.youtube;
|
||||||
|
|
||||||
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class for keeping YouTube tests stateless.
|
||||||
|
*/
|
||||||
|
public final class YoutubeTestsUtils {
|
||||||
|
private YoutubeTestsUtils() {
|
||||||
|
// No impl
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears static YT states.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* This method needs to be called to generate all mocks of a test when running different tests
|
||||||
|
* at the same time.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
public static void ensureStateless() {
|
||||||
|
YoutubeParsingHelper.resetClientVersionAndKey();
|
||||||
|
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
||||||
|
YoutubeStreamExtractor.resetDeobfuscationCode();
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,6 +20,10 @@ package org.schabi.newpipe.extractor.services.youtube;
|
||||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
|
@ -28,12 +32,6 @@ import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
import org.schabi.newpipe.extractor.linkhandler.LinkHandlerFactory;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link KioskInfo}
|
* Test for {@link KioskInfo}
|
||||||
*/
|
*/
|
||||||
|
@ -46,8 +44,7 @@ public class YoutubeTrendingKioskInfoTest {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp()
|
public static void setUp()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH));
|
||||||
LinkHandlerFactory LinkHandlerFactory = ((StreamingService) YouTube).getKioskList().getListLinkHandlerFactoryByType("Trending");
|
LinkHandlerFactory LinkHandlerFactory = ((StreamingService) YouTube).getKioskList().getListLinkHandlerFactoryByType("Trending");
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
||||||
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
||||||
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
import org.schabi.newpipe.extractor.search.SearchExtractor;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultSearchExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultSearchExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.stream.Description;
|
import org.schabi.newpipe.extractor.stream.Description;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
@ -49,8 +48,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "all"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "all"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY);
|
extractor = YouTube.getSearchExtractor(QUERY);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -72,8 +70,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "channel"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "channel"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(CHANNELS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(CHANNELS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -97,8 +94,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "playlist"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "playlist"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(PLAYLISTS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(PLAYLISTS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -122,8 +118,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "videos"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "videos"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -149,8 +144,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "suggestions"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "suggestions"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -174,8 +168,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "corrected"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "corrected"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -199,8 +192,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "random"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "random"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY);
|
extractor = YouTube.getSearchExtractor(QUERY);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -235,8 +227,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
public static class PagingTest {
|
public static class PagingTest {
|
||||||
@Test
|
@Test
|
||||||
public void duplicatedItemsCheck() throws Exception {
|
public void duplicatedItemsCheck() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "paging"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "paging"));
|
||||||
final SearchExtractor extractor = YouTube.getSearchExtractor("cirque du soleil", singletonList(VIDEOS), "");
|
final SearchExtractor extractor = YouTube.getSearchExtractor("cirque du soleil", singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -254,8 +245,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "metaInfo"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "metaInfo"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -291,8 +281,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "verified"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "verified"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(CHANNELS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(CHANNELS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -329,8 +318,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "video_uploader_avatar"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "video_uploader_avatar"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -361,8 +349,7 @@ public class YoutubeSearchExtractorTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "video_description"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "video_description"));
|
||||||
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
extractor = YouTube.getSearchExtractor(QUERY, singletonList(VIDEOS), "");
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -1,23 +1,21 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtractorTest {
|
public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
||||||
private static final String ID = "rwcfPqbAx-0";
|
private static final String ID = "rwcfPqbAx-0";
|
||||||
|
@ -27,10 +25,7 @@ public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtrac
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "ageRestricted"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "ageRestricted"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
|
||||||
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
|
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for {@link YoutubeStreamLinkHandlerFactory}
|
* Test for {@link YoutubeStreamLinkHandlerFactory}
|
||||||
*/
|
*/
|
||||||
|
@ -31,10 +29,7 @@ public class YoutubeStreamExtractorControversialTest extends DefaultStreamExtrac
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "controversial"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "controversial"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -20,6 +20,12 @@
|
||||||
|
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -35,9 +41,12 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.PrivateContentException;
|
import org.schabi.newpipe.extractor.exceptions.PrivateContentException;
|
||||||
import org.schabi.newpipe.extractor.exceptions.YoutubeMusicPremiumContentException;
|
import org.schabi.newpipe.extractor.exceptions.YoutubeMusicPremiumContentException;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.*;
|
import org.schabi.newpipe.extractor.stream.Description;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamSegment;
|
||||||
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
@ -45,16 +54,9 @@ import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.EMPTY_STRING;
|
|
||||||
|
|
||||||
public class YoutubeStreamExtractorDefaultTest {
|
public class YoutubeStreamExtractorDefaultTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
||||||
static final String BASE_URL = "https://www.youtube.com/watch?v=";
|
static final String BASE_URL = "https://www.youtube.com/watch?v=";
|
||||||
|
@ -63,10 +65,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
public static class NotAvailable {
|
public static class NotAvailable {
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws IOException {
|
public static void setUp() throws IOException {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "notAvailable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,10 +120,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "pewdiwpie"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "pewdiwpie"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -167,10 +163,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "unboxing"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "unboxing"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -223,10 +216,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "ratingsDisabled"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "ratingsDisabled"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -262,10 +252,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "streamSegmentsTagesschau"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "streamSegmentsTagesschau"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -300,7 +287,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamSegment0() throws Exception {
|
void testStreamSegment0() throws Exception {
|
||||||
final StreamSegment segment = extractor.getStreamSegments().get(0);
|
final StreamSegment segment = extractor.getStreamSegments().get(0);
|
||||||
assertEquals(0, segment.getStartTimeSeconds());
|
assertEquals(0, segment.getStartTimeSeconds());
|
||||||
assertEquals("Guten Abend", segment.getTitle());
|
assertEquals("Guten Abend", segment.getTitle());
|
||||||
|
@ -309,7 +296,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamSegment3() throws Exception {
|
void testStreamSegment3() throws Exception {
|
||||||
final StreamSegment segment = extractor.getStreamSegments().get(3);
|
final StreamSegment segment = extractor.getStreamSegments().get(3);
|
||||||
assertEquals(224, segment.getStartTimeSeconds());
|
assertEquals(224, segment.getStartTimeSeconds());
|
||||||
assertEquals("Pandemie dämpft Konjunkturprognose für 2021", segment.getTitle());
|
assertEquals("Pandemie dämpft Konjunkturprognose für 2021", segment.getTitle());
|
||||||
|
@ -326,9 +313,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "streamSegmentsMaiLab"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "streamSegmentsMaiLab"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -369,7 +354,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStreamSegment() throws Exception {
|
void testStreamSegment() throws Exception {
|
||||||
final StreamSegment segment = extractor.getStreamSegments().get(1);
|
final StreamSegment segment = extractor.getStreamSegments().get(1);
|
||||||
assertEquals(164, segment.getStartTimeSeconds());
|
assertEquals(164, segment.getStartTimeSeconds());
|
||||||
assertEquals("Was ist Vitamin D?", segment.getTitle());
|
assertEquals("Was ist Vitamin D?", segment.getTitle());
|
||||||
|
@ -396,10 +381,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "publicBroadcast"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "publicBroadcast"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
@ -452,10 +434,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = (YoutubeStreamExtractor) YouTube
|
extractor = (YoutubeStreamExtractor) YouTube
|
||||||
.getStreamExtractor("https://www.youtube.com/watch?v=tjz2u2DiveM");
|
.getStreamExtractor("https://www.youtube.com/watch?v=tjz2u2DiveM");
|
||||||
|
@ -463,7 +442,7 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetUnlisted() {
|
void testGetUnlisted() {
|
||||||
assertEquals(StreamExtractor.Privacy.UNLISTED, extractor.getPrivacy());
|
assertEquals(StreamExtractor.Privacy.UNLISTED, extractor.getPrivacy());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -475,17 +454,14 @@ public class YoutubeStreamExtractorDefaultTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderTestImpl.getInstance());
|
NewPipe.init(DownloaderTestImpl.getInstance());
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetLicence() throws ParsingException {
|
void testGetLicence() throws ParsingException {
|
||||||
assertEquals("Creative Commons Attribution licence (reuse allowed)", extractor.getLicence());
|
assertEquals("Creative Commons Attribution licence (reuse allowed)", extractor.getLicence());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
|
|
||||||
public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractorTest {
|
public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
||||||
private static final String ID = "5qap5aO4i9A";
|
private static final String ID = "5qap5aO4i9A";
|
||||||
|
@ -28,10 +26,7 @@ public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractor
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "live"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "live"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -19,6 +19,7 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfo.PlaylistType;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
|
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItem;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
||||||
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
@ -40,10 +41,7 @@ public class YoutubeStreamExtractorRelatedMixTest extends DefaultStreamExtractor
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "relatedMix"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "relatedMix"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
|
@ -1,24 +1,22 @@
|
||||||
package org.schabi.newpipe.extractor.services.youtube.stream;
|
package org.schabi.newpipe.extractor.services.youtube.stream;
|
||||||
|
|
||||||
|
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
||||||
|
import static org.schabi.newpipe.extractor.stream.StreamExtractor.Privacy.UNLISTED;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.schabi.newpipe.downloader.DownloaderFactory;
|
import org.schabi.newpipe.downloader.DownloaderFactory;
|
||||||
import org.schabi.newpipe.extractor.NewPipe;
|
import org.schabi.newpipe.extractor.NewPipe;
|
||||||
import org.schabi.newpipe.extractor.StreamingService;
|
import org.schabi.newpipe.extractor.StreamingService;
|
||||||
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
|
import org.schabi.newpipe.extractor.services.youtube.YoutubeTestsUtils;
|
||||||
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor;
|
|
||||||
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
import org.schabi.newpipe.extractor.stream.StreamExtractor;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamType;
|
import org.schabi.newpipe.extractor.stream.StreamType;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
|
|
||||||
import static org.schabi.newpipe.extractor.stream.StreamExtractor.Privacy.UNLISTED;
|
|
||||||
|
|
||||||
public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTest {
|
public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTest {
|
||||||
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
private static final String RESOURCE_PATH = DownloaderFactory.RESOURCE_PATH + "services/youtube/extractor/stream/";
|
||||||
static final String ID = "udsB8KnIJTg";
|
static final String ID = "udsB8KnIJTg";
|
||||||
|
@ -27,10 +25,7 @@ public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTe
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() throws Exception {
|
public static void setUp() throws Exception {
|
||||||
YoutubeParsingHelper.resetClientVersionAndKey();
|
YoutubeTestsUtils.ensureStateless();
|
||||||
YoutubeParsingHelper.setNumberGenerator(new Random(1));
|
|
||||||
YoutubeParsingHelper.setSeedForVideoTests();
|
|
||||||
YoutubeStreamExtractor.resetDeobfuscationCode();
|
|
||||||
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "unlisted"));
|
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "unlisted"));
|
||||||
extractor = YouTube.getStreamExtractor(URL);
|
extractor = YouTube.getStreamExtractor(URL);
|
||||||
extractor.fetchPage();
|
extractor.fetchPage();
|
||||||
|
|
Loading…
Reference in New Issue