mirror of
https://github.com/TeamNewPipe/NewPipeExtractor.git
synced 2025-04-28 07:50:34 +05:30
[YouTube] Move channel header's verified status code to YoutubeChannelHelper
Also throw an exception when we cannot get the verified status of a channel in YoutubeChannelExtractor due to a missing channelHeader, if the channel has no channelAgeGateRenderer.
This commit is contained in:
parent
9fa8d4c0b4
commit
5879190ada
@ -320,4 +320,35 @@ public final class YoutubeChannelHelper {
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a channel is verified by using its header.
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* The header is mandatory, so the verified status of age-restricted channels with a
|
||||||
|
* {@code channelAgeGateRenderer} cannot be checked.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param channelHeader the {@link ChannelHeader} of a non age-restricted channel
|
||||||
|
* @return whether the channel is verified
|
||||||
|
*/
|
||||||
|
public static boolean isChannelVerified(@Nonnull final ChannelHeader channelHeader) {
|
||||||
|
// carouselHeaderRenderer and pageHeaderRenderer does not contain any verification
|
||||||
|
// badges
|
||||||
|
// Since they are only shown on YouTube internal channels or on channels of large
|
||||||
|
// organizations broadcasting live events, we can assume the channel to be verified
|
||||||
|
if (channelHeader.headerType == ChannelHeader.HeaderType.CAROUSEL
|
||||||
|
|| channelHeader.headerType == ChannelHeader.HeaderType.PAGE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (channelHeader.headerType == ChannelHeader.HeaderType.INTERACTIVE_TABBED) {
|
||||||
|
// If the header has an autoGenerated property, it should mean that the channel has
|
||||||
|
// been auto generated by YouTube: we can assume the channel to be verified in this
|
||||||
|
// case
|
||||||
|
return channelHeader.json.has("autoGenerated");
|
||||||
|
}
|
||||||
|
|
||||||
|
return YoutubeParsingHelper.isVerified(channelHeader.json.getArray("badges"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -350,31 +350,12 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
|||||||
public boolean isVerified() throws ParsingException {
|
public boolean isVerified() throws ParsingException {
|
||||||
assertPageFetched();
|
assertPageFetched();
|
||||||
if (channelAgeGateRenderer != null) {
|
if (channelAgeGateRenderer != null) {
|
||||||
|
// Verified status is unknown with channelAgeGateRenderers, return false in this case
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelHeader.isPresent()) {
|
return YoutubeChannelHelper.isChannelVerified(channelHeader.orElseThrow(() ->
|
||||||
final ChannelHeader header = channelHeader.get();
|
new ParsingException("Could not get verified status")));
|
||||||
|
|
||||||
// carouselHeaderRenderer and pageHeaderRenderer does not contain any verification
|
|
||||||
// badges
|
|
||||||
// Since they are only shown on YouTube internal channels or on channels of large
|
|
||||||
// organizations broadcasting live events, we can assume the channel to be verified
|
|
||||||
if (header.headerType == HeaderType.CAROUSEL || header.headerType == HeaderType.PAGE) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (header.headerType == HeaderType.INTERACTIVE_TABBED) {
|
|
||||||
// If the header has an autoGenerated property, it should mean that the channel has
|
|
||||||
// been auto generated by YouTube: we can assume the channel to be verified in this
|
|
||||||
// case
|
|
||||||
return header.json.has("autoGenerated");
|
|
||||||
}
|
|
||||||
|
|
||||||
return YoutubeParsingHelper.isVerified(header.json.getArray("badges"));
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
Loading…
x
Reference in New Issue
Block a user