2
0
mirror of https://github.com/TeamNewPipe/NewPipeExtractor synced 2025-08-22 09:57:38 +00:00

[YouTube] Add trending gaming videos extractor from Gaming system channel

This commit is contained in:
AudricV 2025-07-26 23:07:59 +02:00
parent a870e3767d
commit f4b0a7d97e
No known key found for this signature in database
GPG Key ID: DA92EC7905614198
3 changed files with 75 additions and 0 deletions

View File

@ -37,6 +37,7 @@ import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSubscript
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeSuggestionExtractor;
import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeTrendingExtractor;
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeLiveExtractor;
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeTrendingGamingVideosExtractor;
import org.schabi.newpipe.extractor.services.youtube.extractors.kiosk.YoutubeTrendingPodcastsEpisodesExtractor;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelLinkHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeChannelTabLinkHandlerFactory;
@ -45,6 +46,7 @@ import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeLiveLink
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubePlaylistLinkHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeSearchQueryHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeStreamLinkHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingGamingVideosLinkHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingLinkHandlerFactory;
import org.schabi.newpipe.extractor.services.youtube.linkHandler.YoutubeTrendingPodcastsEpisodesLinkHandlerFactory;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
@ -163,6 +165,8 @@ public class YoutubeService extends StreamingService {
YoutubeLiveLinkHandlerFactory.INSTANCE;
final ListLinkHandlerFactory trendingPodcastsEpisodesLHF =
YoutubeTrendingPodcastsEpisodesLinkHandlerFactory.INSTANCE;
final ListLinkHandlerFactory trendingGamingVideosLHF =
YoutubeTrendingGamingVideosLinkHandlerFactory.INSTANCE;
try {
list.addKioskEntry(
@ -181,6 +185,14 @@ public class YoutubeService extends StreamingService {
trendingPodcastsEpisodesLHF,
YoutubeTrendingPodcastsEpisodesLinkHandlerFactory.KIOSK_ID
);
list.addKioskEntry(
(streamingService, url, id) -> new YoutubeTrendingGamingVideosExtractor(
YoutubeService.this,
trendingGamingVideosLHF.fromUrl(url),
id),
trendingGamingVideosLHF,
YoutubeTrendingGamingVideosLinkHandlerFactory.KIOSK_ID
);
list.addKioskEntry(
(streamingService, url, id) -> new YoutubeTrendingExtractor(
YoutubeService.this,

View File

@ -0,0 +1,14 @@
package org.schabi.newpipe.extractor.services.youtube.extractors.kiosk;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
public class YoutubeTrendingGamingVideosExtractor extends YoutubeDesktopBaseKioskExtractor {
public YoutubeTrendingGamingVideosExtractor(final StreamingService streamingService,
final ListLinkHandler linkHandler,
final String kioskId) {
super(streamingService, linkHandler, kioskId, "UCOpNcN46UbXVtpKMrmU4Abg",
"Egh0cmVuZGluZw%3D%3D");
}
}

View File

@ -0,0 +1,49 @@
package org.schabi.newpipe.extractor.services.youtube.linkHandler;
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isInvidiousURL;
import static org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper.isYoutubeURL;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
import org.schabi.newpipe.extractor.utils.Utils;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public final class YoutubeTrendingGamingVideosLinkHandlerFactory extends ListLinkHandlerFactory {
public static final String KIOSK_ID = "trending_gaming";
public static final YoutubeTrendingGamingVideosLinkHandlerFactory INSTANCE =
new YoutubeTrendingGamingVideosLinkHandlerFactory();
private YoutubeTrendingGamingVideosLinkHandlerFactory() {
}
@Override
public String getUrl(final String id,
final List<String> contentFilters,
final String sortFilter)
throws ParsingException, UnsupportedOperationException {
return "https://www.youtube.com/gaming/trending";
}
@Override
public String getId(final String url) throws ParsingException, UnsupportedOperationException {
return KIOSK_ID;
}
@Override
public boolean onAcceptUrl(final String url) {
final URL urlObj;
try {
urlObj = Utils.stringToURL(url);
} catch (final MalformedURLException e) {
return false;
}
return Utils.isHTTP(urlObj) && (isYoutubeURL(urlObj) || isInvidiousURL(urlObj))
&& "/gaming/trending".equals(urlObj.getPath());
}
}