From 5907c35dfb0f23db2b6f6f864940e6535ad9abd5 Mon Sep 17 00:00:00 2001 From: Mauricio Colli Date: Fri, 21 Apr 2017 18:31:40 -0300 Subject: [PATCH] Revert some changes --- services/youtube/YoutubeChannelExtractor.java | 25 +++++++++++-------- .../youtube/YoutubePlayListExtractor.java | 10 ++++---- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/services/youtube/YoutubeChannelExtractor.java b/services/youtube/YoutubeChannelExtractor.java index b71fcffdb..0b8fda717 100644 --- a/services/youtube/YoutubeChannelExtractor.java +++ b/services/youtube/YoutubeChannelExtractor.java @@ -18,6 +18,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor; + import java.io.IOException; /** @@ -45,20 +46,19 @@ public class YoutubeChannelExtractor extends ChannelExtractor { private static final String TAG = YoutubeChannelExtractor.class.toString(); // private CSSOMParser cssParser = new CSSOMParser(new SACParserCSS3()); - private static final String CHANNEL_FEED_BASE = "https://www.youtube.com/feeds/videos.xml?channel_id="; private Document doc = null; private boolean isAjaxPage = false; - private String userUrl = ""; - private String channelName = ""; - private String avatarUrl = ""; - private String bannerUrl = ""; - private String feedUrl = ""; - private long subscriberCount = -1; + private static String userUrl = ""; + private static String channelName = ""; + private static String avatarUrl = ""; + private static String bannerUrl = ""; + private static String feedUrl = ""; + private static long subscriberCount = -1; // the fist page is html all other pages are ajax. Every new page can be requested by sending // this request url. - private String nextPageUrl = ""; + private static String nextPageUrl = ""; public YoutubeChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId) throws ExtractionException, IOException { @@ -318,8 +318,13 @@ public class YoutubeChannelExtractor extends ChannelExtractor { @Override public String getFeedUrl() throws ParsingException { try { - String channelId = doc.getElementsByClass("yt-uix-subscription-button").first().attr("data-channel-external-id"); - feedUrl = CHANNEL_FEED_BASE + channelId; + if(userUrl.contains("channel")) { + //channels don't have feeds in youtube, only user can provide such + return ""; + } + if(!isAjaxPage) { + feedUrl = doc.select("link[title=\"RSS\"]").first().attr("abs:href"); + } return feedUrl; } catch(Exception e) { throw new ParsingException("Could not get feed url", e); diff --git a/services/youtube/YoutubePlayListExtractor.java b/services/youtube/YoutubePlayListExtractor.java index 6e7c2e39f..2ada1c7ff 100644 --- a/services/youtube/YoutubePlayListExtractor.java +++ b/services/youtube/YoutubePlayListExtractor.java @@ -25,11 +25,11 @@ public class YoutubePlayListExtractor extends PlayListExtractor { private Document doc = null; private boolean isAjaxPage = false; - private String name = ""; - private String feedUrl = ""; - private String avatarUrl = ""; - private String bannerUrl = ""; - private String nextPageUrl = ""; + private static String name = ""; + private static String feedUrl = ""; + private static String avatarUrl = ""; + private static String bannerUrl = ""; + private static String nextPageUrl = ""; public YoutubePlayListExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId) throws IOException, ExtractionException {