Skip to content

Commit 6769c82

Browse files
evermind-zzInfinityLoop1308
authored andcommitted
searchfilters: convert media_ccc to new framework
Available content filters: - All - Conferences - Events
1 parent b9b2d6c commit 6769c82

7 files changed

Lines changed: 93 additions & 37 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCSearchExtractor.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.extractors;
22

3-
import static org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCSearchQueryHandlerFactory.ALL;
4-
import static org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCSearchQueryHandlerFactory.CONFERENCES;
5-
import static org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCSearchQueryHandlerFactory.EVENTS;
6-
3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
74
import com.grack.nanojson.JsonArray;
85
import com.grack.nanojson.JsonObject;
96
import com.grack.nanojson.JsonParser;
@@ -29,6 +26,10 @@
2926

3027
import javax.annotation.Nonnull;
3128

29+
import static org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters.ALL;
30+
import static org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters.CONFERENCES;
31+
import static org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters.EVENTS;
32+
3233
public class MediaCCCSearchExtractor extends SearchExtractor {
3334
private JsonObject doc;
3435
private MediaCCCConferenceKiosk conferenceKiosk;
@@ -62,22 +63,27 @@ public List<MetaInfo> getMetaInfo() {
6263
return Collections.emptyList();
6364
}
6465

66+
private FilterItem getContentFilter() {
67+
// TODO check if getLinkHandler().getContentFilters() not empty
68+
final FilterItem filterItem = getLinkHandler().getContentFilters().get(0);
69+
70+
return filterItem;
71+
}
6572
@Nonnull
6673
@Override
6774
public InfoItemsPage<InfoItem> getInitialPage() {
6875
final MultiInfoItemsCollector searchItems = new MultiInfoItemsCollector(getServiceId());
6976

70-
if (getLinkHandler().getContentFilters().contains(CONFERENCES)
71-
|| getLinkHandler().getContentFilters().contains(ALL)
72-
|| getLinkHandler().getContentFilters().isEmpty()) {
77+
78+
final FilterItem filterItem = getContentFilter();
79+
80+
if (filterItem.getName().contains(CONFERENCES) || filterItem.getName().equals(ALL)) {
7381
searchConferences(getSearchString(),
7482
conferenceKiosk.getInitialPage().getItems(),
7583
searchItems);
7684
}
7785

78-
if (getLinkHandler().getContentFilters().contains(EVENTS)
79-
|| getLinkHandler().getContentFilters().contains(ALL)
80-
|| getLinkHandler().getContentFilters().isEmpty()) {
86+
if (filterItem.getName().equals(EVENTS) || filterItem.getName().equals(ALL)) {
8187
final JsonArray events = doc.getArray("events");
8288
for (int i = 0; i < events.size(); i++) {
8389
// Ensure only uploaded talks are shown in the search results.
@@ -100,9 +106,10 @@ public InfoItemsPage<InfoItem> getPage(final Page page) {
100106
@Override
101107
public void onFetchPage(@Nonnull final Downloader downloader)
102108
throws IOException, ExtractionException {
103-
if (getLinkHandler().getContentFilters().contains(EVENTS)
104-
|| getLinkHandler().getContentFilters().contains(ALL)
105-
|| getLinkHandler().getContentFilters().isEmpty()) {
109+
110+
final FilterItem filterItem = getContentFilter();
111+
112+
if (filterItem.getName().contains(EVENTS) || filterItem.getName().equals(ALL)) {
106113
final String site;
107114
final String url = getUrl();
108115
site = downloader.get(url, getExtractorLocalization()).responseBody();
@@ -112,9 +119,8 @@ public void onFetchPage(@Nonnull final Downloader downloader)
112119
throw new ExtractionException("Could not parse JSON.", jpe);
113120
}
114121
}
115-
if (getLinkHandler().getContentFilters().contains(CONFERENCES)
116-
|| getLinkHandler().getContentFilters().contains(ALL)
117-
|| getLinkHandler().getContentFilters().isEmpty()) {
122+
123+
if (filterItem.getName().contains(CONFERENCES) || filterItem.getName().equals(ALL)) {
118124
conferenceKiosk.fetchPage();
119125
}
120126
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferenceLinkHandlerFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.linkHandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.exceptions.ParsingException;
46
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
57
import org.schabi.newpipe.extractor.utils.Parser;
@@ -16,8 +18,8 @@ public class MediaCCCConferenceLinkHandlerFactory extends ListLinkHandlerFactory
1618

1719
@Override
1820
public String getUrl(final String id,
19-
final List<String> contentFilter,
20-
final String sortFilter) throws ParsingException {
21+
final List<FilterItem> contentFilter,
22+
final List<FilterItem> sortFilter) throws ParsingException {
2123
return CONFERENCE_PATH + id;
2224
}
2325

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCConferencesListLinkHandlerFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.linkHandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.exceptions.ParsingException;
46
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
57

@@ -12,8 +14,8 @@ public String getId(final String url) throws ParsingException {
1214
}
1315

1416
@Override
15-
public String getUrl(final String id, final List<String> contentFilter,
16-
final String sortFilter) throws ParsingException {
17+
public String getUrl(final String id, final List<FilterItem> contentFilter,
18+
final List<FilterItem> sortFilter) throws ParsingException {
1719
return "https://media.ccc.de/public/conferences";
1820
}
1921

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCLiveListLinkHandlerFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.linkHandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.exceptions.ParsingException;
46
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
57

@@ -21,8 +23,8 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
2123

2224
@Override
2325
public String getUrl(final String id,
24-
final List<String> contentFilter,
25-
final String sortFilter) throws ParsingException {
26+
final List<FilterItem> contentFilter,
27+
final List<FilterItem> sortFilter) throws ParsingException {
2628
// FIXME: wrong URL; should be https://streaming.media.ccc.de/{conference_slug}/{room_slug}
2729
return "https://media.ccc.de/live";
2830
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCRecentListLinkHandlerFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.linkHandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
4+
35
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
46

57
import java.util.List;
@@ -20,8 +22,8 @@ public boolean onAcceptUrl(final String url) {
2022

2123
@Override
2224
public String getUrl(final String id,
23-
final List<String> contentFilter,
24-
final String sortFilter) {
25+
final List<FilterItem> contentFilter,
26+
final List<FilterItem> sortFilter) {
2527
return "https://media.ccc.de/recent";
2628
}
2729
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/linkHandler/MediaCCCSearchQueryHandlerFactory.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.linkHandler;
22

3+
import org.schabi.newpipe.extractor.search.filter.Filter;
4+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
5+
36
import org.schabi.newpipe.extractor.exceptions.ParsingException;
47
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
8+
import org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters;
59

610
import java.io.UnsupportedEncodingException;
711
import java.net.URLEncoder;
@@ -10,27 +14,22 @@
1014
import static org.schabi.newpipe.extractor.utils.Utils.UTF_8;
1115

1216
public class MediaCCCSearchQueryHandlerFactory extends SearchQueryHandlerFactory {
13-
public static final String ALL = "all";
14-
public static final String CONFERENCES = "conferences";
15-
public static final String EVENTS = "events";
17+
18+
public final MediaCCCFilters searchFilters = new MediaCCCFilters();
1619

1720
@Override
18-
public String[] getAvailableContentFilter() {
19-
return new String[]{
20-
ALL,
21-
CONFERENCES,
22-
EVENTS
23-
};
21+
public Filter getAvailableContentFilter() {
22+
return searchFilters.getContentFilters();
2423
}
2524

2625
@Override
27-
public String[] getAvailableSortFilter() {
28-
return new String[0];
26+
public FilterItem getFilterItem(final int filterId) {
27+
return searchFilters.getFilterItem(filterId);
2928
}
3029

3130
@Override
32-
public String getUrl(final String query, final List<String> contentFilter,
33-
final String sortFilter) throws ParsingException {
31+
public String getUrl(final String query, final List<FilterItem> contentFilter,
32+
final List<FilterItem> sortFilter) throws ParsingException {
3433
try {
3534
return "https://media.ccc.de/public/events/search?q="
3635
+ URLEncoder.encode(query, UTF_8);
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.schabi.newpipe.extractor.services.media_ccc.search.filter;
2+
3+
import org.schabi.newpipe.extractor.search.filter.Filter;
4+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
5+
import org.schabi.newpipe.extractor.search.filter.SearchFiltersBase;
6+
7+
public final class MediaCCCFilters extends SearchFiltersBase {
8+
9+
public static final String ALL = "all";
10+
public static final String CONFERENCES = "conferences";
11+
public static final String EVENTS = "events";
12+
13+
public MediaCCCFilters() {
14+
init();
15+
build();
16+
}
17+
18+
@Override
19+
public String evaluateSelectedFilters(final String searchString) {
20+
return null;
21+
}
22+
23+
@Override
24+
protected void init() {
25+
/* content filters */
26+
final int contentFilterAll = builder.addFilterItem(
27+
new FilterItem(Filter.ITEM_IDENTIFIER_UNKNOWN, ALL));
28+
final int contentFilterConferences = builder.addFilterItem(
29+
new FilterItem(Filter.ITEM_IDENTIFIER_UNKNOWN, CONFERENCES));
30+
final int contentFilterEvents = builder.addFilterItem(
31+
new FilterItem(Filter.ITEM_IDENTIFIER_UNKNOWN, EVENTS));
32+
33+
// 'ALL' this is the default search content filter.
34+
this.defaultContentFilterId = contentFilterAll;
35+
36+
/* content filters with sort filters */
37+
addContentFilter(builder.createSortGroup(null, true, new FilterItem[]{
38+
builder.getFilterForId(contentFilterAll),
39+
builder.getFilterForId(contentFilterConferences),
40+
builder.getFilterForId(contentFilterEvents),
41+
}));
42+
}
43+
}

0 commit comments

Comments
 (0)