Skip to content

Commit 9888fd2

Browse files
Fix test failures
1 parent 3a5379c commit 9888fd2

2 files changed

Lines changed: 26 additions & 29 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: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,15 @@
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;
37+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.hasArtistOrVerifiedIconBadgeAttachment;
3538
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
3639
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
3740

@@ -119,6 +122,7 @@ public class YoutubeStreamExtractor extends StreamExtractor {
119122
private static final String THUMBNAILS = "thumbnails";
120123
private static final String VIDEO_DETAILS = "videoDetails";
121124
private static final String TITLE = "title";
125+
private static final String BADGES = "badges";
122126

123127
@Nullable
124128
private static PoTokenProvider poTokenProvider;
@@ -488,17 +492,16 @@ public String getUploaderName() throws ParsingException {
488492

489493
@Override
490494
public boolean isUploaderVerified() {
491-
final var videoOwnerRenderer = getVideoSecondaryInfoRenderer().getObject("owner")
495+
final var videoOwnerRenderer = getVideoSecondaryInfoRenderer()
496+
.getObject("owner")
492497
.getObject("videoOwnerRenderer");
493498

494-
return Optional.ofNullable(videoOwnerRenderer.getArray("badges", null))
499+
return Optional.ofNullable(videoOwnerRenderer.getArray(BADGES, null))
495500
.map(YoutubeParsingHelper::isVerified)
496-
.or(() -> YoutubeParsingHelper.getFirstCollaborator(videoOwnerRenderer)
501+
.or(() -> getFirstCollaborator(videoOwnerRenderer.getObject("navigationEndpoint"))
497502
.map(channel -> {
498-
final var attachmentRuns = channel.getObject(TITLE)
499-
.getArray("attachmentRuns");
500-
return YoutubeParsingHelper
501-
.hasArtistOrVerifiedIconBadgeAttachment(attachmentRuns);
503+
final var runs = channel.getObject(TITLE).getArray("attachmentRuns");
504+
return hasArtistOrVerifiedIconBadgeAttachment(runs);
502505
}))
503506
.orElse(false);
504507
}
@@ -534,26 +537,19 @@ public List<Image> getUploaderAvatars() throws ParsingException {
534537

535538
@Override
536539
public long getUploaderSubscriberCount() throws ParsingException {
537-
final JsonObject videoOwnerRenderer = JsonUtils.getObject(getVideoSecondaryInfoRenderer(),
540+
final var renderer = JsonUtils.getObject(getVideoSecondaryInfoRenderer(),
538541
"owner.videoOwnerRenderer");
542+
final var subscriberCountText = getTextFromObject(renderer.getObject("subscriberCountText"))
543+
.or(() -> getFirstCollaborator(renderer.getObject("navigationEndpoint"))
544+
.map(endpoint -> endpoint.getObject("subtitle").getString("content")))
545+
.filter(STRING_PREDICATE);
539546

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)) {
547+
if (subscriberCountText.isEmpty()) {
552548
return UNKNOWN_SUBSCRIBER_COUNT;
553549
}
554550

555551
try {
556-
return Utils.mixedNumberWordToLong(subscriberCountText);
552+
return Utils.mixedNumberWordToLong(subscriberCountText.get());
557553
} catch (final NumberFormatException e) {
558554
throw new ParsingException("Could not get uploader subscriber count", e);
559555
}
@@ -1408,7 +1404,7 @@ public List<Frameset> getFrames() throws ExtractionException {
14081404
@Override
14091405
public Privacy getPrivacy() {
14101406
return playerMicroFormatRenderer.getBoolean("isUnlisted")
1411-
|| getVideoPrimaryInfoRenderer().getArray("badges")
1407+
|| getVideoPrimaryInfoRenderer().getArray(BADGES)
14121408
.streamAsJsonObjects()
14131409
.anyMatch(badge ->
14141410
"PRIVACY_UNLISTED".equals(badge.getObject("metadataBadgeRenderer")

0 commit comments

Comments
 (0)