Skip to content

Commit ef67c7c

Browse files
committed
[YouTube] Simplify usage of channel header json
1 parent a104cf3 commit ef67c7c

1 file changed

Lines changed: 16 additions & 19 deletions

File tree

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

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
public class YoutubeChannelExtractor extends ChannelExtractor {
5858

5959
private JsonObject jsonResponse;
60+
6061
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
6162
private Optional<YoutubeChannelHelper.ChannelHeader> channelHeader;
6263

@@ -89,6 +90,7 @@ public void onFetchPage(@Nonnull final Downloader downloader)
8990
"EgZ2aWRlb3PyBgQKAjoA", getExtractorLocalization(), getExtractorContentCountry());
9091

9192
jsonResponse = data.jsonResponse;
93+
channelHeader = YoutubeChannelHelper.getChannelHeader(jsonResponse);
9294
channelId = data.channelId;
9395
channelAgeGateRenderer = getChannelAgeGateRenderer();
9496
}
@@ -115,12 +117,8 @@ private JsonObject getChannelAgeGateRenderer() {
115117
}
116118

117119
@Nonnull
118-
private Optional<YoutubeChannelHelper.ChannelHeader> getChannelHeader() {
119-
//noinspection OptionalAssignedToNull
120-
if (channelHeader == null) {
121-
channelHeader = YoutubeChannelHelper.getChannelHeader(jsonResponse);
122-
}
123-
return channelHeader;
120+
private Optional<JsonObject> getChannelHeaderJson() {
121+
return channelHeader.map(it -> it.json);
124122
}
125123

126124
@Nonnull
@@ -136,9 +134,9 @@ public String getUrl() throws ParsingException {
136134
@Nonnull
137135
@Override
138136
public String getId() throws ParsingException {
139-
return getChannelHeader()
140-
.flatMap(header -> Optional.ofNullable(header.json.getString("channelId"))
141-
.or(() -> Optional.ofNullable(header.json.getObject("navigationEndpoint")
137+
return getChannelHeaderJson()
138+
.flatMap(header -> Optional.ofNullable(header.getString("channelId"))
139+
.or(() -> Optional.ofNullable(header.getObject("navigationEndpoint")
142140
.getObject("browseEndpoint")
143141
.getString("browseId"))
144142
))
@@ -160,8 +158,8 @@ public String getName() throws ParsingException {
160158
return metadataRendererTitle;
161159
}
162160

163-
return getChannelHeader().flatMap(header -> {
164-
final Object title = header.json.get("title");
161+
return getChannelHeaderJson().flatMap(header -> {
162+
final Object title = header.get("title");
165163
if (title instanceof String) {
166164
return Optional.of((String) title);
167165
} else if (title instanceof JsonObject) {
@@ -180,7 +178,7 @@ public String getAvatarUrl() throws ParsingException {
180178
if (channelAgeGateRenderer != null) {
181179
avatarJsonObjectContainer = channelAgeGateRenderer;
182180
} else {
183-
avatarJsonObjectContainer = getChannelHeader().map(header -> header.json)
181+
avatarJsonObjectContainer = getChannelHeaderJson()
184182
.orElseThrow(() -> new ParsingException("Could not get avatar URL"));
185183
}
186184

@@ -196,8 +194,8 @@ public String getBannerUrl() throws ParsingException {
196194
return "";
197195
}
198196

199-
return getChannelHeader().flatMap(header -> Optional.ofNullable(
200-
header.json.getObject("banner")
197+
return getChannelHeaderJson().flatMap(header -> Optional.ofNullable(
198+
header.getObject("banner")
201199
.getArray("thumbnails")
202200
.getObject(0)
203201
.getString("url")))
@@ -226,9 +224,9 @@ public long getSubscriberCount() throws ParsingException {
226224
return UNKNOWN_SUBSCRIBER_COUNT;
227225
}
228226

229-
final Optional<YoutubeChannelHelper.ChannelHeader> headerOpt = getChannelHeader();
227+
final Optional<JsonObject> headerOpt = getChannelHeaderJson();
230228
if (headerOpt.isPresent()) {
231-
final JsonObject header = headerOpt.get().json;
229+
final JsonObject header = headerOpt.get();
232230
JsonObject textObject = null;
233231

234232
if (header.has("subscriberCountText")) {
@@ -285,9 +283,8 @@ public boolean isVerified() throws ParsingException {
285283
return false;
286284
}
287285

288-
final Optional<YoutubeChannelHelper.ChannelHeader> headerOpt = getChannelHeader();
289-
if (headerOpt.isPresent()) {
290-
final YoutubeChannelHelper.ChannelHeader header = headerOpt.get();
286+
if (channelHeader.isPresent()) {
287+
final YoutubeChannelHelper.ChannelHeader header = channelHeader.get();
291288

292289
// The CarouselHeaderRenderer does not contain any verification badges.
293290
// Since it is only shown on YT-internal channels or on channels of large organizations

0 commit comments

Comments
 (0)