Skip to content

Commit c2a0922

Browse files
committed
searchfilters: convert core components to new framework
1 parent cc4c48d commit c2a0922

8 files changed

Lines changed: 89 additions & 54 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/ListInfo.java

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

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
46

57
import java.util.List;
68

79
public abstract class ListInfo<T extends InfoItem> extends Info {
810
private List<T> relatedItems;
911
private Page nextPage = null;
10-
private final List<String> contentFilters;
11-
private final String sortFilter;
12+
private final List<FilterItem> contentFilters;
13+
private final List<FilterItem> sortFilter;
1214

1315
public ListInfo(final int serviceId,
1416
final String id,
1517
final String url,
1618
final String originalUrl,
1719
final String name,
18-
final List<String> contentFilter,
19-
final String sortFilter) {
20+
final List<FilterItem> contentFilter,
21+
final List<FilterItem> sortFilter) {
2022
super(serviceId, id, url, originalUrl, name);
2123
this.contentFilters = contentFilter;
2224
this.sortFilter = sortFilter;
@@ -50,11 +52,11 @@ public void setNextPage(final Page page) {
5052
this.nextPage = page;
5153
}
5254

53-
public List<String> getContentFilters() {
55+
public List<FilterItem> getContentFilters() {
5456
return contentFilters;
5557
}
5658

57-
public String getSortFilter() {
59+
public List<FilterItem> getSortFilter() {
5860
return sortFilter;
5961
}
6062
}

extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java

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

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
46
import org.schabi.newpipe.extractor.comments.CommentsExtractor;
57
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
@@ -228,23 +230,24 @@ public abstract CommentsExtractor getCommentsExtractor(ListLinkHandler linkHandl
228230
//////////////////////////////////////////////////////////////////////////*/
229231

230232
public SearchExtractor getSearchExtractor(final String query,
231-
final List<String> contentFilter,
232-
final String sortFilter) throws ExtractionException {
233+
final List<FilterItem> contentFilter,
234+
final List<FilterItem> sortFilter)
235+
throws ExtractionException {
233236
return getSearchExtractor(getSearchQHFactory()
234237
.fromQuery(query, contentFilter, sortFilter));
235238
}
236239

237240
public ChannelExtractor getChannelExtractor(final String id,
238-
final List<String> contentFilter,
239-
final String sortFilter)
241+
final List<FilterItem> contentFilter,
242+
final List<FilterItem> sortFilter)
240243
throws ExtractionException {
241244
return getChannelExtractor(getChannelLHFactory()
242245
.fromQuery(id, contentFilter, sortFilter));
243246
}
244247

245248
public PlaylistExtractor getPlaylistExtractor(final String id,
246-
final List<String> contentFilter,
247-
final String sortFilter)
249+
final List<FilterItem> contentFilter,
250+
final List<FilterItem> sortFilter)
248251
throws ExtractionException {
249252
return getPlaylistExtractor(getPlaylistLHFactory()
250253
.fromQuery(id, contentFilter, sortFilter));

extractor/src/main/java/org/schabi/newpipe/extractor/feed/FeedInfo.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.schabi.newpipe.extractor.feed;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
46
import org.schabi.newpipe.extractor.ListInfo;
57
import org.schabi.newpipe.extractor.NewPipe;
@@ -8,6 +10,7 @@
810
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
911
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
1012

13+
1114
import java.io.IOException;
1215
import java.util.List;
1316

@@ -18,8 +21,8 @@ public FeedInfo(final int serviceId,
1821
final String url,
1922
final String originalUrl,
2023
final String name,
21-
final List<String> contentFilter,
22-
final String sortFilter) {
24+
final List<FilterItem> contentFilter,
25+
final List<FilterItem> sortFilter) {
2326
super(serviceId, id, url, originalUrl, name, contentFilter, sortFilter);
2427
}
2528

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import java.util.Collections;
46
import java.util.List;
57

68
public class ListLinkHandler extends LinkHandler {
7-
protected final List<String> contentFilters;
8-
protected final String sortFilter;
9+
protected final List<FilterItem> contentFilters;
10+
protected final List<FilterItem> sortFilter;
911

1012
public ListLinkHandler(final String originalUrl,
1113
final String url,
1214
final String id,
13-
final List<String> contentFilters,
14-
final String sortFilter) {
15+
final List<FilterItem> selectedContentFilters,
16+
final List<FilterItem> selectedSortFilter) {
1517
super(originalUrl, url, id);
16-
this.contentFilters = Collections.unmodifiableList(contentFilters);
17-
this.sortFilter = sortFilter;
18+
this.contentFilters = Collections.unmodifiableList(selectedContentFilters);
19+
this.sortFilter = selectedSortFilter;
1820
}
1921

2022
public ListLinkHandler(final ListLinkHandler handler) {
@@ -30,14 +32,14 @@ public ListLinkHandler(final LinkHandler handler) {
3032
handler.url,
3133
handler.id,
3234
Collections.emptyList(),
33-
"");
35+
null);
3436
}
3537

36-
public List<String> getContentFilters() {
38+
public List<FilterItem> getContentFilters() {
3739
return contentFilters;
3840
}
3941

40-
public String getSortFilter() {
42+
public List<FilterItem> getSortFilter() {
4143
return sortFilter;
4244
}
4345
}

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/ListLinkHandlerFactory.java

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
import org.schabi.newpipe.extractor.search.filter.FilterContainer;
5+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
6+
import org.schabi.newpipe.extractor.search.filter.SearchFiltersBase;
47
import org.schabi.newpipe.extractor.utils.Utils;
58

69
import java.util.ArrayList;
@@ -13,12 +16,14 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
1316
// To Override
1417
///////////////////////////////////
1518

16-
public abstract String getUrl(String id, List<String> contentFilter, String sortFilter)
19+
public abstract String getUrl(String id,
20+
List<FilterItem> contentFilter,
21+
List<FilterItem> sortFilter)
1722
throws ParsingException;
1823

1924
public String getUrl(final String id,
20-
final List<String> contentFilter,
21-
final String sortFilter,
25+
final List<FilterItem> contentFilter,
26+
final List<FilterItem> sortFilter,
2227
final String baseUrl) throws ParsingException {
2328
return getUrl(id, contentFilter, sortFilter);
2429
}
@@ -50,16 +55,16 @@ public ListLinkHandler fromId(final String id, final String baseUrl) throws Pars
5055
return new ListLinkHandler(super.fromId(id, baseUrl));
5156
}
5257

53-
public ListLinkHandler fromQuery(final String id,
54-
final List<String> contentFilters,
55-
final String sortFilter) throws ParsingException {
56-
final String url = getUrl(id, contentFilters, sortFilter);
57-
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
58+
public ListLinkHandler fromQuery(final String query,
59+
final List<FilterItem> contentFilter,
60+
final List<FilterItem> sortFilter) throws ParsingException {
61+
final String url = getUrl(query, contentFilter, sortFilter);
62+
return new ListLinkHandler(url, url, query, contentFilter, sortFilter);
5863
}
5964

6065
public ListLinkHandler fromQuery(final String id,
61-
final List<String> contentFilters,
62-
final String sortFilter,
66+
final List<FilterItem> contentFilters,
67+
final List<FilterItem> sortFilter,
6368
final String baseUrl) throws ParsingException {
6469
final String url = getUrl(id, contentFilters, sortFilter, baseUrl);
6570
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
@@ -73,31 +78,32 @@ public ListLinkHandler fromQuery(final String id,
7378
* @return the url corresponding to id without any filters applied
7479
*/
7580
public String getUrl(final String id) throws ParsingException {
76-
return getUrl(id, new ArrayList<>(0), "");
81+
return getUrl(id, new ArrayList<>(0), null);
7782
}
7883

7984
@Override
8085
public String getUrl(final String id, final String baseUrl) throws ParsingException {
81-
return getUrl(id, new ArrayList<>(0), "", baseUrl);
86+
return getUrl(id, new ArrayList<>(0), null, baseUrl);
8287
}
8388

8489
/**
85-
* Will returns content filter the corresponding extractor can handle like "channels", "videos",
86-
* "music", etc.
87-
*
88-
* @return filter that can be applied when building a query for getting a list
90+
* {@link SearchFiltersBase#getContentFilters()}
8991
*/
90-
public String[] getAvailableContentFilter() {
91-
return new String[0];
92+
public FilterContainer getAvailableContentFilter() {
93+
return null;
9294
}
9395

9496
/**
95-
* Will returns sort filter the corresponding extractor can handle like "A-Z", "oldest first",
96-
* "size", etc.
97-
*
98-
* @return filter that can be applied when building a query for getting a list
97+
* {@link SearchFiltersBase#getContentFilterSortFilterVariant(int)}
98+
*/
99+
public FilterContainer getContentFilterSortFilterVariant(final int contentFilterId) {
100+
return null;
101+
}
102+
103+
/**
104+
* {@link SearchFiltersBase#getFilterItem(int)}
99105
*/
100-
public String[] getAvailableSortFilter() {
101-
return new String[0];
106+
public FilterItem getFilterItem(final int filterId) {
107+
return null;
102108
}
103109
}

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/SearchQueryHandler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import java.util.List;
46

57
public class SearchQueryHandler extends ListLinkHandler {
68

79
public SearchQueryHandler(final String originalUrl,
810
final String url,
911
final String searchString,
10-
final List<String> contentFilters,
11-
final String sortFilter) {
12+
final List<FilterItem> contentFilters,
13+
final List<FilterItem> sortFilter) {
1214
super(originalUrl, url, searchString, contentFilters, sortFilter);
1315
}
1416

extractor/src/main/java/org/schabi/newpipe/extractor/linkhandler/SearchQueryHandlerFactory.java

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

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.exceptions.ParsingException;
46

57
import java.util.Collections;
@@ -12,8 +14,8 @@ public abstract class SearchQueryHandlerFactory extends ListLinkHandlerFactory {
1214
///////////////////////////////////
1315

1416
@Override
15-
public abstract String getUrl(String query, List<String> contentFilter, String sortFilter)
16-
throws ParsingException;
17+
public abstract String getUrl(String query, List<FilterItem> selectedContentFilter,
18+
List<FilterItem> selectedSortFilter) throws ParsingException;
1719

1820
@SuppressWarnings("unused")
1921
public String getSearchString(final String url) {
@@ -31,13 +33,13 @@ public String getId(final String url) {
3133

3234
@Override
3335
public SearchQueryHandler fromQuery(final String query,
34-
final List<String> contentFilter,
35-
final String sortFilter) throws ParsingException {
36+
final List<FilterItem> contentFilter,
37+
final List<FilterItem> sortFilter) throws ParsingException {
3638
return new SearchQueryHandler(super.fromQuery(query, contentFilter, sortFilter));
3739
}
3840

3941
public SearchQueryHandler fromQuery(final String query) throws ParsingException {
40-
return fromQuery(query, Collections.emptyList(), "");
42+
return fromQuery(query, Collections.emptyList(), null);
4143
}
4244

4345
/**

extractor/src/main/java/org/schabi/newpipe/extractor/utils/Utils.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package org.schabi.newpipe.extractor.utils;
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
5+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
46

57
import java.io.UnsupportedEncodingException;
68
import java.net.MalformedURLException;
79
import java.net.URL;
810
import java.net.URLDecoder;
911
import java.util.Arrays;
1012
import java.util.Collection;
13+
import java.util.List;
1114
import java.util.Map;
1215
import java.util.Objects;
1316
import java.util.regex.Pattern;
@@ -413,4 +416,16 @@ public static String getStringResultFromRegexArray(@Nonnull final String input,
413416

414417
throw new Parser.RegexException("No regex matched the input on group " + group);
415418
}
419+
420+
@SuppressWarnings("unchecked")
421+
public static <T extends FilterItem> T getFirstContentFilterItem(
422+
final SearchQueryHandler searchQueryHandler) {
423+
424+
final List<FilterItem> contentFilters = searchQueryHandler.getContentFilters();
425+
if (contentFilters != null && !contentFilters.isEmpty()) {
426+
return (T) contentFilters.get(0);
427+
} else {
428+
return null;
429+
}
430+
}
416431
}

0 commit comments

Comments
 (0)