Skip to content

Commit 4408e2d

Browse files
committed
[YouTube] Add Albums channel tab
1 parent 9ab932e commit 4408e2d

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,9 @@ private List<ListLinkHandler> getTabsForNonAgeRestrictedChannels() throws Parsin
445445
case "streams":
446446
addNonVideosTab.accept(ChannelTabs.LIVESTREAMS);
447447
break;
448+
case "releases":
449+
addNonVideosTab.accept(ChannelTabs.ALBUMS);
450+
break;
448451
case "playlists":
449452
addNonVideosTab.accept(ChannelTabs.PLAYLISTS);
450453
break;

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ private String getChannelTabsParameters() throws ParsingException {
7878
return "EgZzaG9ydHPyBgUKA5oBAA%3D%3D";
7979
case ChannelTabs.LIVESTREAMS:
8080
return "EgdzdHJlYW1z8gYECgJ6AA%3D%3D";
81+
case ChannelTabs.ALBUMS:
82+
return "EghyZWxlYXNlc_IGBQoDsgEA";
8183
case ChannelTabs.PLAYLISTS:
8284
return "EglwbGF5bGlzdHPyBgQKAkIA";
8385
default:
@@ -304,7 +306,7 @@ private Optional<JsonObject> collectItem(@Nonnull final MultiInfoItemsCollector
304306
richItem.getObject("reelItemRenderer"));
305307
} else if (richItem.has("playlistRenderer")) {
306308
getCommitPlaylistConsumer(collector, channelIds,
307-
item.getObject("playlistRenderer"));
309+
richItem.getObject("playlistRenderer"));
308310
}
309311
} else if (item.has("gridVideoRenderer")) {
310312
getCommitVideoConsumer(collector, timeAgoParser, channelIds,

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/linkHandler/YoutubeChannelTabLinkHandlerFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public static String getUrlSuffix(@Nonnull final String tab)
2929
return "/shorts";
3030
case ChannelTabs.LIVESTREAMS:
3131
return "/streams";
32+
case ChannelTabs.ALBUMS:
33+
return "/releases";
3234
case ChannelTabs.PLAYLISTS:
3335
return "/playlists";
3436
default:
@@ -65,6 +67,7 @@ public String[] getAvailableContentFilter() {
6567
ChannelTabs.VIDEOS,
6668
ChannelTabs.SHORTS,
6769
ChannelTabs.LIVESTREAMS,
70+
ChannelTabs.ALBUMS,
6871
ChannelTabs.PLAYLISTS
6972
};
7073
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelTabExtractorTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,28 @@ static void setUp() throws IOException, ExtractionException {
112112
@Override public boolean expectedHasMoreItems() { return true; }
113113
}
114114

115+
static class Albums extends DefaultListExtractorTest<ChannelTabExtractor> {
116+
private static YoutubeChannelTabExtractor extractor;
117+
118+
@BeforeAll
119+
static void setUp() throws IOException, ExtractionException {
120+
YoutubeTestsUtils.ensureStateless();
121+
NewPipe.init(DownloaderFactory.getDownloader(RESOURCE_PATH + "albums"));
122+
extractor = (YoutubeChannelTabExtractor) YouTube.getChannelTabExtractorFromId(
123+
"@Radiohead", ChannelTabs.ALBUMS);
124+
extractor.fetchPage();
125+
}
126+
127+
@Override public ChannelTabExtractor extractor() throws Exception { return extractor; }
128+
@Override public StreamingService expectedService() throws Exception { return YouTube; }
129+
@Override public String expectedName() throws Exception { return ChannelTabs.ALBUMS; }
130+
@Override public String expectedId() throws Exception { return "UCq19-LqvG35A-30oyAiPiqA"; }
131+
@Override public String expectedUrlContains() throws Exception { return "https://www.youtube.com/channel/UCq19-LqvG35A-30oyAiPiqA/releases"; }
132+
@Override public String expectedOriginalUrlContains() throws Exception { return "https://www.youtube.com/@Radiohead/releases"; }
133+
@Override public InfoItem.InfoType expectedInfoItemType() { return InfoItem.InfoType.PLAYLIST; }
134+
@Override public boolean expectedHasMoreItems() { return true; }
135+
}
136+
115137

116138
// TESTS FOR TABS OF AGE RESTRICTED CHANNELS
117139
// Fetching the tabs individually would use the standard tabs without fallback to

0 commit comments

Comments
 (0)