Skip to content

Commit 632772d

Browse files
committed
Adress requested changes in YoutubeParsingHelper
1 parent 657f165 commit 632772d

3 files changed

Lines changed: 20 additions & 21 deletions

File tree

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

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private YoutubeParsingHelper() {
7575

7676
private static final String[] HARDCODED_YOUTUBE_MUSIC_KEY =
7777
{"AIzaSyC9XL3ZjWddXya6X74dJoCTL-WEYFDNX30", "67", "0.1"};
78-
private static String[] youtubeMusicKeys;
78+
private static String[] youtubeMusicKey;
7979

8080
private static boolean keyAndVersionExtracted = false;
8181
private static Boolean areHardcodedClientVersionAndKeyValidValue = null;
@@ -341,7 +341,7 @@ public static boolean areHardcodedClientVersionAndKeyValid() throws IOException,
341341

342342
private static void extractClientVersionAndKey() throws IOException, ExtractionException {
343343
// Don't extract the client version and the innertube key if it has been already extracted
344-
if (!keyAndVersionExtracted) return;
344+
if (keyAndVersionExtracted) return;
345345
// Don't provide a search term in order to have a smaller response
346346
final String url = "https://www.youtube.com/results?search_query=";
347347
final Map<String, List<String>> headers = new HashMap<>();
@@ -405,7 +405,6 @@ private static void extractClientVersionAndKey() throws IOException, ExtractionE
405405
try {
406406
key = Parser.matchGroup1("innertubeApiKey\":\"([0-9a-zA-Z_-]+?)\"", html);
407407
} catch (final Parser.RegexException e2) {
408-
keyAndVersionExtracted = false;
409408
throw new ParsingException("Could not extract client version and key");
410409
}
411410
}
@@ -421,7 +420,7 @@ public static String getClientVersion() throws IOException, ExtractionException
421420
return clientVersion = HARDCODED_CLIENT_VERSION;
422421
}
423422

424-
if (!keyAndVersionExtracted) extractClientVersionAndKey();
423+
extractClientVersionAndKey();
425424
return clientVersion;
426425
}
427426

@@ -430,9 +429,11 @@ public static String getClientVersion() throws IOException, ExtractionException
430429
*/
431430
public static String getKey() throws IOException, ExtractionException {
432431
if (!isNullOrEmpty(key)) return key;
433-
if (areHardcodedClientVersionAndKeyValid()) return key = HARDCODED_KEY;
432+
if (areHardcodedClientVersionAndKeyValid()) {
433+
return key = HARDCODED_KEY;
434+
}
434435

435-
if (!keyAndVersionExtracted) extractClientVersionAndKey();
436+
extractClientVersionAndKey();
436437
return key;
437438
}
438439

@@ -465,7 +466,7 @@ public static void setNumberGenerator(Random random) {
465466
numberGenerator = random;
466467
}
467468

468-
public static boolean areHardcodedYoutubeMusicKeysValid() throws IOException,
469+
public static boolean isHardcodedYoutubeMusicKeyValid() throws IOException,
469470
ReCaptchaException {
470471
final String url =
471472
"https://music.youtube.com/youtubei/v1/music/get_search_suggestions?alt=json&key="
@@ -510,17 +511,15 @@ public static boolean areHardcodedYoutubeMusicKeysValid() throws IOException,
510511
headers.put("Content-Type", Collections.singletonList("application/json"));
511512

512513
final Response response = getDownloader().post(url, headers, json);
513-
final String responseBody = response.responseBody();
514-
final int responseCode = response.responseCode();
515514
// Ensure to have a valid response
516-
return responseBody.length() > 500 && responseCode == 200;
515+
return response.responseBody().length() > 500 && response.responseCode() == 200;
517516
}
518517

519-
public static String[] getYoutubeMusicKeys() throws IOException, ReCaptchaException,
518+
public static String[] getYoutubeMusicKey() throws IOException, ReCaptchaException,
520519
Parser.RegexException {
521-
if (youtubeMusicKeys != null && youtubeMusicKeys.length == 3) return youtubeMusicKeys;
522-
if (areHardcodedYoutubeMusicKeysValid()) {
523-
return youtubeMusicKeys = HARDCODED_YOUTUBE_MUSIC_KEY;
520+
if (youtubeMusicKey != null && youtubeMusicKey.length == 3) return youtubeMusicKey;
521+
if (isHardcodedYoutubeMusicKeyValid()) {
522+
return youtubeMusicKey = HARDCODED_YOUTUBE_MUSIC_KEY;
524523
}
525524

526525
final String url = "https://music.youtube.com/";
@@ -552,7 +551,7 @@ public static String[] getYoutubeMusicKeys() throws IOException, ReCaptchaExcept
552551
}
553552
}
554553

555-
return youtubeMusicKeys = new String[]{key, clientName, clientVersion};
554+
return youtubeMusicKey = new String[]{key, clientName, clientVersion};
556555
}
557556

558557
@Nullable

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public YoutubeMusicSearchExtractor(final StreamingService service, final SearchQ
4040
@Override
4141
public void onFetchPage(@Nonnull final Downloader downloader) throws IOException,
4242
ExtractionException {
43-
final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKeys();
43+
final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKey();
4444

4545
final String url = "https://music.youtube.com/youtubei/v1/search?alt=json&key=" + youtubeMusicKeys[0];
4646

@@ -184,15 +184,15 @@ public InfoItemsPage<InfoItem> getInitialPage() throws ExtractionException, IOEx
184184
}
185185

186186
@Override
187-
public InfoItemsPage<InfoItem> getPage(final Page page) throws IOException,
188-
ExtractionException {
187+
public InfoItemsPage<InfoItem> getPage(final Page page)
188+
throws IOException, ExtractionException {
189189
if (page == null || isNullOrEmpty(page.getUrl())) {
190190
throw new IllegalArgumentException("Page doesn't contain an URL");
191191
}
192192

193193
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
194194

195-
final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKeys();
195+
final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKey();
196196

197197
// @formatter:off
198198
byte[] json = JsonWriter.string()
@@ -540,6 +540,6 @@ private Page getNextPageFrom(final JsonArray continuations) throws ParsingExcept
540540

541541
return new Page("https://music.youtube.com/youtubei/v1/search?ctoken=" + continuation
542542
+ "&continuation=" + continuation + "&itct=" + clickTrackingParams + "&alt=json"
543-
+ "&key=" + YoutubeParsingHelper.getYoutubeMusicKeys()[0]);
543+
+ "&key=" + YoutubeParsingHelper.getYoutubeMusicKey()[0]);
544544
}
545545
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void testAreHardcodedClientVersionAndKeyValid() throws IOException, Extra
3333
@Test
3434
public void testAreHardcodedYoutubeMusicKeysValid() throws IOException, ExtractionException {
3535
assertTrue("Hardcoded YouTube Music keys are not valid anymore",
36-
YoutubeParsingHelper.areHardcodedYoutubeMusicKeysValid());
36+
YoutubeParsingHelper.isHardcodedYoutubeMusicKeyValid());
3737
}
3838

3939
@Test

0 commit comments

Comments
 (0)