Skip to content

Commit b4544a6

Browse files
committed
add SearchExtractor
1 parent 0501a2f commit b4544a6

21 files changed

Lines changed: 191 additions & 71 deletions

extractor/src/main/java/org/schabi/newpipe/extractor/Extractor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.schabi.newpipe.extractor;
22

3-
import edu.umd.cs.findbugs.annotations.NonNull;
43
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
54
import org.schabi.newpipe.extractor.exceptions.ParsingException;
65

@@ -34,7 +33,7 @@ public Extractor(final StreamingService service, final UrlIdHandler urlIdHandler
3433
* @return The {@link UrlIdHandler} of the current extractor object (e.g. a ChannelExtractor should return a channel url handler).
3534
*/
3635
@Nonnull
37-
protected UrlIdHandler getUrlIdHandler() {
36+
public UrlIdHandler getUrlIdHandler() {
3837
return urlIdHandler;
3938
}
4039

extractor/src/main/java/org/schabi/newpipe/extractor/Info.java

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

3+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
35
import java.io.Serializable;
46
import java.util.ArrayList;
57
import java.util.Collection;
@@ -16,8 +18,8 @@ public abstract class Info implements Serializable {
1618
/**
1719
* Different than the {@link #originalUrl} in the sense that it <i>may</i> be set as a cleaned url.
1820
*
19-
* @see UrlIdHandler#cleanUrl(String)
20-
* @see Extractor#getCleanUrl()
21+
* @see UrlIdHandler#getUrl()
22+
* @see Extractor#getOriginalUrl()
2123
*/
2224
private final String url;
2325
/**
@@ -46,6 +48,14 @@ public Info(int serviceId, String id, String url, String originalUrl, String nam
4648
this.name = name;
4749
}
4850

51+
public Info(int serviceId, UrlIdHandler urlIdHandler, String name) throws ParsingException {
52+
this(serviceId,
53+
urlIdHandler.getId(),
54+
urlIdHandler.getUrl(),
55+
urlIdHandler.getOriginalUrl(),
56+
name);
57+
}
58+
4959
@Override
5060
public String toString() {
5161
final String ifDifferentString = !url.equals(originalUrl) ? " (originalUrl=\"" + originalUrl + "\")" : "";

extractor/src/main/java/org/schabi/newpipe/extractor/ListExtractor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public boolean hasNextPage() throws IOException, ExtractionException {
4949
return nextPageUrl != null && !nextPageUrl.isEmpty();
5050
}
5151

52+
@Override
53+
public ListUrlIdHandler getUrlIdHandler() {
54+
return (ListUrlIdHandler) super.getUrlIdHandler();
55+
}
56+
5257
/*//////////////////////////////////////////////////////////////////////////
5358
// Inner
5459
//////////////////////////////////////////////////////////////////////////*/

extractor/src/main/java/org/schabi/newpipe/extractor/ListInfo.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
package org.schabi.newpipe.extractor;
22

3+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
35
import java.util.List;
46

57
public abstract class ListInfo<T extends InfoItem> extends Info {
68
private List<T> relatedItems;
79
private String nextPageUrl = null;
8-
9-
public ListInfo(int serviceId, String id, String url, String originalUrl, String name) {
10+
private String[] contentFilter = {};
11+
private String sortFilter = "";
12+
13+
public ListInfo(int serviceId,
14+
String id,
15+
String url,
16+
String originalUrl,
17+
String name,
18+
String[] contentFilter,
19+
String sortFilter) {
1020
super(serviceId, id, url, originalUrl, name);
21+
this.contentFilter = contentFilter;
22+
this.sortFilter = sortFilter;
23+
}
24+
25+
public ListInfo(int serviceId, ListUrlIdHandler listUrlIdHandler, String name) throws ParsingException {
26+
super(serviceId, listUrlIdHandler, name);
27+
this.contentFilter = listUrlIdHandler.getContentFilter();
28+
this.sortFilter = listUrlIdHandler.getSortFilter();
1129
}
1230

1331
public List<T> getRelatedItems() {
@@ -29,4 +47,12 @@ public String getNextPageUrl() {
2947
public void setNextPageUrl(String pageUrl) {
3048
this.nextPageUrl = pageUrl;
3149
}
50+
51+
public String[] getContentFilter() {
52+
return contentFilter;
53+
}
54+
55+
public String getSortFilter() {
56+
return sortFilter;
57+
}
3258
}

extractor/src/main/java/org/schabi/newpipe/extractor/ListUrlIdHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,13 @@ public String[] getAvailableContentFilter() {
3939
public String[] getAvailableSortFilter() {
4040
return new String[0];
4141
}
42+
43+
44+
public String[] getContentFilter() {
45+
return contentFilter;
46+
}
47+
48+
public String getSortFilter() {
49+
return sortFilter;
50+
}
4251
}

extractor/src/main/java/org/schabi/newpipe/extractor/StreamingService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.schabi.newpipe.extractor.kiosk.KioskList;
77
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
88
import org.schabi.newpipe.extractor.search.SearchEngine;
9+
import org.schabi.newpipe.extractor.search.SearchExtractor;
910
import org.schabi.newpipe.extractor.stream.StreamExtractor;
1011
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
1112

@@ -75,6 +76,7 @@ public String toString() {
7576
// Extractor
7677
////////////////////////////////////////////
7778
public abstract SearchEngine getSearchEngine();
79+
public abstract SearchExtractor getSearchExtractor();
7880
public abstract SuggestionExtractor getSuggestionExtractor();
7981
public abstract SubscriptionExtractor getSubscriptionExtractor();
8082
public abstract KioskList getKioskList() throws ExtractionException;

extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ public ChannelExtractor(StreamingService service, ListUrlIdHandler urlIdHandler)
3636
super(service, urlIdHandler);
3737
}
3838

39-
@Nonnull
40-
@Override
41-
protected UrlIdHandler getUrlIdHandler() {
42-
return getService().getChannelUrlIdHandler();
43-
}
44-
4539
public abstract String getAvatarUrl() throws ParsingException;
4640
public abstract String getBannerUrl() throws ParsingException;
4741
public abstract String getFeedUrl() throws ParsingException;

extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage;
44
import org.schabi.newpipe.extractor.ListInfo;
5+
import org.schabi.newpipe.extractor.ListUrlIdHandler;
56
import org.schabi.newpipe.extractor.NewPipe;
67
import org.schabi.newpipe.extractor.StreamingService;
78
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
9+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
810
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
911
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
1012

@@ -32,8 +34,8 @@
3234

3335
public class ChannelInfo extends ListInfo<StreamInfoItem> {
3436

35-
public ChannelInfo(int serviceId, String id, String url, String originalUrl, String name) {
36-
super(serviceId, id, url, originalUrl, name);
37+
public ChannelInfo(int serviceId, ListUrlIdHandler urlIdHandler, String name) throws ParsingException {
38+
super(serviceId, urlIdHandler, name);
3739
}
3840

3941
public static ChannelInfo getInfo(String url) throws IOException, ExtractionException {
@@ -52,14 +54,9 @@ public static InfoItemsPage<StreamInfoItem> getMoreItems(StreamingService servic
5254

5355
public static ChannelInfo getInfo(ChannelExtractor extractor) throws IOException, ExtractionException {
5456

55-
// important data
56-
int serviceId = extractor.getServiceId();
57-
String url = extractor.getUrl();
58-
String originalUrl = extractor.getOriginalUrl();
59-
String id = extractor.getId();
60-
String name = extractor.getName();
61-
62-
ChannelInfo info = new ChannelInfo(serviceId, id, url, originalUrl, name);
57+
ChannelInfo info = new ChannelInfo(extractor.getServiceId(),
58+
extractor.getUrlIdHandler(),
59+
extractor.getName());
6360

6461

6562
try {

extractor/src/main/java/org/schabi/newpipe/extractor/kiosk/KioskInfo.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,18 @@
2020
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
2121
*/
2222

23-
import org.schabi.newpipe.extractor.ListExtractor;
24-
import org.schabi.newpipe.extractor.ListInfo;
25-
import org.schabi.newpipe.extractor.NewPipe;
26-
import org.schabi.newpipe.extractor.StreamingService;
23+
import org.schabi.newpipe.extractor.*;
2724
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
25+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
2826
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
2927
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
3028

3129
import java.io.IOException;
3230

3331
public class KioskInfo extends ListInfo<StreamInfoItem> {
3432

35-
private KioskInfo(int serviceId, String id, String url, String originalUrl, String name) {
36-
super(serviceId, id, url, originalUrl, name);
33+
private KioskInfo(int serviceId, ListUrlIdHandler urlIdHandler, String name) throws ParsingException {
34+
super(serviceId, urlIdHandler, name);
3735
}
3836

3937
public static ListExtractor.InfoItemsPage<StreamInfoItem> getMoreItems(StreamingService service,
@@ -68,13 +66,9 @@ public static KioskInfo getInfo(StreamingService service,
6866
*/
6967
public static KioskInfo getInfo(KioskExtractor extractor) throws ExtractionException {
7068

71-
int serviceId = extractor.getServiceId();
72-
String name = extractor.getName();
73-
String id = extractor.getId();
74-
String url = extractor.getUrl();
75-
String originalUrl = extractor.getOriginalUrl();
76-
77-
KioskInfo info = new KioskInfo(serviceId, id, url, originalUrl, name);
69+
final KioskInfo info = new KioskInfo(extractor.getServiceId(),
70+
extractor.getUrlIdHandler(),
71+
extractor.getName());
7872

7973
final ListExtractor.InfoItemsPage<StreamInfoItem> itemsPage = ExtractorHelper.getItemsPageOrLogError(info, extractor);
8074
info.setRelatedItems(itemsPage.getItems());

extractor/src/main/java/org/schabi/newpipe/extractor/playlist/PlaylistExtractor.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,6 @@ public PlaylistExtractor(StreamingService service, ListUrlIdHandler urlIdHandler
1616
super(service, urlIdHandler);
1717
}
1818

19-
@Nonnull
20-
@Override
21-
protected UrlIdHandler getUrlIdHandler() {
22-
return getService().getPlaylistUrlIdHandler();
23-
}
24-
2519
public abstract String getThumbnailUrl() throws ParsingException;
2620
public abstract String getBannerUrl() throws ParsingException;
2721

0 commit comments

Comments
 (0)