Skip to content

Commit ad4b15a

Browse files
authored
Merge pull request #114 from TeamNewPipe/localization
Localization
2 parents 49c2eb5 + ce2bbee commit ad4b15a

62 files changed

Lines changed: 476 additions & 309 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 & 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.ReCaptchaException;
4+
import org.schabi.newpipe.extractor.utils.Localization;
45

56
import java.io.IOException;
67
import java.util.Map;
@@ -32,11 +33,11 @@ public interface Downloader {
3233
* but set the HTTP header field "Accept-Language" to the supplied string.
3334
*
3435
* @param siteUrl the URL of the text file to return the contents of
35-
* @param language the language (usually a 2-character code) to set as the preferred language
36+
* @param localization the language and country (usually a 2-character code for each)
3637
* @return the contents of the specified text file
3738
* @throws IOException
3839
*/
39-
String download(String siteUrl, String language) throws IOException, ReCaptchaException;
40+
String download(String siteUrl, Localization localization) throws IOException, ReCaptchaException;
4041

4142
/**
4243
* Download the text file at the supplied URL as in download(String),

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;
@@ -15,27 +16,29 @@ public abstract class Extractor {
1516
*/
1617
private final StreamingService service;
1718

18-
private final LinkHandler uIHandler;
19+
private final LinkHandler linkHandler;
20+
private final Localization localization;
1921

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

24-
public Extractor(final StreamingService service, final LinkHandler uIHandler) {
26+
public Extractor(final StreamingService service, final LinkHandler linkHandler, final Localization localization) {
2527
if(service == null) throw new NullPointerException("service is null");
26-
if(uIHandler == null) throw new NullPointerException("LinkHandler is null");
28+
if(linkHandler == null) throw new NullPointerException("LinkHandler is null");
2729
this.service = service;
28-
this.uIHandler = uIHandler;
30+
this.linkHandler = linkHandler;
2931
this.downloader = NewPipe.getDownloader();
32+
this.localization = localization;
3033
if(downloader == null) throw new NullPointerException("downloader is null");
3134
}
3235

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

4144
/**
@@ -67,7 +70,7 @@ protected boolean isPageFetched() {
6770

6871
@Nonnull
6972
public String getId() throws ParsingException {
70-
return uIHandler.getId();
73+
return linkHandler.getId();
7174
}
7275

7376
/**
@@ -80,12 +83,12 @@ public String getId() throws ParsingException {
8083

8184
@Nonnull
8285
public String getOriginalUrl() throws ParsingException {
83-
return uIHandler.getOriginalUrl();
86+
return linkHandler.getOriginalUrl();
8487
}
8588

8689
@Nonnull
8790
public String getUrl() throws ParsingException {
88-
return uIHandler.getUrl();
91+
return linkHandler.getUrl();
8992
}
9093

9194
@Nonnull
@@ -100,4 +103,9 @@ public int getServiceId() {
100103
public Downloader getDownloader() {
101104
return downloader;
102105
}
106+
107+
@Nonnull
108+
public Localization getLocalization() {
109+
return localization;
110+
}
103111
}

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: 73 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.schabi.newpipe.extractor.linkhandler.*;
1010
import org.schabi.newpipe.extractor.stream.StreamExtractor;
1111
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
12+
import org.schabi.newpipe.extractor.utils.Localization;
1213

1314
import java.util.Collections;
1415
import java.util.List;
@@ -76,45 +77,99 @@ public String toString() {
7677
////////////////////////////////////////////
7778
// Extractor
7879
////////////////////////////////////////////
79-
public abstract SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler, String contentCountry);
80-
public abstract SuggestionExtractor getSuggestionExtractor();
80+
public abstract SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler, Localization localization);
81+
public abstract SuggestionExtractor getSuggestionExtractor(Localization localization);
8182
public abstract SubscriptionExtractor getSubscriptionExtractor();
82-
public abstract KioskList getKioskList() throws ExtractionException;
83+
public abstract KioskList getKioskList(Localization localization) throws ExtractionException;
84+
85+
public abstract ChannelExtractor getChannelExtractor(ListLinkHandler linkHandler,
86+
Localization localization) throws ExtractionException;
87+
public abstract PlaylistExtractor getPlaylistExtractor(ListLinkHandler linkHandler,
88+
Localization localization) throws ExtractionException;
89+
public abstract StreamExtractor getStreamExtractor(LinkHandler linkHandler,
90+
Localization localization) throws ExtractionException;
91+
////////////////////////////////////////////
92+
// Extractor with default localization
93+
////////////////////////////////////////////
94+
95+
public SearchExtractor getSearchExtractor(SearchQueryHandler queryHandler) {
96+
return getSearchExtractor(queryHandler, NewPipe.getLocalization());
97+
}
98+
99+
public SuggestionExtractor getSuggestionExtractor() {
100+
return getSuggestionExtractor(NewPipe.getLocalization());
101+
}
102+
103+
public KioskList getKioskList() throws ExtractionException {
104+
return getKioskList(NewPipe.getLocalization());
105+
}
106+
107+
public ChannelExtractor getChannelExtractor(ListLinkHandler linkHandler) throws ExtractionException {
108+
return getChannelExtractor(linkHandler, NewPipe.getLocalization());
109+
}
83110

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;
111+
public PlaylistExtractor getPlaylistExtractor(ListLinkHandler linkHandler) throws ExtractionException {
112+
return getPlaylistExtractor(linkHandler, NewPipe.getLocalization());
113+
}
114+
115+
public StreamExtractor getStreamExtractor(LinkHandler linkHandler) throws ExtractionException {
116+
return getStreamExtractor(linkHandler, NewPipe.getLocalization());
117+
}
118+
119+
////////////////////////////////////////////
120+
// Extractor without link handler
121+
////////////////////////////////////////////
87122

88-
public SearchExtractor getSearchExtractor(String query, List<String> contentFilter, String sortFilter, String contentCountry) throws ExtractionException {
89-
return getSearchExtractor(getSearchQHFactory().fromQuery(query, contentFilter, sortFilter), contentCountry);
123+
public SearchExtractor getSearchExtractor(String query,
124+
List<String> contentFilter,
125+
String sortFilter,
126+
Localization localization) throws ExtractionException {
127+
return getSearchExtractor(getSearchQHFactory()
128+
.fromQuery(query,
129+
contentFilter,
130+
sortFilter),
131+
localization);
90132
}
91133

92-
public ChannelExtractor getChannelExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
93-
return getChannelExtractor(getChannelLHFactory().fromQuery(id, contentFilter, sortFilter));
134+
public ChannelExtractor getChannelExtractor(String id,
135+
List<String> contentFilter,
136+
String sortFilter,
137+
Localization localization) throws ExtractionException {
138+
return getChannelExtractor(getChannelLHFactory().fromQuery(id, contentFilter, sortFilter), localization);
94139
}
95140

96-
public PlaylistExtractor getPlaylistExtractor(String id, List<String> contentFilter, String sortFilter) throws ExtractionException {
97-
return getPlaylistExtractor(getPlaylistLHFactory().fromQuery(id, contentFilter, sortFilter));
141+
public PlaylistExtractor getPlaylistExtractor(String id,
142+
List<String> contentFilter,
143+
String sortFilter,
144+
Localization localization) throws ExtractionException {
145+
return getPlaylistExtractor(getPlaylistLHFactory()
146+
.fromQuery(id,
147+
contentFilter,
148+
sortFilter),
149+
localization);
98150
}
99151

100-
public SearchExtractor getSearchExtractor(String query, String contentCountry) throws ExtractionException {
101-
return getSearchExtractor(getSearchQHFactory().fromQuery(query), contentCountry);
152+
////////////////////////////////////////////
153+
// Short extractor without localization
154+
////////////////////////////////////////////
155+
156+
public SearchExtractor getSearchExtractor(String query) throws ExtractionException {
157+
return getSearchExtractor(getSearchQHFactory().fromQuery(query), NewPipe.getLocalization());
102158
}
103159

104160
public ChannelExtractor getChannelExtractor(String url) throws ExtractionException {
105-
return getChannelExtractor(getChannelLHFactory().fromUrl(url));
161+
return getChannelExtractor(getChannelLHFactory().fromUrl(url), NewPipe.getLocalization());
106162
}
107163

108164
public PlaylistExtractor getPlaylistExtractor(String url) throws ExtractionException {
109-
return getPlaylistExtractor(getPlaylistLHFactory().fromUrl(url));
165+
return getPlaylistExtractor(getPlaylistLHFactory().fromUrl(url), NewPipe.getLocalization());
110166
}
111167

112168
public StreamExtractor getStreamExtractor(String url) throws ExtractionException {
113-
return getStreamExtractor(getStreamLHFactory().fromUrl(url));
169+
return getStreamExtractor(getStreamLHFactory().fromUrl(url), NewPipe.getLocalization());
114170
}
115171

116172

117-
118173
/**
119174
* figure out where the link is pointing to (a channel, video, playlist, etc.)
120175
*/

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;

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
1010
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
1111
import org.schabi.newpipe.extractor.utils.ExtractorHelper;
12+
import org.schabi.newpipe.extractor.utils.Localization;
1213

1314
import java.io.IOException;
1415

@@ -34,8 +35,8 @@
3435

3536
public class ChannelInfo extends ListInfo<StreamInfoItem> {
3637

37-
public ChannelInfo(int serviceId, ListLinkHandler urlIdHandler, String name) throws ParsingException {
38-
super(serviceId, urlIdHandler, name);
38+
public ChannelInfo(int serviceId, ListLinkHandler linkHandler, String name) throws ParsingException {
39+
super(serviceId, linkHandler, name);
3940
}
4041

4142
public static ChannelInfo getInfo(String url) throws IOException, ExtractionException {
@@ -48,14 +49,17 @@ public static ChannelInfo getInfo(StreamingService service, String url) throws I
4849
return getInfo(extractor);
4950
}
5051

51-
public static InfoItemsPage<StreamInfoItem> getMoreItems(StreamingService service, String url, String pageUrl) throws IOException, ExtractionException {
52+
public static InfoItemsPage<StreamInfoItem> getMoreItems(StreamingService service,
53+
String url,
54+
String pageUrl,
55+
Localization localization) throws IOException, ExtractionException {
5256
return service.getChannelExtractor(url).getPage(pageUrl);
5357
}
5458

5559
public static ChannelInfo getInfo(ChannelExtractor extractor) throws IOException, ExtractionException {
5660

5761
ChannelInfo info = new ChannelInfo(extractor.getServiceId(),
58-
extractor.getUIHandler(),
62+
extractor.getLinkHandler(),
5963
extractor.getName());
6064

6165

0 commit comments

Comments
 (0)