Skip to content

Commit e8e750d

Browse files
Fix test failure
1 parent 3a5379c commit e8e750d

2 files changed

Lines changed: 18 additions & 22 deletions

File tree

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,12 +1525,13 @@ public static JsonBuilder<JsonObject> prepareJsonBuilder(
15251525
*/
15261526
@Nonnull
15271527
public static Optional<JsonObject> getFirstCollaborator(final JsonObject renderer) {
1528-
final JsonArray listItems = renderer.getObject(NAVIGATION_ENDPOINT)
1529-
.getObject("showDialogCommand").getObject("panelLoadingStrategy")
1530-
.getObject("inlineContent").getObject("dialogViewModel")
1531-
.getObject("customContent").getObject("listViewModel")
1532-
.getArray("listItems");
1533-
return Optional.ofNullable(listItems.getObject(0)
1534-
.getObject("listItemViewModel", null));
1528+
try {
1529+
// CHECKSTYLE:OFF
1530+
final JsonArray listItems = JsonUtils.getArray(renderer, "showDialogCommand.panelLoadingStrategy.inlineContent.dialogViewModel.customContent.listViewModel.listItems");
1531+
// CHECKSTYLE:ON
1532+
return Optional.ofNullable(listItems.getObject(0).getObject("listItemViewModel", null));
1533+
} catch (final ParsingException e) {
1534+
return Optional.empty();
1535+
}
15351536
}
15361537
}

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

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.CONTENT_CHECK_OK;
2727
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.CPN;
2828
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.RACY_CHECK_OK;
29+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.STRING_PREDICATE;
2930
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.VIDEO_ID;
3031
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.fixThumbnailUrl;
3132
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.generateContentPlaybackNonce;
33+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getFirstCollaborator;
3234
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getImagesFromThumbnailsArray;
3335
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
3436
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
@@ -493,7 +495,7 @@ public boolean isUploaderVerified() {
493495

494496
return Optional.ofNullable(videoOwnerRenderer.getArray("badges", null))
495497
.map(YoutubeParsingHelper::isVerified)
496-
.or(() -> YoutubeParsingHelper.getFirstCollaborator(videoOwnerRenderer)
498+
.or(() -> getFirstCollaborator(videoOwnerRenderer)
497499
.map(channel -> {
498500
final var attachmentRuns = channel.getObject(TITLE)
499501
.getArray("attachmentRuns");
@@ -534,26 +536,19 @@ public List<Image> getUploaderAvatars() throws ParsingException {
534536

535537
@Override
536538
public long getUploaderSubscriberCount() throws ParsingException {
537-
final JsonObject videoOwnerRenderer = JsonUtils.getObject(getVideoSecondaryInfoRenderer(),
539+
final var renderer = JsonUtils.getObject(getVideoSecondaryInfoRenderer(),
538540
"owner.videoOwnerRenderer");
541+
final var subscriberCountText = getTextFromObject(renderer.getObject("subscriberCountText"))
542+
.or(() -> getFirstCollaborator(renderer.getObject("navigationEndpoint"))
543+
.map(endpoint -> endpoint.getObject("subtitle").getString("content")))
544+
.filter(STRING_PREDICATE);
539545

540-
final String subscriberCountText;
541-
if (videoOwnerRenderer.has("subscriberCountText")) {
542-
subscriberCountText = getTextFromObject(videoOwnerRenderer
543-
.getObject("subscriberCountText")).orElse(null);
544-
} else {
545-
subscriberCountText = YoutubeParsingHelper
546-
.getFirstCollaborator(videoOwnerRenderer.getObject("navigationEndpoint"))
547-
.map(endpoint -> endpoint.getObject("subtitle").getString("content"))
548-
.orElse(null);
549-
}
550-
551-
if (isNullOrEmpty(subscriberCountText)) {
546+
if (subscriberCountText.isEmpty()) {
552547
return UNKNOWN_SUBSCRIBER_COUNT;
553548
}
554549

555550
try {
556-
return Utils.mixedNumberWordToLong(subscriberCountText);
551+
return Utils.mixedNumberWordToLong(subscriberCountText.get());
557552
} catch (final NumberFormatException e) {
558553
throw new ParsingException("Could not get uploader subscriber count", e);
559554
}

0 commit comments

Comments
 (0)