Skip to content

Commit b8eb121

Browse files
evermind-zzStypox
authored andcommitted
searchfilters: convert core components to new framework
1 parent 3956e22 commit b8eb121

8 files changed

Lines changed: 103 additions & 63 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.channel.tabs.ChannelTabExtractor;
57
import org.schabi.newpipe.extractor.comments.CommentsExtractor;
@@ -246,23 +248,24 @@ public abstract CommentsExtractor getCommentsExtractor(ListLinkHandler linkHandl
246248
//////////////////////////////////////////////////////////////////////////*/
247249

248250
public SearchExtractor getSearchExtractor(final String query,
249-
final List<String> contentFilter,
250-
final String sortFilter) throws ExtractionException {
251+
final List<FilterItem> contentFilter,
252+
final List<FilterItem> sortFilter)
253+
throws ExtractionException {
251254
return getSearchExtractor(getSearchQHFactory()
252255
.fromQuery(query, contentFilter, sortFilter));
253256
}
254257

255258
public ChannelExtractor getChannelExtractor(final String id,
256-
final List<String> contentFilter,
257-
final String sortFilter)
259+
final List<FilterItem> contentFilter,
260+
final List<FilterItem> sortFilter)
258261
throws ExtractionException {
259262
return getChannelExtractor(getChannelLHFactory()
260263
.fromQuery(id, contentFilter, sortFilter));
261264
}
262265

263266
public PlaylistExtractor getPlaylistExtractor(final String id,
264-
final List<String> contentFilter,
265-
final String sortFilter)
267+
final List<FilterItem> contentFilter,
268+
final List<FilterItem> sortFilter)
266269
throws ExtractionException {
267270
return getPlaylistExtractor(getPlaylistLHFactory()
268271
.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+
Collections.emptyList());
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
}
Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +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.FilterItem;
45
import org.schabi.newpipe.extractor.utils.Utils;
56

6-
import java.util.ArrayList;
77
import java.util.List;
88
import java.util.Objects;
99

@@ -13,12 +13,14 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
1313
// To Override
1414
///////////////////////////////////
1515

16-
public abstract String getUrl(String id, List<String> contentFilter, String sortFilter)
16+
public abstract String getUrl(String id,
17+
List<FilterItem> contentFilter,
18+
List<FilterItem> sortFilter)
1719
throws ParsingException, UnsupportedOperationException;
1820

1921
public String getUrl(final String id,
20-
final List<String> contentFilter,
21-
final String sortFilter,
22+
final List<FilterItem> contentFilter,
23+
final List<FilterItem> sortFilter,
2224
final String baseUrl)
2325
throws ParsingException, UnsupportedOperationException {
2426
return getUrl(id, contentFilter, sortFilter);
@@ -51,16 +53,16 @@ public ListLinkHandler fromId(final String id, final String baseUrl) throws Pars
5153
return new ListLinkHandler(super.fromId(id, baseUrl));
5254
}
5355

54-
public ListLinkHandler fromQuery(final String id,
55-
final List<String> contentFilters,
56-
final String sortFilter) throws ParsingException {
57-
final String url = getUrl(id, contentFilters, sortFilter);
58-
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);
5961
}
6062

6163
public ListLinkHandler fromQuery(final String id,
62-
final List<String> contentFilters,
63-
final String sortFilter,
64+
final List<FilterItem> contentFilters,
65+
final List<FilterItem> sortFilter,
6466
final String baseUrl) throws ParsingException {
6567
final String url = getUrl(id, contentFilters, sortFilter, baseUrl);
6668
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
@@ -74,31 +76,12 @@ public ListLinkHandler fromQuery(final String id,
7476
* @return the url corresponding to id without any filters applied
7577
*/
7678
public String getUrl(final String id) throws ParsingException, UnsupportedOperationException {
77-
return getUrl(id, new ArrayList<>(0), "");
79+
return getUrl(id, List.of(), List.of());
7880
}
7981

8082
@Override
81-
public String getUrl(final String id, final String baseUrl) throws ParsingException {
82-
return getUrl(id, new ArrayList<>(0), "", baseUrl);
83-
}
84-
85-
/**
86-
* Will returns content filter the corresponding extractor can handle like "channels", "videos",
87-
* "music", etc.
88-
*
89-
* @return filter that can be applied when building a query for getting a list
90-
*/
91-
public String[] getAvailableContentFilter() {
92-
return new String[0];
93-
}
94-
95-
/**
96-
* Will returns sort filter the corresponding extractor can handle like "A-Z", "oldest first",
97-
* "size", etc.
98-
*
99-
* @return filter that can be applied when building a query for getting a list
100-
*/
101-
public String[] getAvailableSortFilter() {
102-
return new String[0];
83+
public String getUrl(final String id, final String baseUrl)
84+
throws ParsingException, UnsupportedOperationException {
85+
return getUrl(id, List.of(), List.of(), baseUrl);
10386
}
10487
}

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 & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +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)
23+
public abstract String getUrl(String query, List<FilterItem> selectedContentFilter,
24+
List<FilterItem> selectedSortFilter)
1625
throws ParsingException, UnsupportedOperationException;
1726

1827
@SuppressWarnings("unused")
@@ -31,13 +40,13 @@ public String getId(final String url) throws ParsingException, UnsupportedOperat
3140

3241
@Override
3342
public SearchQueryHandler fromQuery(final String query,
34-
final List<String> contentFilter,
35-
final String sortFilter) throws ParsingException {
43+
final List<FilterItem> contentFilter,
44+
final List<FilterItem> sortFilter) throws ParsingException {
3645
return new SearchQueryHandler(super.fromQuery(query, contentFilter, sortFilter));
3746
}
3847

3948
public SearchQueryHandler fromQuery(final String query) throws ParsingException {
40-
return fromQuery(query, Collections.emptyList(), "");
49+
return fromQuery(query, List.of(), List.of());
4150
}
4251

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

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,6 +1,8 @@
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;
@@ -10,6 +12,7 @@
1012
import java.nio.charset.StandardCharsets;
1113
import java.util.Arrays;
1214
import java.util.Collection;
15+
import java.util.List;
1316
import java.util.Map;
1417
import java.util.Objects;
1518
import java.util.regex.Pattern;
@@ -417,4 +420,16 @@ public static String getStringResultFromRegexArray(@Nonnull final String input,
417420

418421
throw new Parser.RegexException("No regex matched the input on group " + group);
419422
}
423+
424+
@SuppressWarnings("unchecked")
425+
public static <T extends FilterItem> T getFirstContentFilterItem(
426+
final SearchQueryHandler searchQueryHandler) {
427+
428+
final List<FilterItem> contentFilters = searchQueryHandler.getContentFilters();
429+
if (contentFilters != null && !contentFilters.isEmpty()) {
430+
return (T) contentFilters.get(0);
431+
} else {
432+
return null;
433+
}
434+
}
420435
}

0 commit comments

Comments
 (0)