Skip to content

Commit 638da17

Browse files
committed
[Mix] Create MultiInfoItemsCollector
It is a collector that can handle many extractor types, to be used when a list contains items of different types (e.g. search). It was renamed from InfoItemsSearchCollector so that it can now be used not just for search but for any extractor needing it. It supports, streams, channels, playlists and *mixes*.
1 parent 53673d6 commit 638da17

7 files changed

Lines changed: 23 additions & 25 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/search/InfoItemsSearchCollector.java renamed to extractor/src/main/java/org/schabi/newpipe/extractor/MultiInfoItemsCollector.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
package org.schabi.newpipe.extractor.search;
1+
package org.schabi.newpipe.extractor;
22

3-
import org.schabi.newpipe.extractor.InfoItem;
4-
import org.schabi.newpipe.extractor.InfoItemExtractor;
5-
import org.schabi.newpipe.extractor.InfoItemsCollector;
63
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
74
import org.schabi.newpipe.extractor.channel.ChannelInfoItemsCollector;
85
import org.schabi.newpipe.extractor.exceptions.ParsingException;
@@ -36,23 +33,24 @@
3633
*/
3734

3835
/**
39-
* Collector for search results
36+
* A collector that can handle many extractor types, to be used when a list contains items of
37+
* different types (e.g. search)
4038
* <p>
4139
* This collector can handle the following extractor types:
4240
* <ul>
4341
* <li>{@link StreamInfoItemExtractor}</li>
4442
* <li>{@link ChannelInfoItemExtractor}</li>
4543
* <li>{@link PlaylistInfoItemExtractor}</li>
4644
* </ul>
47-
* Calling {@link #extract(InfoItemExtractor)} or {@link #commit(Object)} with any
45+
* Calling {@link #extract(InfoItemExtractor)} or {@link #commit(InfoItemExtractor)} with any
4846
* other extractor type will raise an exception.
4947
*/
50-
public class InfoItemsSearchCollector extends InfoItemsCollector<InfoItem, InfoItemExtractor> {
48+
public class MultiInfoItemsCollector extends InfoItemsCollector<InfoItem, InfoItemExtractor> {
5149
private final StreamInfoItemsCollector streamCollector;
5250
private final ChannelInfoItemsCollector userCollector;
5351
private final PlaylistInfoItemsCollector playlistCollector;
5452

55-
public InfoItemsSearchCollector(int serviceId) {
53+
public MultiInfoItemsCollector(int serviceId) {
5654
super(serviceId);
5755
streamCollector = new StreamInfoItemsCollector(serviceId);
5856
userCollector = new ChannelInfoItemsCollector(serviceId);

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampSearchExtractor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1616
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1717
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
18-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
18+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1919
import org.schabi.newpipe.extractor.search.SearchExtractor;
2020
import org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem.BandcampSearchStreamInfoItemExtractor;
2121

@@ -50,7 +50,7 @@ public List<MetaInfo> getMetaInfo() throws ParsingException {
5050
public InfoItemsPage<InfoItem> getPage(final Page page) throws IOException, ExtractionException {
5151
final String html = getDownloader().get(page.getUrl()).responseBody();
5252

53-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
53+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
5454

5555

5656
final Document d = Jsoup.parse(html);

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1616
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1717
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
18-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
18+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1919
import org.schabi.newpipe.extractor.search.SearchExtractor;
2020
import org.schabi.newpipe.extractor.services.media_ccc.extractors.infoItems.MediaCCCStreamInfoItemExtractor;
2121
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferencesListLinkHandlerFactory;
@@ -66,7 +66,7 @@ public List<MetaInfo> getMetaInfo() {
6666
@Nonnull
6767
@Override
6868
public InfoItemsPage<InfoItem> getInitialPage() {
69-
final InfoItemsSearchCollector searchItems = new InfoItemsSearchCollector(getServiceId());
69+
final MultiInfoItemsCollector searchItems = new MultiInfoItemsCollector(getServiceId());
7070

7171
if (getLinkHandler().getContentFilters().contains(CONFERENCES)
7272
|| getLinkHandler().getContentFilters().contains(ALL)
@@ -122,7 +122,7 @@ public void onFetchPage(@Nonnull final Downloader downloader)
122122

123123
private void searchConferences(final String searchString,
124124
final List<ChannelInfoItem> channelItems,
125-
final InfoItemsSearchCollector collector) {
125+
final MultiInfoItemsCollector collector) {
126126
for (final ChannelInfoItem item : channelItems) {
127127
if (item.getName().toUpperCase().contains(
128128
searchString.toUpperCase())) {

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeSearchExtractor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1313
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1414
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
15-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
15+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1616
import org.schabi.newpipe.extractor.search.SearchExtractor;
1717
import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper;
1818
import org.schabi.newpipe.extractor.utils.Utils;
@@ -87,7 +87,7 @@ public InfoItemsPage<InfoItem> getPage(final Page page) throws IOException, Extr
8787
PeertubeParsingHelper.validate(json);
8888
final long total = json.getLong("total");
8989

90-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
90+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
9191
collectStreamsFrom(collector, json, getBaseUrl(), sepia);
9292

9393
return new InfoItemsPage<>(collector, PeertubeParsingHelper.getNextPage(page.getUrl(), total));

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudSearchExtractor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
1010
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1111
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
12-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
12+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1313
import org.schabi.newpipe.extractor.search.SearchExtractor;
1414
import org.schabi.newpipe.extractor.utils.Parser;
1515

@@ -100,7 +100,7 @@ public void onFetchPage(@Nonnull final Downloader downloader) throws IOException
100100

101101
private InfoItemsCollector<InfoItem, InfoItemExtractor> collectItems(
102102
final JsonArray searchCollection) {
103-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
103+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
104104

105105
for (final Object result : searchCollection) {
106106
if (!(result instanceof JsonObject)) continue;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
1313
import org.schabi.newpipe.extractor.localization.DateWrapper;
1414
import org.schabi.newpipe.extractor.localization.TimeAgoParser;
15-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
15+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1616
import org.schabi.newpipe.extractor.search.SearchExtractor;
1717
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
1818
import org.schabi.newpipe.extractor.utils.JsonUtils;
@@ -177,7 +177,7 @@ public List<MetaInfo> getMetaInfo() {
177177
@Nonnull
178178
@Override
179179
public InfoItemsPage<InfoItem> getInitialPage() throws IOException, ExtractionException {
180-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
180+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
181181

182182
final JsonArray contents = JsonUtils.getArray(JsonUtils.getArray(initialData,
183183
"contents.tabbedSearchResultsRenderer.tabs").getObject(0),
@@ -206,7 +206,7 @@ public InfoItemsPage<InfoItem> getPage(final Page page)
206206
throw new IllegalArgumentException("Page doesn't contain an URL");
207207
}
208208

209-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
209+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
210210

211211
final String[] youtubeMusicKeys = YoutubeParsingHelper.getYoutubeMusicKey();
212212

@@ -264,7 +264,7 @@ public InfoItemsPage<InfoItem> getPage(final Page page)
264264
return new InfoItemsPage<>(collector, getNextPageFrom(continuations));
265265
}
266266

267-
private void collectMusicStreamsFrom(final InfoItemsSearchCollector collector,
267+
private void collectMusicStreamsFrom(final MultiInfoItemsCollector collector,
268268
@Nonnull final JsonArray videos) {
269269
final TimeAgoParser timeAgoParser = getTimeAgoParser();
270270

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
1212
import org.schabi.newpipe.extractor.localization.Localization;
1313
import org.schabi.newpipe.extractor.localization.TimeAgoParser;
14-
import org.schabi.newpipe.extractor.search.InfoItemsSearchCollector;
14+
import org.schabi.newpipe.extractor.MultiInfoItemsCollector;
1515
import org.schabi.newpipe.extractor.search.SearchExtractor;
1616
import org.schabi.newpipe.extractor.services.youtube.YoutubeParsingHelper;
1717
import org.schabi.newpipe.extractor.utils.JsonUtils;
@@ -132,7 +132,7 @@ public List<MetaInfo> getMetaInfo() throws ParsingException {
132132
@Nonnull
133133
@Override
134134
public InfoItemsPage<InfoItem> getInitialPage() throws IOException, ExtractionException {
135-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
135+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
136136

137137
final JsonArray sections = initialData.getObject("contents")
138138
.getObject("twoColumnSearchResultsRenderer").getObject("primaryContents")
@@ -163,7 +163,7 @@ public InfoItemsPage<InfoItem> getPage(final Page page) throws IOException,
163163
}
164164

165165
final Localization localization = getExtractorLocalization();
166-
final InfoItemsSearchCollector collector = new InfoItemsSearchCollector(getServiceId());
166+
final MultiInfoItemsCollector collector = new MultiInfoItemsCollector(getServiceId());
167167

168168
// @formatter:off
169169
final byte[] json = JsonWriter.string(prepareDesktopJsonBuilder(localization,
@@ -195,7 +195,7 @@ public InfoItemsPage<InfoItem> getPage(final Page page) throws IOException,
195195
.getObject("continuationItemRenderer")));
196196
}
197197

198-
private void collectStreamsFrom(final InfoItemsSearchCollector collector,
198+
private void collectStreamsFrom(final MultiInfoItemsCollector collector,
199199
final JsonArray contents) throws NothingFoundException,
200200
ParsingException {
201201
final TimeAgoParser timeAgoParser = getTimeAgoParser();

0 commit comments

Comments
 (0)