Skip to content

Commit e084338

Browse files
evermind-zzStypox
authored andcommitted
searchfilters: convert media_ccc to new framework
Available content filters: - All - Conferences - Events
1 parent d1bf446 commit e084338

7 files changed

Lines changed: 81 additions & 44 deletions

File tree

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

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
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-
73
import com.grack.nanojson.JsonArray;
84
import com.grack.nanojson.JsonObject;
95
import com.grack.nanojson.JsonParser;
@@ -21,8 +17,11 @@
2117
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
2218
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandler;
2319
import org.schabi.newpipe.extractor.search.SearchExtractor;
20+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
2421
import org.schabi.newpipe.extractor.services.media_ccc.extractors.infoItems.MediaCCCStreamInfoItemExtractor;
2522
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferencesListLinkHandlerFactory;
23+
import org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters;
24+
import org.schabi.newpipe.extractor.utils.Utils;
2625

2726
import java.io.IOException;
2827
import java.util.Collections;
@@ -69,17 +68,21 @@ public List<MetaInfo> getMetaInfo() {
6968
public InfoItemsPage<InfoItem> getInitialPage() {
7069
final MultiInfoItemsCollector searchItems = new MultiInfoItemsCollector(getServiceId());
7170

72-
if (getLinkHandler().getContentFilters().contains(CONFERENCES)
73-
|| getLinkHandler().getContentFilters().contains(ALL)
74-
|| getLinkHandler().getContentFilters().isEmpty()) {
71+
72+
final FilterItem filterItem =
73+
Utils.getFirstContentFilterItem(getLinkHandler());
74+
75+
if (filterItem == null
76+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_CONFERENCES
77+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_ALL) {
7578
searchConferences(getSearchString(),
7679
conferenceKiosk.getInitialPage().getItems(),
7780
searchItems);
7881
}
7982

80-
if (getLinkHandler().getContentFilters().contains(EVENTS)
81-
|| getLinkHandler().getContentFilters().contains(ALL)
82-
|| getLinkHandler().getContentFilters().isEmpty()) {
83+
if (filterItem == null
84+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_EVENTS
85+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_ALL) {
8386
final JsonArray events = doc.getArray("events");
8487
for (int i = 0; i < events.size(); i++) {
8588
// Ensure only uploaded talks are shown in the search results.
@@ -102,9 +105,13 @@ public InfoItemsPage<InfoItem> getPage(final Page page) {
102105
@Override
103106
public void onFetchPage(@Nonnull final Downloader downloader)
104107
throws IOException, ExtractionException {
105-
if (getLinkHandler().getContentFilters().contains(EVENTS)
106-
|| getLinkHandler().getContentFilters().contains(ALL)
107-
|| getLinkHandler().getContentFilters().isEmpty()) {
108+
109+
final FilterItem filterItem =
110+
Utils.getFirstContentFilterItem(getLinkHandler());
111+
112+
if (filterItem == null
113+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_EVENTS
114+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_ALL) {
108115
final String site;
109116
final String url = getUrl();
110117
site = downloader.get(url, getExtractorLocalization()).responseBody();
@@ -114,9 +121,10 @@ public void onFetchPage(@Nonnull final Downloader downloader)
114121
throw new ExtractionException("Could not parse JSON.", jpe);
115122
}
116123
}
117-
if (getLinkHandler().getContentFilters().contains(CONFERENCES)
118-
|| getLinkHandler().getContentFilters().contains(ALL)
119-
|| getLinkHandler().getContentFilters().isEmpty()) {
124+
125+
if (filterItem == null
126+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_CONFERENCES
127+
|| filterItem.getIdentifier() == MediaCCCFilters.ID_CF_MAIN_ALL) {
120128
conferenceKiosk.fetchPage();
121129
}
122130
}

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;
@@ -27,8 +29,8 @@ public static MediaCCCConferenceLinkHandlerFactory getInstance() {
2729

2830
@Override
2931
public String getUrl(final String id,
30-
final List<String> contentFilter,
31-
final String sortFilter)
32+
final List<FilterItem> contentFilter,
33+
final List<FilterItem> sortFilter)
3234
throws ParsingException, UnsupportedOperationException {
3335
return CONFERENCE_PATH + id;
3436
}

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

@@ -24,8 +26,8 @@ public String getId(final String url) throws ParsingException, UnsupportedOperat
2426

2527
@Override
2628
public String getUrl(final String id,
27-
final List<String> contentFilter,
28-
final String sortFilter)
29+
final List<FilterItem> contentFilter,
30+
final List<FilterItem> sortFilter)
2931
throws ParsingException, UnsupportedOperationException {
3032
return "https://media.ccc.de/public/conferences";
3133
}

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

@@ -32,8 +34,8 @@ public boolean onAcceptUrl(final String url) throws ParsingException {
3234

3335
@Override
3436
public String getUrl(final String id,
35-
final List<String> contentFilter,
36-
final String sortFilter)
37+
final List<FilterItem> contentFilter,
38+
final List<FilterItem> sortFilter)
3739
throws ParsingException, UnsupportedOperationException {
3840
// FIXME: wrong URL; should be https://streaming.media.ccc.de/{conference_slug}/{room_slug}
3941
return "https://media.ccc.de/live";

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.exceptions.ParsingException;
46
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandlerFactory;
57

@@ -32,8 +34,8 @@ public boolean onAcceptUrl(final String url) {
3234

3335
@Override
3436
public String getUrl(final String id,
35-
final List<String> contentFilter,
36-
final String sortFilter)
37+
final List<FilterItem> contentFilter,
38+
final List<FilterItem> sortFilter)
3739
throws ParsingException, UnsupportedOperationException {
3840
return "https://media.ccc.de/recent";
3941
}

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

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.schabi.newpipe.extractor.exceptions.ParsingException;
44
import org.schabi.newpipe.extractor.linkhandler.SearchQueryHandlerFactory;
5+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
6+
import org.schabi.newpipe.extractor.services.media_ccc.search.filter.MediaCCCFilters;
57
import org.schabi.newpipe.extractor.utils.Utils;
68

79
import java.io.UnsupportedEncodingException;
@@ -12,35 +14,18 @@ public final class MediaCCCSearchQueryHandlerFactory extends SearchQueryHandlerF
1214
private static final MediaCCCSearchQueryHandlerFactory INSTANCE =
1315
new MediaCCCSearchQueryHandlerFactory();
1416

15-
public static final String ALL = "all";
16-
public static final String CONFERENCES = "conferences";
17-
public static final String EVENTS = "events";
18-
1917
private MediaCCCSearchQueryHandlerFactory() {
18+
super(new MediaCCCFilters());
2019
}
2120

2221
public static MediaCCCSearchQueryHandlerFactory getInstance() {
2322
return INSTANCE;
2423
}
2524

26-
@Override
27-
public String[] getAvailableContentFilter() {
28-
return new String[]{
29-
ALL,
30-
CONFERENCES,
31-
EVENTS
32-
};
33-
}
34-
35-
@Override
36-
public String[] getAvailableSortFilter() {
37-
return new String[0];
38-
}
39-
4025
@Override
4126
public String getUrl(final String query,
42-
final List<String> contentFilter,
43-
final String sortFilter)
27+
final List<FilterItem> contentFilter,
28+
final List<FilterItem> sortFilter)
4429
throws ParsingException, UnsupportedOperationException {
4530
try {
4631
return "https://media.ccc.de/public/events/search?q=" + Utils.encodeUrlUtf8(query);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Created by evermind-zz 2022, licensed GNU GPL version 3 or later
2+
3+
package org.schabi.newpipe.extractor.services.media_ccc.search.filter;
4+
5+
import org.schabi.newpipe.extractor.search.filter.BaseSearchFilters;
6+
import org.schabi.newpipe.extractor.search.filter.FilterItem;
7+
8+
public final class MediaCCCFilters extends BaseSearchFilters {
9+
10+
public static final int ID_CF_MAIN_GRP = 0;
11+
public static final int ID_CF_MAIN_ALL = 1;
12+
public static final int ID_CF_MAIN_CONFERENCES = 2;
13+
public static final int ID_CF_MAIN_EVENTS = 3;
14+
15+
public static final String ALL = "all";
16+
public static final String CONFERENCES = "conferences";
17+
public static final String EVENTS = "events";
18+
19+
@Override
20+
protected void init() {
21+
/* content filters */
22+
groupsFactory.addFilterItem(new FilterItem(
23+
ID_CF_MAIN_ALL, ALL));
24+
groupsFactory.addFilterItem(new FilterItem(
25+
ID_CF_MAIN_CONFERENCES, CONFERENCES));
26+
groupsFactory.addFilterItem(new FilterItem(
27+
ID_CF_MAIN_EVENTS, EVENTS));
28+
29+
addContentFilterGroup(groupsFactory.createFilterGroup(ID_CF_MAIN_GRP, null, true,
30+
ID_CF_MAIN_ALL, new FilterItem[]{
31+
groupsFactory.getFilterForId(ID_CF_MAIN_ALL),
32+
groupsFactory.getFilterForId(ID_CF_MAIN_CONFERENCES),
33+
groupsFactory.getFilterForId(ID_CF_MAIN_EVENTS),
34+
}, null));
35+
}
36+
}

0 commit comments

Comments
 (0)