Skip to content

Commit 20e4a35

Browse files
Theta-DevAudricV
authored andcommitted
[YouTube] Support richGridRenderer on channel pages
YouTube is deploying a new layout on their channel pages, which uses richGridRenderer JSON objects.
1 parent 4cae66f commit 20e4a35

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

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

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -332,16 +332,20 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws IOException, Extrac
332332
Page nextPage = null;
333333

334334
if (getVideoTab() != null) {
335-
final JsonObject gridRenderer = getVideoTab().getObject("content")
335+
final JsonObject tabContent = getVideoTab().getObject("content");
336+
JsonArray items = tabContent
336337
.getObject("sectionListRenderer")
337338
.getArray("contents").getObject(0).getObject("itemSectionRenderer")
338-
.getArray("contents").getObject(0).getObject("gridRenderer");
339+
.getArray("contents").getObject(0).getObject("gridRenderer").getArray("items");
340+
341+
if (items.isEmpty()) {
342+
items = tabContent.getObject("richGridRenderer").getArray("contents");
343+
}
339344

340345
final List<String> channelIds = new ArrayList<>();
341346
channelIds.add(getName());
342347
channelIds.add(getUrl());
343-
final JsonObject continuation = collectStreamsFrom(collector, gridRenderer
344-
.getArray("items"), channelIds);
348+
final JsonObject continuation = collectStreamsFrom(collector, items, channelIds);
345349

346350
nextPage = getNextPageFrom(continuation, channelIds);
347351
}
@@ -433,6 +437,21 @@ public String getUploaderUrl() {
433437
return uploaderUrl;
434438
}
435439
});
440+
} else if (video.has("richItemRenderer")) {
441+
collector.commit(new YoutubeStreamInfoItemExtractor(
442+
video.getObject("richItemRenderer")
443+
.getObject("content").getObject("videoRenderer"), timeAgoParser) {
444+
@Override
445+
public String getUploaderName() {
446+
return uploaderName;
447+
}
448+
449+
@Override
450+
public String getUploaderUrl() {
451+
return uploaderUrl;
452+
}
453+
});
454+
436455
} else if (video.has("continuationItemRenderer")) {
437456
continuation = video.getObject("continuationItemRenderer");
438457
}

0 commit comments

Comments
 (0)