Skip to content

Commit bf9e3c2

Browse files
committed
searchfilters: convert core components to new framework
1 parent 5c3d6e2 commit bf9e3c2

8 files changed

Lines changed: 101 additions & 62 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: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
45
import org.schabi.newpipe.extractor.utils.Utils;
56

67
import java.util.ArrayList;
@@ -13,12 +14,14 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
1314
// To Override
1415
///////////////////////////////////
1516

16-
public abstract String getUrl(String id, List<String> contentFilter, String sortFilter)
17+
public abstract String getUrl(String id,
18+
List<FilterItem> contentFilter,
19+
List<FilterItem> sortFilter)
1720
throws ParsingException;
1821

1922
public String getUrl(final String id,
20-
final List<String> contentFilter,
21-
final String sortFilter,
23+
final List<FilterItem> contentFilter,
24+
final List<FilterItem> sortFilter,
2225
final String baseUrl) throws ParsingException {
2326
return getUrl(id, contentFilter, sortFilter);
2427
}
@@ -50,16 +53,16 @@ public ListLinkHandler fromId(final String id, final String baseUrl) throws Pars
5053
return new ListLinkHandler(super.fromId(id, baseUrl));
5154
}
5255

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);
56+
public ListLinkHandler fromQuery(final String query,
57+
final List<FilterItem> contentFilter,
58+
final List<FilterItem> sortFilter) throws ParsingException {
59+
final String url = getUrl(query, contentFilter, sortFilter);
60+
return new ListLinkHandler(url, url, query, contentFilter, sortFilter);
5861
}
5962

6063
public ListLinkHandler fromQuery(final String id,
61-
final List<String> contentFilters,
62-
final String sortFilter,
64+
final List<FilterItem> contentFilters,
65+
final List<FilterItem> sortFilter,
6366
final String baseUrl) throws ParsingException {
6467
final String url = getUrl(id, contentFilters, sortFilter, baseUrl);
6568
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
@@ -73,31 +76,11 @@ public ListLinkHandler fromQuery(final String id,
7376
* @return the url corresponding to id without any filters applied
7477
*/
7578
public String getUrl(final String id) throws ParsingException {
76-
return getUrl(id, new ArrayList<>(0), "");
79+
return getUrl(id, new ArrayList<>(0), null);
7780
}
7881

7982
@Override
8083
public String getUrl(final String id, final String baseUrl) throws ParsingException {
81-
return getUrl(id, new ArrayList<>(0), "", baseUrl);
82-
}
83-
84-
/**
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
89-
*/
90-
public String[] getAvailableContentFilter() {
91-
return new String[0];
92-
}
93-
94-
/**
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
99-
*/
100-
public String[] getAvailableSortFilter() {
101-
return new String[0];
84+
return getUrl(id, new ArrayList<>(0), null, baseUrl);
10285
}
10386
}

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: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
package org.schabi.newpipe.extractor.linkhandler;
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
import org.schabi.newpipe.extractor.search.filter.BaseSearchFilters;
5+
import org.schabi.newpipe.extractor.search.filter.FilterContainer;
6+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
47

58
import java.util.Collections;
69
import java.util.List;
710

811
public abstract class SearchQueryHandlerFactory extends ListLinkHandlerFactory {
12+
protected final BaseSearchFilters searchFilters;
13+
14+
protected SearchQueryHandlerFactory(final BaseSearchFilters searchFilters) {
15+
this.searchFilters = searchFilters;
16+
}
917

1018
///////////////////////////////////
1119
// To Override
1220
///////////////////////////////////
1321

1422
@Override
15-
public abstract String getUrl(String query, List<String> contentFilter, String sortFilter)
16-
throws ParsingException;
23+
public abstract String getUrl(String query, List<FilterItem> selectedContentFilter,
24+
List<FilterItem> selectedSortFilter) throws ParsingException;
1725

1826
@SuppressWarnings("unused")
1927
public String getSearchString(final String url) {
@@ -31,13 +39,13 @@ public String getId(final String url) {
3139

3240
@Override
3341
public SearchQueryHandler fromQuery(final String query,
34-
final List<String> contentFilter,
35-
final String sortFilter) throws ParsingException {
42+
final List<FilterItem> contentFilter,
43+
final List<FilterItem> sortFilter) throws ParsingException {
3644
return new SearchQueryHandler(super.fromQuery(query, contentFilter, sortFilter));
3745
}
3846

3947
public SearchQueryHandler fromQuery(final String query) throws ParsingException {
40-
return fromQuery(query, Collections.emptyList(), "");
48+
return fromQuery(query, Collections.emptyList(), null);
4149
}
4250

4351
/**
@@ -47,4 +55,25 @@ public SearchQueryHandler fromQuery(final String query) throws ParsingException
4755
public boolean onAcceptUrl(final String url) {
4856
return false;
4957
}
58+
59+
/**
60+
* {@link BaseSearchFilters#getContentFilters()}
61+
*/
62+
public FilterContainer getAvailableContentFilter() {
63+
return searchFilters.getContentFilters();
64+
}
65+
66+
/**
67+
* {@link BaseSearchFilters#getContentFilterSortFilterVariant(int)}
68+
*/
69+
public FilterContainer getContentFilterSortFilterVariant(final int contentFilterId) {
70+
return searchFilters.getContentFilterSortFilterVariant(contentFilterId);
71+
}
72+
73+
/**
74+
* {@link BaseSearchFilters#getFilterItem(int)}
75+
*/
76+
public FilterItem getFilterItem(final int filterId) {
77+
return searchFilters.getFilterItem(filterId);
78+
}
5079
}

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)