mirror of
https://github.com/TeamNewPipe/NewPipeExtractor.git
synced 2024-12-13 22:00:32 +05:30
Fix YouTubeChannelExtractor
It was given some inconsistent results (/user and /channel), now it only returns /channel urls don't matter what the original is (at least when calling the getCleanUrl() method).
This commit is contained in:
parent
a8a4eaf81b
commit
34547a37b6
@ -59,7 +59,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
|||||||
public void fetchPage() throws IOException, ExtractionException {
|
public void fetchPage() throws IOException, ExtractionException {
|
||||||
Downloader downloader = NewPipe.getDownloader();
|
Downloader downloader = NewPipe.getDownloader();
|
||||||
|
|
||||||
String channelUrl = getCleanUrl() + CHANNEL_URL_PARAMETERS;
|
String channelUrl = super.getCleanUrl() + CHANNEL_URL_PARAMETERS;
|
||||||
String pageContent = downloader.download(channelUrl);
|
String pageContent = downloader.download(channelUrl);
|
||||||
doc = Jsoup.parse(pageContent, channelUrl);
|
doc = Jsoup.parse(pageContent, channelUrl);
|
||||||
|
|
||||||
@ -67,12 +67,24 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
|||||||
nextStreamsAjax = null;
|
nextStreamsAjax = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCleanUrl() {
|
||||||
|
try {
|
||||||
|
return "https://www.youtube.com/channel/" + getId();
|
||||||
|
} catch (ParsingException e) {
|
||||||
|
return super.getCleanUrl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() throws ParsingException {
|
public String getId() throws ParsingException {
|
||||||
try {
|
try {
|
||||||
return getUrlIdHandler().getId(getCleanUrl());
|
Element element = doc.getElementsByClass("yt-uix-subscription-button").first();
|
||||||
|
if (element == null) element = doc.getElementsByClass("yt-uix-subscription-preferences-button").first();
|
||||||
|
|
||||||
|
return element.attr("data-channel-external-id");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ParsingException("Could not get channel id");
|
throw new ParsingException("Could not get channel id", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,8 +122,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
|
|||||||
@Override
|
@Override
|
||||||
public String getFeedUrl() throws ParsingException {
|
public String getFeedUrl() throws ParsingException {
|
||||||
try {
|
try {
|
||||||
String channelId = doc.getElementsByClass("yt-uix-subscription-button").first().attr("data-channel-external-id");
|
return CHANNEL_FEED_BASE + getId();
|
||||||
return channelId == null ? "" : CHANNEL_FEED_BASE + channelId;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ParsingException("Could not get feed url", e);
|
throw new ParsingException("Could not get feed url", e);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class YoutubeChannelExtractorTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
NewPipe.init(Downloader.getInstance());
|
NewPipe.init(Downloader.getInstance());
|
||||||
extractor = YouTube.getService()
|
extractor = YouTube.getService()
|
||||||
.getChannelExtractor("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw");
|
.getChannelExtractor("https://www.youtube.com/user/Gronkh");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -54,6 +54,16 @@ public class YoutubeChannelExtractorTest {
|
|||||||
assertEquals(extractor.getName(), "Gronkh");
|
assertEquals(extractor.getName(), "Gronkh");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetId() throws Exception {
|
||||||
|
assertEquals(extractor.getId(), "UCYJ61XIK64sp6ZFFS8sctxw");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetUrl() throws Exception {
|
||||||
|
assertEquals(extractor.getCleanUrl(), "https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetDescription() throws Exception {
|
public void testGetDescription() throws Exception {
|
||||||
assertEquals(extractor.getDescription(), "★ ★ ★ KLICK MICH HART, DU SAU! :D ★ ★ ★ Zart im Schmelz und süffig im Abgang. Ungebremster Spieltrieb seit 1896. Tägliche Folgen nonstop seit dem 01.04.2010!...");
|
assertEquals(extractor.getDescription(), "★ ★ ★ KLICK MICH HART, DU SAU! :D ★ ★ ★ Zart im Schmelz und süffig im Abgang. Ungebremster Spieltrieb seit 1896. Tägliche Folgen nonstop seit dem 01.04.2010!...");
|
||||||
@ -71,7 +81,7 @@ public class YoutubeChannelExtractorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetFeedUrl() throws Exception {
|
public void testGetFeedUrl() throws Exception {
|
||||||
assertTrue(extractor.getFeedUrl(), extractor.getFeedUrl().contains("feed"));
|
assertEquals(extractor.getFeedUrl(), "https://www.youtube.com/feeds/videos.xml?channel_id=UCYJ61XIK64sp6ZFFS8sctxw");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user