Skip to content

Commit 70a2b63

Browse files
committed
searchfilters: Peertube restore different endpoints to fix peertube content filter search
1 parent dd252d3 commit 70a2b63

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public String getSupportInfo() {
319319
@Nonnull
320320
private String getRelatedItemsUrl(@Nonnull final List<String> tags)
321321
throws UnsupportedEncodingException {
322-
final String url = baseUrl + PeertubeSearchQueryHandlerFactory.SEARCH_ENDPOINT;
322+
final String url = baseUrl + PeertubeSearchQueryHandlerFactory.SEARCH_ENDPOINT_VIDEOS;
323323
final StringBuilder params = new StringBuilder();
324324
params.append("start=0&count=8&sort=-createdAt");
325325
for (final String tag : tags) {

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

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ public final class PeertubeSearchQueryHandlerFactory extends SearchQueryHandlerF
2323
public static final String VIDEOS = "videos";
2424
// sepia is the global index
2525
public static final String SEPIA_BASE_URL = "https://sepiasearch.org";
26-
public static final String SEARCH_ENDPOINT = "/api/v1/search/videos";
26+
public static final String SEARCH_ENDPOINT_PLAYLISTS = "/api/v1/search/video-playlists";
27+
public static final String SEARCH_ENDPOINT_VIDEOS = "/api/v1/search/videos";
28+
public static final String SEARCH_ENDPOINT_CHANNELS = "/api/v1/search/video-channels";
2729

2830
private PeertubeSearchQueryHandlerFactory() {
2931
super(new PeertubeFilters());
@@ -39,9 +41,7 @@ public String getUrl(final String searchString,
3941
@Nullable final List<FilterItem> selectedSortFilters)
4042
throws ParsingException, UnsupportedOperationException {
4143
final String baseUrl;
42-
final Optional<FilterItem> sepiaFilter =
43-
PeertubeHelpers.getSepiaFilter(selectedContentFilter);
44-
if (sepiaFilter.isPresent()) {
44+
if (isSepiaContentFilterPresent(selectedContentFilter)) {
4545
baseUrl = SEPIA_BASE_URL;
4646
} else {
4747
baseUrl = ServiceList.PeerTube.getBaseUrl();
@@ -62,10 +62,43 @@ public String getUrl(final String searchString,
6262

6363
final String filterQuery = searchFilters.evaluateSelectedFilters(null);
6464

65-
return baseUrl + SEARCH_ENDPOINT + "?search=" + Utils.encodeUrlUtf8(searchString)
65+
final String endpoint = getContentFilterDependingEndpoint(selectedContentFilter);
66+
return baseUrl + endpoint + "?search=" + Utils.encodeUrlUtf8(searchString)
6667
+ filterQuery;
6768
} catch (final UnsupportedEncodingException e) {
6869
throw new ParsingException("Could not encode query", e);
6970
}
7071
}
72+
73+
private boolean isSepiaContentFilterPresent(
74+
@Nullable final List<FilterItem> selectedContentFilter) {
75+
boolean isSepiaFilterPresent = false;
76+
if (selectedContentFilter != null) {
77+
final Optional<FilterItem> sepiaFilter =
78+
PeertubeHelpers.getSepiaFilter(selectedContentFilter);
79+
if (sepiaFilter.isPresent()) {
80+
isSepiaFilterPresent = true;
81+
}
82+
}
83+
84+
return isSepiaFilterPresent;
85+
}
86+
87+
private String getContentFilterDependingEndpoint(
88+
@Nullable final List<FilterItem> selectedContentFilter) {
89+
// default to video search endpoint
90+
String endpoint = SEARCH_ENDPOINT_VIDEOS;
91+
if (selectedContentFilter != null
92+
&& // SepiaFilter only supports SEARCH_ENDPOINT_VIDEOS
93+
!isSepiaContentFilterPresent(selectedContentFilter)) {
94+
final Optional<FilterItem> contentFilter = selectedContentFilter.stream()
95+
.filter(PeertubeFilters.PeertubeContentFilterItem.class::isInstance)
96+
.findFirst();
97+
if (contentFilter.isPresent()) {
98+
endpoint = ((PeertubeFilters.PeertubeContentFilterItem) contentFilter.get())
99+
.getEndpoint();
100+
}
101+
}
102+
return endpoint;
103+
}
71104
}

0 commit comments

Comments
 (0)