searchfilters: convert core components to new framework
This commit is contained in:
parent
3956e22c8e
commit
b8eb1212a8
|
@ -1,5 +1,7 @@
|
|||
package org.schabi.newpipe.extractor;
|
||||
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -7,16 +9,16 @@ import java.util.List;
|
|||
public abstract class ListInfo<T extends InfoItem> extends Info {
|
||||
private List<T> relatedItems;
|
||||
private Page nextPage = null;
|
||||
private final List<String> contentFilters;
|
||||
private final String sortFilter;
|
||||
private final List<FilterItem> contentFilters;
|
||||
private final List<FilterItem> sortFilter;
|
||||
|
||||
public ListInfo(final int serviceId,
|
||||
final String id,
|
||||
final String url,
|
||||
final String originalUrl,
|
||||
final String name,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter) {
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter) {
|
||||
super(serviceId, id, url, originalUrl, name);
|
||||
this.contentFilters = contentFilter;
|
||||
this.sortFilter = sortFilter;
|
||||
|
@ -50,11 +52,11 @@ public abstract class ListInfo<T extends InfoItem> extends Info {
|
|||
this.nextPage = page;
|
||||
}
|
||||
|
||||
public List<String> getContentFilters() {
|
||||
public List<FilterItem> getContentFilters() {
|
||||
return contentFilters;
|
||||
}
|
||||
|
||||
public String getSortFilter() {
|
||||
public List<FilterItem> getSortFilter() {
|
||||
return sortFilter;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.schabi.newpipe.extractor;
|
||||
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
|
||||
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabExtractor;
|
||||
import org.schabi.newpipe.extractor.comments.CommentsExtractor;
|
||||
|
@ -246,23 +248,24 @@ public abstract class StreamingService {
|
|||
//////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
public SearchExtractor getSearchExtractor(final String query,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter) throws ExtractionException {
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter)
|
||||
throws ExtractionException {
|
||||
return getSearchExtractor(getSearchQHFactory()
|
||||
.fromQuery(query, contentFilter, sortFilter));
|
||||
}
|
||||
|
||||
public ChannelExtractor getChannelExtractor(final String id,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter)
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter)
|
||||
throws ExtractionException {
|
||||
return getChannelExtractor(getChannelLHFactory()
|
||||
.fromQuery(id, contentFilter, sortFilter));
|
||||
}
|
||||
|
||||
public PlaylistExtractor getPlaylistExtractor(final String id,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter)
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter)
|
||||
throws ExtractionException {
|
||||
return getPlaylistExtractor(getPlaylistLHFactory()
|
||||
.fromQuery(id, contentFilter, sortFilter));
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.schabi.newpipe.extractor.feed;
|
||||
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
|
||||
import org.schabi.newpipe.extractor.ListInfo;
|
||||
import org.schabi.newpipe.extractor.NewPipe;
|
||||
|
@ -8,6 +10,7 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException;
|
|||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -18,8 +21,8 @@ public class FeedInfo extends ListInfo<StreamInfoItem> {
|
|||
final String url,
|
||||
final String originalUrl,
|
||||
final String name,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter) {
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter) {
|
||||
super(serviceId, id, url, originalUrl, name, contentFilter, sortFilter);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
package org.schabi.newpipe.extractor.linkhandler;
|
||||
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class ListLinkHandler extends LinkHandler {
|
||||
protected final List<String> contentFilters;
|
||||
protected final String sortFilter;
|
||||
protected final List<FilterItem> contentFilters;
|
||||
protected final List<FilterItem> sortFilter;
|
||||
|
||||
public ListLinkHandler(final String originalUrl,
|
||||
final String url,
|
||||
final String id,
|
||||
final List<String> contentFilters,
|
||||
final String sortFilter) {
|
||||
final List<FilterItem> selectedContentFilters,
|
||||
final List<FilterItem> selectedSortFilter) {
|
||||
super(originalUrl, url, id);
|
||||
this.contentFilters = Collections.unmodifiableList(contentFilters);
|
||||
this.sortFilter = sortFilter;
|
||||
this.contentFilters = Collections.unmodifiableList(selectedContentFilters);
|
||||
this.sortFilter = selectedSortFilter;
|
||||
}
|
||||
|
||||
public ListLinkHandler(final ListLinkHandler handler) {
|
||||
|
@ -30,14 +32,14 @@ public class ListLinkHandler extends LinkHandler {
|
|||
handler.url,
|
||||
handler.id,
|
||||
Collections.emptyList(),
|
||||
"");
|
||||
Collections.emptyList());
|
||||
}
|
||||
|
||||
public List<String> getContentFilters() {
|
||||
public List<FilterItem> getContentFilters() {
|
||||
return contentFilters;
|
||||
}
|
||||
|
||||
public String getSortFilter() {
|
||||
public List<FilterItem> getSortFilter() {
|
||||
return sortFilter;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package org.schabi.newpipe.extractor.linkhandler;
|
||||
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
import org.schabi.newpipe.extractor.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
@ -13,12 +13,14 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
|
|||
// To Override
|
||||
///////////////////////////////////
|
||||
|
||||
public abstract String getUrl(String id, List<String> contentFilter, String sortFilter)
|
||||
public abstract String getUrl(String id,
|
||||
List<FilterItem> contentFilter,
|
||||
List<FilterItem> sortFilter)
|
||||
throws ParsingException, UnsupportedOperationException;
|
||||
|
||||
public String getUrl(final String id,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter,
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter,
|
||||
final String baseUrl)
|
||||
throws ParsingException, UnsupportedOperationException {
|
||||
return getUrl(id, contentFilter, sortFilter);
|
||||
|
@ -51,16 +53,16 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
|
|||
return new ListLinkHandler(super.fromId(id, baseUrl));
|
||||
}
|
||||
|
||||
public ListLinkHandler fromQuery(final String id,
|
||||
final List<String> contentFilters,
|
||||
final String sortFilter) throws ParsingException {
|
||||
final String url = getUrl(id, contentFilters, sortFilter);
|
||||
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
|
||||
public ListLinkHandler fromQuery(final String query,
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter) throws ParsingException {
|
||||
final String url = getUrl(query, contentFilter, sortFilter);
|
||||
return new ListLinkHandler(url, url, query, contentFilter, sortFilter);
|
||||
}
|
||||
|
||||
public ListLinkHandler fromQuery(final String id,
|
||||
final List<String> contentFilters,
|
||||
final String sortFilter,
|
||||
final List<FilterItem> contentFilters,
|
||||
final List<FilterItem> sortFilter,
|
||||
final String baseUrl) throws ParsingException {
|
||||
final String url = getUrl(id, contentFilters, sortFilter, baseUrl);
|
||||
return new ListLinkHandler(url, url, id, contentFilters, sortFilter);
|
||||
|
@ -74,31 +76,12 @@ public abstract class ListLinkHandlerFactory extends LinkHandlerFactory {
|
|||
* @return the url corresponding to id without any filters applied
|
||||
*/
|
||||
public String getUrl(final String id) throws ParsingException, UnsupportedOperationException {
|
||||
return getUrl(id, new ArrayList<>(0), "");
|
||||
return getUrl(id, List.of(), List.of());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUrl(final String id, final String baseUrl) throws ParsingException {
|
||||
return getUrl(id, new ArrayList<>(0), "", baseUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Will returns content filter the corresponding extractor can handle like "channels", "videos",
|
||||
* "music", etc.
|
||||
*
|
||||
* @return filter that can be applied when building a query for getting a list
|
||||
*/
|
||||
public String[] getAvailableContentFilter() {
|
||||
return new String[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Will returns sort filter the corresponding extractor can handle like "A-Z", "oldest first",
|
||||
* "size", etc.
|
||||
*
|
||||
* @return filter that can be applied when building a query for getting a list
|
||||
*/
|
||||
public String[] getAvailableSortFilter() {
|
||||
return new String[0];
|
||||
public String getUrl(final String id, final String baseUrl)
|
||||
throws ParsingException, UnsupportedOperationException {
|
||||
return getUrl(id, List.of(), List.of(), baseUrl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.schabi.newpipe.extractor.linkhandler;
|
||||
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SearchQueryHandler extends ListLinkHandler {
|
||||
|
@ -7,8 +9,8 @@ public class SearchQueryHandler extends ListLinkHandler {
|
|||
public SearchQueryHandler(final String originalUrl,
|
||||
final String url,
|
||||
final String searchString,
|
||||
final List<String> contentFilters,
|
||||
final String sortFilter) {
|
||||
final List<FilterItem> contentFilters,
|
||||
final List<FilterItem> sortFilter) {
|
||||
super(originalUrl, url, searchString, contentFilters, sortFilter);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,27 @@
|
|||
package org.schabi.newpipe.extractor.linkhandler;
|
||||
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
import org.schabi.newpipe.extractor.search.filter.BaseSearchFilters;
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterContainer;
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class SearchQueryHandlerFactory extends ListLinkHandlerFactory {
|
||||
protected final BaseSearchFilters searchFilters;
|
||||
|
||||
protected SearchQueryHandlerFactory(final BaseSearchFilters searchFilters) {
|
||||
this.searchFilters = searchFilters;
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
// To Override
|
||||
///////////////////////////////////
|
||||
|
||||
@Override
|
||||
public abstract String getUrl(String query, List<String> contentFilter, String sortFilter)
|
||||
public abstract String getUrl(String query, List<FilterItem> selectedContentFilter,
|
||||
List<FilterItem> selectedSortFilter)
|
||||
throws ParsingException, UnsupportedOperationException;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
@ -31,13 +40,13 @@ public abstract class SearchQueryHandlerFactory extends ListLinkHandlerFactory {
|
|||
|
||||
@Override
|
||||
public SearchQueryHandler fromQuery(final String query,
|
||||
final List<String> contentFilter,
|
||||
final String sortFilter) throws ParsingException {
|
||||
final List<FilterItem> contentFilter,
|
||||
final List<FilterItem> sortFilter) throws ParsingException {
|
||||
return new SearchQueryHandler(super.fromQuery(query, contentFilter, sortFilter));
|
||||
}
|
||||
|
||||
public SearchQueryHandler fromQuery(final String query) throws ParsingException {
|
||||
return fromQuery(query, Collections.emptyList(), "");
|
||||
return fromQuery(query, List.of(), List.of());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -47,4 +56,25 @@ public abstract class SearchQueryHandlerFactory extends ListLinkHandlerFactory {
|
|||
public boolean onAcceptUrl(final String url) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link BaseSearchFilters#getContentFilters()}
|
||||
*/
|
||||
public FilterContainer getAvailableContentFilter() {
|
||||
return searchFilters.getContentFilters();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link BaseSearchFilters#getContentFilterSortFilterVariant(int)}
|
||||
*/
|
||||
public FilterContainer getContentFilterSortFilterVariant(final int contentFilterId) {
|
||||
return searchFilters.getContentFilterSortFilterVariant(contentFilterId);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link BaseSearchFilters#getFilterItem(int)}
|
||||
*/
|
||||
public FilterItem getFilterItem(final int filterId) {
|
||||
return searchFilters.getFilterItem(filterId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.schabi.newpipe.extractor.utils;
|
||||
|
||||
import org.schabi.newpipe.extractor.exceptions.ParsingException;
|
||||
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
|
||||
import org.schabi.newpipe.extractor.search.filter.FilterItem;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
|
@ -10,6 +12,7 @@ import java.net.URLEncoder;
|
|||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Pattern;
|
||||
|
@ -417,4 +420,16 @@ public final class Utils {
|
|||
|
||||
throw new Parser.RegexException("No regex matched the input on group " + group);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T extends FilterItem> T getFirstContentFilterItem(
|
||||
final SearchQueryHandler searchQueryHandler) {
|
||||
|
||||
final List<FilterItem> contentFilters = searchQueryHandler.getContentFilters();
|
||||
if (contentFilters != null && !contentFilters.isEmpty()) {
|
||||
return (T) contentFilters.get(0);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue