Skip to content

Commit f4b0a7d

Browse files
committed
[YouTube] Add trending gaming videos extractor from Gaming system channel
1 parent a870e37 commit f4b0a7d

3 files changed

Lines changed: 75 additions & 0 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSuggestionExtractor;
3838
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor;
3939
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeLiveExtractor;
40+
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeTrendingGamingVideosExtractor;
4041
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeTrendingPodcastsEpisodesExtractor;
4142
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
4243
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelTabLinkHandlerFactory;
@@ -45,6 +46,7 @@
4546
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubePlaylistLinkHandlerFactory;
4647
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory;
4748
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
49+
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingGamingVideosLinkHandlerFactory;
4850
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingLinkHandlerFactory;
4951
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingPodcastsEpisodesLinkHandlerFactory;
5052
import org.schabi.newpipe.extractor.stream.StreamExtractor;
@@ -163,6 +165,8 @@ public KioskList getKioskList() throws ExtractionException {
163165
YoutubeLiveLinkHandlerFactory.INSTANCE;
164166
final ListLinkHandlerFactory trendingPodcastsEpisodesLHF =
165167
YoutubeTrendingPodcastsEpisodesLinkHandlerFactory.INSTANCE;
168+
final ListLinkHandlerFactory trendingGamingVideosLHF =
169+
YoutubeTrendingGamingVideosLinkHandlerFactory.INSTANCE;
166170

167171
try {
168172
list.addKioskEntry(
@@ -181,6 +185,14 @@ public KioskList getKioskList() throws ExtractionException {
181185
trendingPodcastsEpisodesLHF,
182186
YoutubeTrendingPodcastsEpisodesLinkHandlerFactory.KIOSK_ID
183187
);
188+
list.addKioskEntry(
189+
(streamingService, url, id) -> new YoutubeTrendingGamingVideosExtractor(
190+
YoutubeService.this,
191+
trendingGamingVideosLHF.fromUrl(url),
192+
id),
193+
trendingGamingVideosLHF,
194+
YoutubeTrendingGamingVideosLinkHandlerFactory.KIOSK_ID
195+
);
184196
list.addKioskEntry(
185197
(streamingService, url, id) -> new YoutubeTrendingExtractor(
186198
YoutubeService.this,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.schabi.newpipe.extractor.services.youtube.extractors.kiosk;
2+
3+
import org.schabi.newpipe.extractor.StreamingService;
4+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
5+
6+
public class YoutubeTrendingGamingVideosExtractor extends YoutubeDesktopBaseKioskExtractor {
7+
8+
public YoutubeTrendingGamingVideosExtractor(final StreamingService streamingService,
9+
final ListLinkHandler linkHandler,
10+
final String kioskId) {
11+
super(streamingService, linkHandler, kioskId, "UCOpNcN46UbXVtpKMrmU4Abg",
12+
"Egh0cmVuZGluZw%3D%3D");
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.schabi.newpipe.extractor.services.youtube.linkHandler;
2+
3+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isInvidiousURL;
4+
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isYoutubeURL;
5+
6+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
7+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
8+
import org.schabi.newpipe.extractor.utils.Utils;
9+
10+
import java.net.MalformedURLException;
11+
import java.net.URL;
12+
import java.util.List;
13+
14+
public final class YoutubeTrendingGamingVideosLinkHandlerFactory extends ListLinkHandlerFactory {
15+
16+
public static final String KIOSK_ID = "trending_gaming";
17+
18+
public static final YoutubeTrendingGamingVideosLinkHandlerFactory INSTANCE =
19+
new YoutubeTrendingGamingVideosLinkHandlerFactory();
20+
21+
private YoutubeTrendingGamingVideosLinkHandlerFactory() {
22+
}
23+
24+
@Override
25+
public String getUrl(final String id,
26+
final List<String> contentFilters,
27+
final String sortFilter)
28+
throws ParsingException, UnsupportedOperationException {
29+
return "https://www.youtube.com/gaming/trending";
30+
}
31+
32+
@Override
33+
public String getId(final String url) throws ParsingException, UnsupportedOperationException {
34+
return KIOSK_ID;
35+
}
36+
37+
@Override
38+
public boolean onAcceptUrl(final String url) {
39+
final URL urlObj;
40+
try {
41+
urlObj = Utils.stringToURL(url);
42+
} catch (final MalformedURLException e) {
43+
return false;
44+
}
45+
46+
return Utils.isHTTP(urlObj) && (isYoutubeURL(urlObj) || isInvidiousURL(urlObj))
47+
&& "/gaming/trending".equals(urlObj.getPath());
48+
}
49+
}

0 commit comments

Comments
 (0)