From c99d94b6157a357fc98480c6395d5b016fc97582 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sat, 23 Mar 2024 21:36:25 +0100 Subject: [PATCH] [YouTube] Do not get twice runs array in YoutubeParsingHelper The runs object was computed twice in getTextFromObject and getUrlFromObject methods, leading to unneeded search costs. This has been avoided by storing the array in method variables. --- .../services/youtube/YoutubeParsingHelper.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java index 71bd7a2a6..50a7bffd6 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java @@ -887,12 +887,13 @@ public final class YoutubeParsingHelper { return textObject.getString("simpleText"); } - if (textObject.getArray("runs").isEmpty()) { + final JsonArray runs = textObject.getArray("runs"); + if (runs.isEmpty()) { return null; } final StringBuilder textBuilder = new StringBuilder(); - for (final Object o : textObject.getArray("runs")) { + for (final Object o : runs) { final JsonObject run = (JsonObject) o; String text = run.getString("text"); @@ -970,11 +971,12 @@ public final class YoutubeParsingHelper { return null; } - if (textObject.getArray("runs").isEmpty()) { + final JsonArray runs = textObject.getArray("runs"); + if (runs.isEmpty()) { return null; } - for (final Object textPart : textObject.getArray("runs")) { + for (final Object textPart : runs) { final String url = getUrlFromNavigationEndpoint(((JsonObject) textPart) .getObject("navigationEndpoint")); if (!isNullOrEmpty(url)) {