Skip to content

Commit e85958b

Browse files
committed
merged upstream/master
2 parents d1ff1c7 + 5223aec commit e85958b

66 files changed

Lines changed: 540 additions & 342 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/Downloader.java

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

33
import java.io.IOException;
4-
import java.util.List;
54
import java.util.Map;
65

76
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException;
7+
import org.schabi.newpipe.extractor.utils.Localization;
88

99
/*
1010
* Created by Christian Schabesberger on 28.01.16.
@@ -33,12 +33,11 @@ public interface Downloader {
3333
* the HTTP header field "Accept-Language" to the supplied string.
3434
*
3535
* @param siteUrl the URL of the text file to return the contents of
36-
* @param language the language (usually a 2-character code) to set as the
37-
* preferred language
36+
* @param localization the language and country (usually a 2-character code for each)
3837
* @return the contents of the specified text file
3938
* @throws IOException
4039
*/
41-
String download(String siteUrl, String language) throws IOException, ReCaptchaException;
40+
String download(String siteUrl, Localization localization) throws IOException, ReCaptchaException;
4241

4342
/**
4443
* Download the text file at the supplied URL as in download(String), but set

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

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
44
import org.schabi.newpipe.extractor.exceptions.ParsingException;
55
import org.schabi.newpipe.extractor.linkhandler.LinkHandler;
6+
import org.schabi.newpipe.extractor.utils.Localization;
67

78
import javax.annotation.Nonnull;
89
import javax.annotation.Nullable;
@@ -16,27 +17,29 @@ public abstract class Extractor{
1617
*/
1718
private final StreamingService service;
1819

19-
private final LinkHandler uIHandler;
20+
private final LinkHandler linkHandler;
21+
private final Localization localization;
2022

2123
@Nullable
2224
private boolean pageFetched = false;
2325
private final Downloader downloader;
2426

25-
public Extractor(final StreamingService service, final LinkHandler uIHandler) {
27+
public Extractor(final StreamingService service, final LinkHandler linkHandler, final Localization localization) {
2628
if(service == null) throw new NullPointerException("service is null");
27-
if(uIHandler == null) throw new NullPointerException("LinkHandler is null");
29+
if(linkHandler == null) throw new NullPointerException("LinkHandler is null");
2830
this.service = service;
29-
this.uIHandler = uIHandler;
31+
this.linkHandler = linkHandler;
3032
this.downloader = NewPipe.getDownloader();
33+
this.localization = localization;
3134
if(downloader == null) throw new NullPointerException("downloader is null");
3235
}
3336

3437
/**
3538
* @return The {@link LinkHandler} of the current extractor object (e.g. a ChannelExtractor should return a channel url handler).
3639
*/
3740
@Nonnull
38-
public LinkHandler getUIHandler() {
39-
return uIHandler;
41+
public LinkHandler getLinkHandler() {
42+
return linkHandler;
4043
}
4144

4245
/**
@@ -68,7 +71,7 @@ protected boolean isPageFetched() {
6871

6972
@Nonnull
7073
public String getId() throws ParsingException {
71-
return uIHandler.getId();
74+
return linkHandler.getId();
7275
}
7376

7477
/**
@@ -81,12 +84,12 @@ public String getId() throws ParsingException {
8184

8285
@Nonnull
8386
public String getOriginalUrl() throws ParsingException {
84-
return uIHandler.getOriginalUrl();
87+
return linkHandler.getOriginalUrl();
8588
}
8689

8790
@Nonnull
8891
public String getUrl() throws ParsingException {
89-
return uIHandler.getUrl();
92+
return linkHandler.getUrl();
9093
}
9194

9295
@Nonnull
@@ -101,4 +104,9 @@ public int getServiceId() {
101104
public Downloader getDownloader() {
102105
return downloader;
103106
}
107+
108+
@Nonnull
109+
public Localization getLocalization() {
110+
return localization;
111+
}
104112
}

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

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

33
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
44
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
5+
import org.schabi.newpipe.extractor.utils.Localization;
56

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

16-
public ListExtractor(StreamingService service, ListLinkHandler uiHandler) {
17-
super(service, uiHandler);
17+
public ListExtractor(StreamingService service, ListLinkHandler linkHandler, Localization localization) {
18+
super(service, linkHandler, localization);
1819
}
1920

2021
/**
@@ -51,8 +52,8 @@ public boolean hasNextPage() throws IOException, ExtractionException {
5152
}
5253

5354
@Override
54-
public ListLinkHandler getUIHandler() {
55-
return (ListLinkHandler) super.getUIHandler();
55+
public ListLinkHandler getLinkHandler() {
56+
return (ListLinkHandler) super.getLinkHandler();
5657
}
5758

5859
/*//////////////////////////////////////////////////////////////////////////

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222

2323
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
24+
import org.schabi.newpipe.extractor.utils.Localization;
2425

2526
import java.util.List;
2627

@@ -29,12 +30,14 @@
2930
*/
3031
public class NewPipe {
3132
private static Downloader downloader = null;
33+
private static Localization localization = null;
3234

3335
private NewPipe() {
3436
}
3537

36-
public static void init(Downloader d) {
38+
public static void init(Downloader d, Localization l) {
3739
downloader = d;
40+
localization = l;
3841
}
3942

4043
public static Downloader getDownloader() {
@@ -95,4 +98,12 @@ public static String getNameOfService(int id) {
9598
return "<unknown>";
9699
}
97100
}
101+
102+
public static void setLocalization(Localization localization) {
103+
NewPipe.localization = localization;
104+
}
105+
106+
public static Localization getLocalization() {
107+
return localization;
108+
}
98109
}

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

Lines changed: 81 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.schabi.newpipe.extractor.search.SearchExtractor;
1919
import org.schabi.newpipe.extractor.stream.StreamExtractor;
2020
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
21+
import org.schabi.newpipe.extractor.utils.Localization;
2122

2223
public abstract class StreamingService {
2324
public static class ServiceInfo {
@@ -83,56 +84,115 @@ public String toString() {
8384
////////////////////////////////////////////
8485
// Extractor
8586
////////////////////////////////////////////
86-
public abstract SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler, String contentCountry);
87-
public abstract SuggestionExtractor getSuggestionExtractor();
87+
public abstract SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler, Localization localization);
88+
public abstract SuggestionExtractor getSuggestionExtractor(Localization localization);
8889
public abstract SubscriptionExtractor getSubscriptionExtractor();
89-
public abstract KioskList getKioskList() throws ExtractionException;
90+
public abstract KioskList getKioskList(Localization localization) throws ExtractionException;
91+
92+
public abstract ChannelExtractor getChannelExtractor(ListLinkHandler linkHandler,
93+
Localization localization) throws ExtractionException;
94+
public abstract PlaylistExtractor getPlaylistExtractor(ListLinkHandler linkHandler,
95+
Localization localization) throws ExtractionException;
96+
public abstract StreamExtractor getStreamExtractor(LinkHandler linkHandler,
97+
Localization localization) throws ExtractionException;
98+
public abstract CommentsExtractor getCommentsExtractor(ListLinkHandler linkHandler,
99+
Localization localization) throws ExtractionException;
100+
////////////////////////////////////////////
101+
// Extractor with default localization
102+
////////////////////////////////////////////
90103

91-
public abstract ChannelExtractor getChannelExtractor(ListLinkHandler urlIdHandler) throws ExtractionException;
92-
public abstract PlaylistExtractor getPlaylistExtractor(ListLinkHandler urlIdHandler) throws ExtractionException;
93-
public abstract StreamExtractor getStreamExtractor(LinkHandler UIHFactory) throws ExtractionException;
94-
public abstract CommentsExtractor getCommentsExtractor(ListLinkHandler urlIdHandler) throws ExtractionException;
95-
public abstract boolean isCommentsSupported();
104+
public SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler) {
105+
return getSearchExtractor(queryHandler, NewPipe.getLocalization());
106+
}
107+
108+
public SuggestionExtractor getSuggestionExtractor() {
109+
return getSuggestionExtractor(NewPipe.getLocalization());
110+
}
111+
112+
public KioskList getKioskList() throws ExtractionException {
113+
return getKioskList(NewPipe.getLocalization());
114+
}
115+
116+
public ChannelExtractor getChannelExtractor(ListLinkHandler linkHandler) throws ExtractionException {
117+
return getChannelExtractor(linkHandler, NewPipe.getLocalization());
118+
}
119+
120+
public PlaylistExtractor getPlaylistExtractor(ListLinkHandler linkHandler) throws ExtractionException {
121+
return getPlaylistExtractor(linkHandler, NewPipe.getLocalization());
122+
}
123+
124+
public StreamExtractor getStreamExtractor(LinkHandler linkHandler) throws ExtractionException {
125+
return getStreamExtractor(linkHandler, NewPipe.getLocalization());
126+
}
96127

97-
public SearchExtractor getSearchExtractor(String query, List<String> contentFilter, String sortFilter, String contentCountry) throws ExtractionException {
98-
return getSearchExtractor(getSearchQHFactory().fromQuery(query, contentFilter, sortFilter), contentCountry);
128+
public CommentsExtractor getCommentsExtractor(ListLinkHandler urlIdHandler) throws ExtractionException {
129+
return getCommentsExtractor(urlIdHandler, NewPipe.getLocalization());
130+
}
131+
132+
////////////////////////////////////////////
133+
// Extractor without link handler
134+
////////////////////////////////////////////
135+
136+
public SearchExtractor getSearchExtractor(String query,
137+
List<String> contentFilter,
138+
String sortFilter,
139+
Localization localization) throws ExtractionException {
140+
return getSearchExtractor(getSearchQHFactory()
141+
.fromQuery(query,
142+
contentFilter,
143+
sortFilter),
144+
localization);
99145
}
100146

101-
public ChannelExtractor getChannelExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
102-
return getChannelExtractor(getChannelLHFactory().fromQuery(id, contentFilter, sortFilter));
147+
public ChannelExtractor getChannelExtractor(String id,
148+
List<String> contentFilter,
149+
String sortFilter,
150+
Localization localization) throws ExtractionException {
151+
return getChannelExtractor(getChannelLHFactory().fromQuery(id, contentFilter, sortFilter), localization);
103152
}
104153

105-
public PlaylistExtractor getPlaylistExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
106-
return getPlaylistExtractor(getPlaylistLHFactory().fromQuery(id, contentFilter, sortFilter));
154+
public PlaylistExtractor getPlaylistExtractor(String id,
155+
List<String> contentFilter,
156+
String sortFilter,
157+
Localization localization) throws ExtractionException {
158+
return getPlaylistExtractor(getPlaylistLHFactory()
159+
.fromQuery(id,
160+
contentFilter,
161+
sortFilter),
162+
localization);
107163
}
108164

109-
public SearchExtractor getSearchExtractor(String query, String contentCountry) throws ExtractionException {
110-
return getSearchExtractor(getSearchQHFactory().fromQuery(query), contentCountry);
165+
////////////////////////////////////////////
166+
// Short extractor without localization
167+
////////////////////////////////////////////
168+
169+
public SearchExtractor getSearchExtractor(String query) throws ExtractionException {
170+
return getSearchExtractor(getSearchQHFactory().fromQuery(query), NewPipe.getLocalization());
111171
}
112172

113173
public ChannelExtractor getChannelExtractor(String url) throws ExtractionException {
114-
return getChannelExtractor(getChannelLHFactory().fromUrl(url));
174+
return getChannelExtractor(getChannelLHFactory().fromUrl(url), NewPipe.getLocalization());
115175
}
116176

117177
public PlaylistExtractor getPlaylistExtractor(String url) throws ExtractionException {
118-
return getPlaylistExtractor(getPlaylistLHFactory().fromUrl(url));
178+
return getPlaylistExtractor(getPlaylistLHFactory().fromUrl(url), NewPipe.getLocalization());
119179
}
120180

121181
public StreamExtractor getStreamExtractor(String url) throws ExtractionException {
122-
return getStreamExtractor(getStreamLHFactory().fromUrl(url));
182+
return getStreamExtractor(getStreamLHFactory().fromUrl(url), NewPipe.getLocalization());
123183
}
124184

125185
public CommentsExtractor getCommentsExtractor(String url) throws ExtractionException {
126186
ListLinkHandlerFactory llhf = getCommentsLHFactory();
127187
if(null == llhf) {
128188
return null;
129189
}
130-
return getCommentsExtractor(llhf.fromUrl(url));
190+
return getCommentsExtractor(llhf.fromUrl(url), NewPipe.getLocalization());
131191
}
132192

193+
public abstract boolean isCommentsSupported();
133194

134195

135-
136196

137197
/**
138198
* figure out where the link is pointing to (a channel, video, playlist, etc.)

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

Lines changed: 9 additions & 2 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.utils.Localization;
45

56
import java.io.IOException;
67
import java.util.List;
@@ -28,14 +29,20 @@
2829
public abstract class SuggestionExtractor {
2930

3031
private final int serviceId;
32+
private final Localization localization;
3133

32-
public SuggestionExtractor(int serviceId) {
34+
public SuggestionExtractor(int serviceId, Localization localization) {
3335
this.serviceId = serviceId;
36+
this.localization = localization;
3437
}
3538

36-
public abstract List<String> suggestionList(String query, String contentCountry) throws IOException, ExtractionException;
39+
public abstract List<String> suggestionList(String query) throws IOException, ExtractionException;
3740

3841
public int getServiceId() {
3942
return serviceId;
4043
}
44+
45+
protected Localization getLocalization() {
46+
return localization;
47+
}
4148
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.schabi.newpipe.extractor.exceptions.ParsingException;
66
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
77
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
8+
import org.schabi.newpipe.extractor.utils.Localization;
89

910
/*
1011
* Created by Christian Schabesberger on 25.07.16.
@@ -28,8 +29,8 @@
2829

2930
public abstract class ChannelExtractor extends ListExtractor<StreamInfoItem> {
3031

31-
public ChannelExtractor(StreamingService service, ListLinkHandler urlIdHandler) {
32-
super(service, urlIdHandler);
32+
public ChannelExtractor(StreamingService service, ListLinkHandler linkHandler, Localization localization) {
33+
super(service, linkHandler, localization);
3334
}
3435

3536
public abstract String getAvatarUrl() throws ParsingException;

0 commit comments

Comments
 (0)