diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/search/InfoItemsSearchCollector.java b/extractor/src/main/java/org/schabi/newpipe/extractor/MultiInfoItemsCollector.java similarity index 89% rename from extractor/src/main/java/org/schabi/newpipe/extractor/search/InfoItemsSearchCollector.java rename to extractor/src/main/java/org/schabi/newpipe/extractor/MultiInfoItemsCollector.java index fd87b853d..1ceb1b139 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/search/InfoItemsSearchCollector.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/MultiInfoItemsCollector.java @@ -1,8 +1,5 @@ -package org.schabi.newpipe.extractor.search; +package org.schabi.newpipe.extractor; -import org.schabi.newpipe.extractor.InfoItem; -import org.schabi.newpipe.extractor.InfoItemExtractor; -import org.schabi.newpipe.extractor.InfoItemsCollector; import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor; import org.schabi.newpipe.extractor.channel.ChannelInfoItemsCollector; import org.schabi.newpipe.extractor.exceptions.ParsingException; @@ -36,7 +33,8 @@ import java.util.List; */ /** - * Collector for search results + * A collector that can handle many extractor types, to be used when a list contains items of + * different types (e.g. search) *

* This collector can handle the following extractor types: *

- * Calling {@link #extract(InfoItemExtractor)} or {@link #commit(Object)} with any + * Calling {@link #extract(InfoItemExtractor)} or {@link #commit(InfoItemExtractor)} with any * other extractor type will raise an exception. */ -public class InfoItemsSearchCollector extends InfoItemsCollector { +public class MultiInfoItemsCollector extends InfoItemsCollector { private final StreamInfoItemsCollector streamCollector; private final ChannelInfoItemsCollector userCollector; private final PlaylistInfoItemsCollector playlistCollector; - public InfoItemsSearchCollector(int serviceId) { + public MultiInfoItemsCollector(int serviceId) { super(serviceId); streamCollector = new StreamInfoItemsCollector(serviceId); userCollector = new ChannelInfoItemsCollector(serviceId); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSearchExtractor.java index 12585da39..cd0643951 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSearchExtractor.java @@ -15,7 +15,7 @@ import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem.BandcampSearchStreamInfoItemExtractor; @@ -50,7 +50,7 @@ public class BandcampSearchExtractor extends SearchExtractor { public InfoItemsPage getPage(final Page page) throws IOException, ExtractionException { final String html = getDownloader().get(page.getUrl()).responseBody(); - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); final Document d = Jsoup.parse(html); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java index 82c57475c..f4d48e557 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java @@ -15,7 +15,7 @@ import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.services.media_ccc.extractors.infoItems.MediaCCCStreamInfoItemExtractor; import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferencesListLinkHandlerFactory; @@ -66,7 +66,7 @@ public class MediaCCCSearchExtractor extends SearchExtractor { @Nonnull @Override public InfoItemsPage getInitialPage() { - final InfoItemsSearchCollector searchItems = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector searchItems = new MultiInfoItemsCollector(getServiceId()); if (getLinkHandler().getContentFilters().contains(CONFERENCES) || getLinkHandler().getContentFilters().contains(ALL) @@ -122,7 +122,7 @@ public class MediaCCCSearchExtractor extends SearchExtractor { private void searchConferences(final String searchString, final List channelItems, - final InfoItemsSearchCollector collector) { + final MultiInfoItemsCollector collector) { for (final ChannelInfoItem item : channelItems) { if (item.getName().toUpperCase().contains( searchString.toUpperCase())) { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java index c62cad912..854ace99b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java @@ -12,7 +12,7 @@ import org.schabi.newpipe.extractor.downloader.Response; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper; import org.schabi.newpipe.extractor.utils.Utils; @@ -87,7 +87,7 @@ public class PeertubeSearchExtractor extends SearchExtractor { PeertubeParsingHelper.validate(json); final long total = json.getLong("total"); - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); collectStreamsFrom(collector, json, getBaseUrl(), sepia); return new InfoItemsPage<>(collector, PeertubeParsingHelper.getNextPage(page.getUrl(), total)); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSearchExtractor.java index c939f23c0..01eebaf73 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSearchExtractor.java @@ -9,7 +9,7 @@ import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.utils.Parser; @@ -100,7 +100,7 @@ public class SoundcloudSearchExtractor extends SearchExtractor { private InfoItemsCollector collectItems( final JsonArray searchCollection) { - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); for (final Object result : searchCollection) { if (!(result instanceof JsonObject)) continue; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java index f7d4b9fc3..5f7cbc6c7 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeMusicSearchExtractor.java @@ -12,7 +12,7 @@ import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; import org.schabi.newpipe.extractor.localization.DateWrapper; import org.schabi.newpipe.extractor.localization.TimeAgoParser; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper; import org.schabi.newpipe.extractor.utils.JsonUtils; @@ -177,7 +177,7 @@ public class YoutubeMusicSearchExtractor extends SearchExtractor { @Nonnull @Override public InfoItemsPage getInitialPage() throws IOException, ExtractionException { - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); final JsonArray contents = JsonUtils.getArray(JsonUtils.getArray(initialData, "contents.tabbedSearchResultsRenderer.tabs").getObject(0), @@ -206,7 +206,7 @@ public class YoutubeMusicSearchExtractor extends SearchExtractor { throw new IllegalArgumentException("Page doesn't contain an URL"); } - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKey(); @@ -264,7 +264,7 @@ public class YoutubeMusicSearchExtractor extends SearchExtractor { return new InfoItemsPage<>(collector, getNextPageFrom(continuations)); } - private void collectMusicStreamsFrom(final InfoItemsSearchCollector collector, + private void collectMusicStreamsFrom(final MultiInfoItemsCollector collector, @Nonnull final JsonArray videos) { final TimeAgoParser timeAgoParser = getTimeAgoParser(); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java index 746e4964f..457ccbbf8 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeSearchExtractor.java @@ -11,7 +11,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler; import org.schabi.newpipe.extractor.localization.Localization; import org.schabi.newpipe.extractor.localization.TimeAgoParser; -import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector; +import org.schabi.newpipe.extractor.MultiInfoItemsCollector; import org.schabi.newpipe.extractor.search.SearchExtractor; import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper; import org.schabi.newpipe.extractor.utils.JsonUtils; @@ -132,7 +132,7 @@ public class YoutubeSearchExtractor extends SearchExtractor { @Nonnull @Override public InfoItemsPage getInitialPage() throws IOException, ExtractionException { - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); final JsonArray sections = initialData.getObject("contents") .getObject("twoColumnSearchResultsRenderer").getObject("primaryContents") @@ -163,7 +163,7 @@ public class YoutubeSearchExtractor extends SearchExtractor { } final Localization localization = getExtractorLocalization(); - final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId()); + final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId()); // @formatter:off final byte[] json = JsonWriter.string(prepareDesktopJsonBuilder(localization, @@ -195,7 +195,7 @@ public class YoutubeSearchExtractor extends SearchExtractor { .getObject("continuationItemRenderer"))); } - private void collectStreamsFrom(final InfoItemsSearchCollector collector, + private void collectStreamsFrom(final MultiInfoItemsCollector collector, final JsonArray contents) throws NothingFoundException, ParsingException { final TimeAgoParser timeAgoParser = getTimeAgoParser();