NewPipeExtractor/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/linkHandler/PeertubeSearchQueryHandlerF...

74 lines
2.9 KiB
Java
Raw Normal View History

2018-10-11 21:10:22 +02:00
package org.schabi.newpipe.extractor.services.peertube.linkHandler;
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
import org.schabi.newpipe.extractor.utils.Utils;
2018-10-11 21:10:22 +02:00
import java.io.UnsupportedEncodingException;
import java.util.List;
2022-03-18 10:25:16 +01:00
public final class PeertubeSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
2018-10-11 21:10:22 +02:00
public static final String VIDEOS = "videos";
2020-12-23 12:59:37 +01:00
public static final String SEPIA_VIDEOS = "sepia_videos"; // sepia is the global index
public static final String PLAYLISTS = "playlists";
public static final String CHANNELS = "channels";
2020-12-23 12:59:37 +01:00
public static final String SEPIA_BASE_URL = "https://sepiasearch.org";
public static final String SEARCH_ENDPOINT_PLAYLISTS = "/api/v1/search/video-playlists";
public static final String SEARCH_ENDPOINT_VIDEOS = "/api/v1/search/videos";
public static final String SEARCH_ENDPOINT_CHANNELS = "/api/v1/search/video-channels";
2018-10-11 21:10:22 +02:00
2022-03-18 10:25:16 +01:00
private PeertubeSearchQueryHandlerFactory() {
}
2018-10-11 21:10:22 +02:00
public static PeertubeSearchQueryHandlerFactory getInstance() {
return new PeertubeSearchQueryHandlerFactory();
}
@Override
2022-03-18 10:25:16 +01:00
public String getUrl(final String searchString,
final List<String> contentFilters,
final String sortFilter) throws ParsingException {
final String baseUrl;
2021-03-14 00:43:57 +01:00
if (!contentFilters.isEmpty() && contentFilters.get(0).startsWith("sepia_")) {
2020-12-23 12:59:37 +01:00
baseUrl = SEPIA_BASE_URL;
} else {
baseUrl = ServiceList.PeerTube.getBaseUrl();
}
return getUrl(searchString, contentFilters, sortFilter, baseUrl);
}
@Override
2022-03-18 10:25:16 +01:00
public String getUrl(final String searchString,
final List<String> contentFilters,
final String sortFilter,
final String baseUrl) throws ParsingException {
2018-10-11 21:10:22 +02:00
try {
final String endpoint;
if (contentFilters.isEmpty()
|| contentFilters.get(0).equals(VIDEOS)
|| contentFilters.get(0).equals(SEPIA_VIDEOS)) {
endpoint = SEARCH_ENDPOINT_VIDEOS;
} else if (contentFilters.get(0).equals(CHANNELS)) {
endpoint = SEARCH_ENDPOINT_CHANNELS;
} else {
endpoint = SEARCH_ENDPOINT_PLAYLISTS;
}
return baseUrl + endpoint + "?search=" + Utils.encodeUrlUtf8(searchString);
2022-03-18 10:25:16 +01:00
} catch (final UnsupportedEncodingException e) {
2018-10-11 21:10:22 +02:00
throw new ParsingException("Could not encode query", e);
}
}
@Override
public String[] getAvailableContentFilter() {
2020-12-23 12:59:37 +01:00
return new String[]{
VIDEOS,
PLAYLISTS,
CHANNELS,
SEPIA_VIDEOS,
2020-12-23 12:59:37 +01:00
};
2018-10-11 21:10:22 +02:00
}
}