Fix getNextStreams from Youtube's channel extractor
This commit is contained in:
parent
cfd3ab3500
commit
a693c0d61d
|
@ -66,6 +66,10 @@ public abstract class Extractor {
|
||||||
if(!pageFetched) throw new IllegalStateException("Page is not fetched. Make sure you call fetchPage()");
|
if(!pageFetched) throw new IllegalStateException("Page is not fetched. Make sure you call fetchPage()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean isPageFetched() {
|
||||||
|
return pageFetched;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch the current page.
|
* Fetch the current page.
|
||||||
* @param downloader the download to use
|
* @param downloader the download to use
|
||||||
|
|
|
@ -52,10 +52,18 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
*/
|
*/
|
||||||
private Document nextStreamsAjax;
|
private Document nextStreamsAjax;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unfortunately, we have to fetch the page even if we are only getting next streams,
|
||||||
|
* as they don't deliver enough information on their own (the channel name, for example).
|
||||||
|
* <br/>
|
||||||
|
* This help us to keep track on what are we fetching.
|
||||||
|
*/
|
||||||
private boolean fetchingNextStreams;
|
private boolean fetchingNextStreams;
|
||||||
|
|
||||||
public YoutubeChannelExtractor(StreamingService service, String url, String nextStreamsUrl) throws IOException, ExtractionException {
|
public YoutubeChannelExtractor(StreamingService service, String url, String nextStreamsUrl) throws IOException, ExtractionException {
|
||||||
super(service, url, nextStreamsUrl);
|
super(service, url, nextStreamsUrl);
|
||||||
|
|
||||||
|
fetchingNextStreams = nextStreamsUrl != null && !nextStreamsUrl.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,10 +176,11 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
||||||
throw new ExtractionException("Channel doesn't have more streams");
|
throw new ExtractionException("Channel doesn't have more streams");
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamInfoItemCollector collector = new StreamInfoItemCollector(getServiceId());
|
if (!isPageFetched()) {
|
||||||
|
fetchPage();
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: This is a horrible hack and should be fixed (the whole F*** architecture of ListExtractor is broken)
|
StreamInfoItemCollector collector = new StreamInfoItemCollector(getServiceId());
|
||||||
onFetchPage(NewPipe.getDownloader());
|
|
||||||
|
|
||||||
setupNextStreamsAjax(NewPipe.getDownloader());
|
setupNextStreamsAjax(NewPipe.getDownloader());
|
||||||
collectStreamsFrom(collector, nextStreamsAjax.select("body").first());
|
collectStreamsFrom(collector, nextStreamsAjax.select("body").first());
|
||||||
|
|
Loading…
Reference in New Issue