[YouTube] Move channel verified status check from badges to a method
This method will be used in more places such as the new playlist item data. Support for a new icon used in artist channels has been also added.
This commit is contained in:
parent
169098432b
commit
f52d2269fc
|
@ -18,6 +18,7 @@ import java.util.Optional;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.defaultAlertsCheck;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.defaultAlertsCheck;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getJsonPostResponse;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.getTextFromObject;
|
||||||
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.hasArtistOrVerifiedIconBadgeAttachment;
|
||||||
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.prepareDesktopJsonBuilder;
|
||||||
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
|
||||||
|
|
||||||
|
@ -363,27 +364,11 @@ public final class YoutubeChannelHelper {
|
||||||
final JsonObject pageHeaderViewModel = channelHeader.json.getObject(CONTENT)
|
final JsonObject pageHeaderViewModel = channelHeader.json.getObject(CONTENT)
|
||||||
.getObject(PAGE_HEADER_VIEW_MODEL);
|
.getObject(PAGE_HEADER_VIEW_MODEL);
|
||||||
|
|
||||||
final boolean hasCircleOrMusicIcon = pageHeaderViewModel.getObject(TITLE)
|
final boolean hasCircleOrMusicIcon = hasArtistOrVerifiedIconBadgeAttachment(
|
||||||
|
pageHeaderViewModel.getObject(TITLE)
|
||||||
.getObject("dynamicTextViewModel")
|
.getObject("dynamicTextViewModel")
|
||||||
.getObject("text")
|
.getObject("text")
|
||||||
.getArray("attachmentRuns")
|
.getArray("attachmentRuns"));
|
||||||
.stream()
|
|
||||||
.filter(JsonObject.class::isInstance)
|
|
||||||
.map(JsonObject.class::cast)
|
|
||||||
.anyMatch(attachmentRun -> attachmentRun.getObject("element")
|
|
||||||
.getObject("type")
|
|
||||||
.getObject("imageType")
|
|
||||||
.getObject("image")
|
|
||||||
.getArray("sources")
|
|
||||||
.stream()
|
|
||||||
.filter(JsonObject.class::isInstance)
|
|
||||||
.map(JsonObject.class::cast)
|
|
||||||
.anyMatch(source -> {
|
|
||||||
final String imageName = source.getObject("clientResource")
|
|
||||||
.getString("imageName");
|
|
||||||
return "CHECK_CIRCLE_FILLED".equals(imageName)
|
|
||||||
|| "MUSIC_FILLED".equals(imageName);
|
|
||||||
}));
|
|
||||||
if (!hasCircleOrMusicIcon && pageHeaderViewModel.getObject("image")
|
if (!hasCircleOrMusicIcon && pageHeaderViewModel.getObject("image")
|
||||||
.has("contentPreviewImageViewModel")) {
|
.has("contentPreviewImageViewModel")) {
|
||||||
// If a pageHeaderRenderer has no object in which a check verified may be
|
// If a pageHeaderRenderer has no object in which a check verified may be
|
||||||
|
|
|
@ -1584,6 +1584,29 @@ public final class YoutubeParsingHelper {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean hasArtistOrVerifiedIconBadgeAttachment(
|
||||||
|
@Nonnull final JsonArray attachmentRuns) {
|
||||||
|
return attachmentRuns.stream()
|
||||||
|
.filter(JsonObject.class::isInstance)
|
||||||
|
.map(JsonObject.class::cast)
|
||||||
|
.anyMatch(attachmentRun -> attachmentRun.getObject("element")
|
||||||
|
.getObject("type")
|
||||||
|
.getObject("imageType")
|
||||||
|
.getObject("image")
|
||||||
|
.getArray("sources")
|
||||||
|
.stream()
|
||||||
|
.filter(JsonObject.class::isInstance)
|
||||||
|
.map(JsonObject.class::cast)
|
||||||
|
.anyMatch(source -> {
|
||||||
|
final String imageName = source.getObject("clientResource")
|
||||||
|
.getString("imageName");
|
||||||
|
return "CHECK_CIRCLE_FILLED".equals(imageName)
|
||||||
|
|| "AUDIO_BADGE".equals(imageName)
|
||||||
|
|| "MUSIC_FILLED".equals(imageName);
|
||||||
|
}));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate a content playback nonce (also called {@code cpn}), sent by YouTube clients in
|
* Generate a content playback nonce (also called {@code cpn}), sent by YouTube clients in
|
||||||
* playback requests (and also for some clients, in the player request body).
|
* playback requests (and also for some clients, in the player request body).
|
||||||
|
|
Loading…
Reference in New Issue