add contentCountry to Kiosk

This commit is contained in:
Christian Schabesberger 2017-08-14 12:48:51 +02:00
parent c76f39c81b
commit 5119dabb63
3 changed files with 43 additions and 11 deletions

View File

@ -28,9 +28,24 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
import java.io.IOException;
public abstract class KioskExtractor extends ListExtractor {
public KioskExtractor(StreamingService streamingService, String url, String nextStreamsUrl)
private String contentCountry = null;
public KioskExtractor(StreamingService streamingService,
String url,
String nextStreamsUrl)
throws IOException, ExtractionException {
super(streamingService, url, nextStreamsUrl);
this.contentCountry = contentCountry;
}
/**
* For certain Websites the content of a kiosk will be different depending
* on the country you want to poen the website in. Therefore you should
* set the contentCountry.
* @param contentCountry Set the country decoded as Country Code: http://www.1728.org/countries.htm
*/
public void setContentCountry(String contentCountry) {
this.contentCountry = contentCountry;
}
/**
@ -49,4 +64,8 @@ public abstract class KioskExtractor extends ListExtractor {
public String getName() throws ParsingException {
return getType();
}
public String getContentCountry() {
return contentCountry;
}
}

View File

@ -33,22 +33,30 @@ import java.io.IOException;
public class KioskInfo extends ListInfo {
public String type;
public static KioskInfo getInfo(String url) throws IOException, ExtractionException {
return getInfo(NewPipe.getServiceByUrl(url), url);
public static KioskInfo getInfo(String url,
String contentCountry) throws IOException, ExtractionException {
return getInfo(NewPipe.getServiceByUrl(url), url, contentCountry);
}
public static KioskInfo getInfo(ServiceList serviceItem, String url) throws IOException, ExtractionException {
return getInfo(serviceItem.getService(), url);
public static KioskInfo getInfo(ServiceList serviceItem,
String url,
String contentContry) throws IOException, ExtractionException {
return getInfo(serviceItem.getService(), url, contentContry);
}
public static KioskInfo getInfo(StreamingService service, String url) throws IOException, ExtractionException {
public static KioskInfo getInfo(StreamingService service,
String url,
String contentCountry) throws IOException, ExtractionException {
KioskList kl = service.getKioskList();
KioskExtractor extractor = kl.getExtryctorByUrl(url);
return getInfo(extractor);
return getInfo(extractor, contentCountry);
}
public static KioskInfo getInfo(KioskExtractor extractor) throws ParsingException {
public static KioskInfo getInfo(KioskExtractor extractor,
String contentCountry) throws IOException, ExtractionException {
KioskInfo info = new KioskInfo();
extractor.setContentCountry(contentCountry);
extractor.fetchPage();
info.type = extractor.getType();
info.name = extractor.getName();
info.id = extractor.getId();

View File

@ -44,9 +44,14 @@ public class YoutubeTrendingExtractor extends KioskExtractor {
public void fetchPage() throws IOException, ExtractionException {
Downloader downloader = NewPipe.getDownloader();
String channelUrl = getCleanUrl();
String pageContent = downloader.download(channelUrl);
doc = Jsoup.parse(pageContent, channelUrl);
final String contentCountry = getContentCountry();
String url = getCleanUrl();
if(contentCountry != null && !contentCountry.isEmpty()) {
url += "?gl=" + contentCountry;
}
String pageContent = downloader.download(url);
doc = Jsoup.parse(pageContent, url);
}
@Override