Skip to content

Commit dcca11f

Browse files
committed
Merge branch 'dev'
2 parents 91aa52f + 1eff8c5 commit dcca11f

89 files changed

Lines changed: 1815 additions & 1603 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
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;
5+
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
66

77
import javax.annotation.Nonnull;
88
import javax.annotation.Nullable;
@@ -15,27 +15,27 @@ public abstract class Extractor {
1515
*/
1616
private final StreamingService service;
1717

18-
private final UrlIdHandler urlIdHandler;
18+
private final LinkHandler uIHandler;
1919

2020
@Nullable
2121
private boolean pageFetched = false;
2222
private final Downloader downloader;
2323

24-
public Extractor(final StreamingService service, final UrlIdHandler urlIdHandler) {
24+
public Extractor(final StreamingService service, final LinkHandler uIHandler) {
2525
if(service == null) throw new NullPointerException("service is null");
26-
if(urlIdHandler == null) throw new NullPointerException("UrlIdHandler is null");
26+
if(uIHandler == null) throw new NullPointerException("LinkHandler is null");
2727
this.service = service;
28-
this.urlIdHandler = urlIdHandler;
28+
this.uIHandler = uIHandler;
2929
this.downloader = NewPipe.getDownloader();
3030
if(downloader == null) throw new NullPointerException("downloader is null");
3131
}
3232

3333
/**
34-
* @return The {@link UrlIdHandler} of the current extractor object (e.g. a ChannelExtractor should return a channel url handler).
34+
* @return The {@link LinkHandler} of the current extractor object (e.g. a ChannelExtractor should return a channel url handler).
3535
*/
3636
@Nonnull
37-
protected UrlIdHandler getUrlIdHandler() {
38-
return urlIdHandler;
37+
public LinkHandler getUIHandler() {
38+
return uIHandler;
3939
}
4040

4141
/**
@@ -67,7 +67,7 @@ protected boolean isPageFetched() {
6767

6868
@Nonnull
6969
public String getId() throws ParsingException {
70-
return urlIdHandler.getId();
70+
return uIHandler.getId();
7171
}
7272

7373
/**
@@ -80,12 +80,12 @@ public String getId() throws ParsingException {
8080

8181
@Nonnull
8282
public String getOriginalUrl() throws ParsingException {
83-
return urlIdHandler.getOriginalUrl();
83+
return uIHandler.getOriginalUrl();
8484
}
8585

8686
@Nonnull
8787
public String getUrl() throws ParsingException {
88-
return urlIdHandler.getUrl();
88+
return uIHandler.getUrl();
8989
}
9090

9191
@Nonnull
@@ -96,4 +96,8 @@ public StreamingService getService() {
9696
public int getServiceId() {
9797
return service.getServiceId();
9898
}
99+
100+
public Downloader getDownloader() {
101+
return downloader;
102+
}
99103
}

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.linkhandler.LinkHandler;
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 LinkHandler#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, LinkHandler linkHandler, String name) {
52+
this(serviceId,
53+
linkHandler.getId(),
54+
linkHandler.getUrl(),
55+
linkHandler.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: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.schabi.newpipe.extractor;
22

33
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
4+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
45

56
import javax.annotation.Nonnull;
67
import java.io.IOException;
@@ -12,8 +13,8 @@
1213
*/
1314
public abstract class ListExtractor<R extends InfoItem> extends Extractor {
1415

15-
public ListExtractor(StreamingService service, ListUrlIdHandler urlIdHandler) {
16-
super(service, urlIdHandler);
16+
public ListExtractor(StreamingService service, ListLinkHandler uiHandler) {
17+
super(service, uiHandler);
1718
}
1819

1920
/**
@@ -37,18 +38,23 @@ public ListExtractor(StreamingService service, ListUrlIdHandler urlIdHandler) {
3738
/**
3839
* Get a list of items corresponding to the specific requested page.
3940
*
40-
* @param nextPageUrl any next page url got from the exclusive implementation of the list extractor
41+
* @param pageUrl any page url got from the exclusive implementation of the list extractor
4142
* @return a {@link InfoItemsPage} corresponding to the requested page
4243
* @see #getNextPageUrl()
4344
* @see InfoItemsPage#getNextPageUrl()
4445
*/
45-
public abstract InfoItemsPage<R> getPage(final String nextPageUrl) throws IOException, ExtractionException;
46+
public abstract InfoItemsPage<R> getPage(final String pageUrl) throws IOException, ExtractionException;
4647

4748
public boolean hasNextPage() throws IOException, ExtractionException {
4849
final String nextPageUrl = getNextPageUrl();
4950
return nextPageUrl != null && !nextPageUrl.isEmpty();
5051
}
5152

53+
@Override
54+
public ListLinkHandler getUIHandler() {
55+
return (ListLinkHandler) super.getUIHandler();
56+
}
57+
5258
/*//////////////////////////////////////////////////////////////////////////
5359
// Inner
5460
//////////////////////////////////////////////////////////////////////////*/

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.linkhandler.ListLinkHandler;
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 final List<String> contentFilters;
11+
private final String sortFilter;
12+
13+
public ListInfo(int serviceId,
14+
String id,
15+
String url,
16+
String originalUrl,
17+
String name,
18+
List<String> contentFilter,
19+
String sortFilter) {
1020
super(serviceId, id, url, originalUrl, name);
21+
this.contentFilters = contentFilter;
22+
this.sortFilter = sortFilter;
23+
}
24+
25+
public ListInfo(int serviceId, ListLinkHandler listUrlIdHandler, String name) {
26+
super(serviceId, listUrlIdHandler, name);
27+
this.contentFilters = listUrlIdHandler.getContentFilters();
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 List<String> getContentFilters() {
52+
return contentFilters;
53+
}
54+
55+
public String getSortFilter() {
56+
return sortFilter;
57+
}
3258
}

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

Lines changed: 0 additions & 42 deletions
This file was deleted.

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ private ServiceList() {
1919
public static final YoutubeService YouTube;
2020
public static final SoundcloudService SoundCloud;
2121

22-
private static final List<StreamingService> SERVICES = unmodifiableList(asList(
23-
YouTube = new YoutubeService(0),
24-
SoundCloud = new SoundcloudService(1)
25-
// DailyMotion = new DailyMotionService(2);
26-
));
22+
private static final List<StreamingService> SERVICES = unmodifiableList(
23+
asList(
24+
YouTube = new YoutubeService(0),
25+
SoundCloud = new SoundcloudService(1)
26+
));
2727

2828
/**
2929
* Get all the supported services.

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

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import org.schabi.newpipe.extractor.exceptions.ParsingException;
66
import org.schabi.newpipe.extractor.kiosk.KioskList;
77
import org.schabi.newpipe.extractor.playlist.PlaylistExtractor;
8-
import org.schabi.newpipe.extractor.search.SearchEngine;
8+
import org.schabi.newpipe.extractor.search.SearchExtractor;
9+
import org.schabi.newpipe.extractor.linkhandler.*;
910
import org.schabi.newpipe.extractor.stream.StreamExtractor;
1011
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
1112

@@ -66,41 +67,50 @@ public String toString() {
6667
////////////////////////////////////////////
6768
// Url Id handler
6869
////////////////////////////////////////////
69-
public abstract UrlIdHandler getStreamUrlIdHandler();
70-
public abstract ListUrlIdHandler getChannelUrlIdHandler();
71-
public abstract ListUrlIdHandler getPlaylistUrlIdHandler();
70+
public abstract LinkHandlerFactory getStreamUIHFactory();
71+
public abstract ListLinkHandlerFactory getChannelUIHFactory();
72+
public abstract ListLinkHandlerFactory getPlaylistUIHFactory();
73+
public abstract SearchQueryHandlerFactory getSearchQIHFactory();
7274

7375

7476
////////////////////////////////////////////
7577
// Extractor
7678
////////////////////////////////////////////
77-
public abstract SearchEngine getSearchEngine();
79+
public abstract SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler, String contentCountry);
7880
public abstract SuggestionExtractor getSuggestionExtractor();
7981
public abstract SubscriptionExtractor getSubscriptionExtractor();
8082
public abstract KioskList getKioskList() throws ExtractionException;
8183

82-
public abstract ChannelExtractor getChannelExtractor(ListUrlIdHandler urlIdHandler) throws ExtractionException;
83-
public abstract PlaylistExtractor getPlaylistExtractor(ListUrlIdHandler urlIdHandler) throws ExtractionException;
84-
public abstract StreamExtractor getStreamExtractor(UrlIdHandler urlIdHandler) throws ExtractionException;
84+
public abstract ChannelExtractor getChannelExtractor(ListLinkHandler urlIdHandler) throws ExtractionException;
85+
public abstract PlaylistExtractor getPlaylistExtractor(ListLinkHandler urlIdHandler) throws ExtractionException;
86+
public abstract StreamExtractor getStreamExtractor(LinkHandler UIHFactory) throws ExtractionException;
8587

86-
public ChannelExtractor getChannelExtractor(String id, String[] contentFilter, String sortFilter) throws ExtractionException {
87-
return getChannelExtractor(getChannelUrlIdHandler().setQuery(id, contentFilter, sortFilter));
88+
public SearchExtractor getSearchExtractor(String query, List<String> contentFilter, String sortFilter, String contentCountry) throws ExtractionException {
89+
return getSearchExtractor(getSearchQIHFactory().fromQuery(query, contentFilter, sortFilter), contentCountry);
8890
}
8991

90-
public PlaylistExtractor getPlaylistExtractor(String id, String[] contentFilter, String sortFilter) throws ExtractionException {
91-
return getPlaylistExtractor(getPlaylistUrlIdHandler().setQuery(id, contentFilter, sortFilter));
92+
public ChannelExtractor getChannelExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
93+
return getChannelExtractor(getChannelUIHFactory().fromQuery(id, contentFilter, sortFilter));
94+
}
95+
96+
public PlaylistExtractor getPlaylistExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
97+
return getPlaylistExtractor(getPlaylistUIHFactory().fromQuery(id, contentFilter, sortFilter));
98+
}
99+
100+
public SearchExtractor getSearchExtractor(String query, String contentCountry) throws ExtractionException {
101+
return getSearchExtractor(getSearchQIHFactory().fromQuery(query), contentCountry);
92102
}
93103

94104
public ChannelExtractor getChannelExtractor(String url) throws ExtractionException {
95-
return getChannelExtractor(getChannelUrlIdHandler().setUrl(url));
105+
return getChannelExtractor(getChannelUIHFactory().fromUrl(url));
96106
}
97107

98108
public PlaylistExtractor getPlaylistExtractor(String url) throws ExtractionException {
99-
return getPlaylistExtractor(getPlaylistUrlIdHandler().setUrl(url));
109+
return getPlaylistExtractor(getPlaylistUIHFactory().fromUrl(url));
100110
}
101111

102112
public StreamExtractor getStreamExtractor(String url) throws ExtractionException {
103-
return getStreamExtractor(getStreamUrlIdHandler().setUrl(url));
113+
return getStreamExtractor(getStreamUIHFactory().fromUrl(url));
104114
}
105115

106116

@@ -109,9 +119,9 @@ public StreamExtractor getStreamExtractor(String url) throws ExtractionException
109119
* figure out where the link is pointing to (a channel, video, playlist, etc.)
110120
*/
111121
public final LinkType getLinkTypeByUrl(String url) throws ParsingException {
112-
UrlIdHandler sH = getStreamUrlIdHandler();
113-
UrlIdHandler cH = getChannelUrlIdHandler();
114-
UrlIdHandler pH = getPlaylistUrlIdHandler();
122+
LinkHandlerFactory sH = getStreamUIHFactory();
123+
LinkHandlerFactory cH = getChannelUIHFactory();
124+
LinkHandlerFactory pH = getPlaylistUIHFactory();
115125

116126
if (sH.acceptUrl(url)) {
117127
return LinkType.STREAM;

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

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

33
import org.schabi.newpipe.extractor.ListExtractor;
4-
import org.schabi.newpipe.extractor.ListUrlIdHandler;
54
import org.schabi.newpipe.extractor.StreamingService;
6-
import org.schabi.newpipe.extractor.UrlIdHandler;
7-
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
85
import org.schabi.newpipe.extractor.exceptions.ParsingException;
96
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
10-
11-
import javax.annotation.Nonnull;
7+
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
128

139
/*
1410
* Created by Christian Schabesberger on 25.07.16.
@@ -32,16 +28,10 @@
3228

3329
public abstract class ChannelExtractor extends ListExtractor<StreamInfoItem> {
3430

35-
public ChannelExtractor(StreamingService service, ListUrlIdHandler urlIdHandler) {
31+
public ChannelExtractor(StreamingService service, ListLinkHandler urlIdHandler) {
3632
super(service, urlIdHandler);
3733
}
3834

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

0 commit comments

Comments
 (0)