From 4234740baa6c3df4634620bc047cc482cac1441a Mon Sep 17 00:00:00 2001 From: Roy Yosef Date: Mon, 13 Apr 2020 23:33:44 +0300 Subject: [PATCH 1/3] Add parent channel info to ChannelExtractor: name, url & avatar url --- .../extractor/channel/ChannelExtractor.java | 3 ++ .../extractor/channel/ChannelInfo.java | 45 +++++++++++++++++++ .../MediaCCCConferenceExtractor.java | 15 +++++++ .../extractors/PeertubeChannelExtractor.java | 21 +++++++++ .../SoundcloudChannelExtractor.java | 15 +++++++ .../extractors/YoutubeChannelExtractor.java | 15 +++++++ .../PeertubeChannelExtractorTest.java | 20 +++++++++ 7 files changed, 134 insertions(+) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java index 6d529d6b6..3f54f1c2c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java @@ -37,4 +37,7 @@ public abstract class ChannelExtractor extends ListExtractor { public abstract String getFeedUrl() throws ParsingException; public abstract long getSubscriberCount() throws ParsingException; public abstract String getDescription() throws ParsingException; + public abstract String getParentChannelName() throws ParsingException; + public abstract String getParentChannelUrl() throws ParsingException; + public abstract String getParentChannelAvatarUrl() throws ParsingException; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java index 0fc44063b..52f18eadc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java @@ -94,16 +94,61 @@ public class ChannelInfo extends ListInfo { info.addError(e); } + try { + info.setParentChannelName(extractor.getParentChannelName()); + } catch (Exception e) { + info.addError(e); + } + + try { + info.setParentChannelUrl(extractor.getParentChannelUrl()); + } catch (Exception e) { + info.addError(e); + } + + try { + info.setParentChannelAvatarUrl(extractor.getParentChannelAvatarUrl()); + } catch (Exception e) { + info.addError(e); + } + return info; } private String avatarUrl; + private String parentChannelName; + private String parentChannelUrl; + private String parentChannelAvatarUrl; private String bannerUrl; private String feedUrl; private long subscriberCount = -1; private String description; private String[] donationLinks; + public String getParentChannelName() { + return parentChannelName; + } + + public void setParentChannelName(String parentChannelName) { + this.parentChannelName = parentChannelName; + } + + public String getParentChannelUrl() { + return parentChannelUrl; + } + + public void setParentChannelUrl(String parentChannelUrl) { + this.parentChannelUrl = parentChannelUrl; + } + + public String getParentChannelAvatarUrl() { + return parentChannelAvatarUrl; + } + + public void setParentChannelAvatarUrl(String parentChannelAvatarUrl) { + this.parentChannelAvatarUrl = parentChannelAvatarUrl; + } + public String getAvatarUrl() { return avatarUrl; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java index 4cd21c060..f11c13c22 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java @@ -52,6 +52,21 @@ public class MediaCCCConferenceExtractor extends ChannelExtractor { return null; } + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Nonnull @Override public InfoItemsPage getInitialPage() { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java index dc27be80c..c8f7f4cb3 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java @@ -75,6 +75,27 @@ public class PeertubeChannelExtractor extends ChannelExtractor { } } + @Override + public String getParentChannelName() throws ParsingException { + return JsonUtils.getString(json, "ownerAccount.name"); + } + + @Override + public String getParentChannelUrl() throws ParsingException { + return JsonUtils.getString(json, "ownerAccount.url"); + } + + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + String value; + try { + value = JsonUtils.getString(json, "ownerAccount.avatar.path"); + } catch (Exception e) { + value = "/client/assets/images/default-avatar.png"; + } + return baseUrl + value; + } + @Override public InfoItemsPage getInitialPage() throws IOException, ExtractionException { super.fetchPage(); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java index a1d258b54..1068b36f1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java @@ -83,6 +83,21 @@ public class SoundcloudChannelExtractor extends ChannelExtractor { return user.getString("description", EMPTY_STRING); } + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Nonnull @Override public InfoItemsPage getInitialPage() throws ExtractionException { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java index 38d57f95c..0e5329425 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java @@ -212,6 +212,21 @@ public class YoutubeChannelExtractor extends ChannelExtractor { } } + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Nonnull @Override public InfoItemsPage getInitialPage() throws ExtractionException { diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java index 9dc4b013e..bdab43ef8 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java @@ -84,6 +84,16 @@ public class PeertubeChannelExtractorTest { assertNotNull(extractor.getDescription()); } + @Test + public void testParentChannelName() throws ParsingException { + assertEquals("libux", extractor.getParentChannelName()); + } + + @Test + public void testParentChannelUrl() throws ParsingException { + assertEquals("https://peertube.mastodon.host/accounts/libux", extractor.getParentChannelUrl()); + } + @Test public void testAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getAvatarUrl()); @@ -181,6 +191,16 @@ public class PeertubeChannelExtractorTest { assertNotNull(extractor.getDescription()); } + @Test + public void testParentChannelName() throws ParsingException { + assertEquals("booteille", extractor.getParentChannelName()); + } + + @Test + public void testParentChannelUrl() throws ParsingException { + assertEquals("https://peertube.mastodon.host/accounts/booteille", extractor.getParentChannelUrl()); + } + @Test public void testAvatarUrl() throws ParsingException { assertIsSecureUrl(extractor.getAvatarUrl()); From 1de1f97cf1b3a269cba4137d23140df60c334d88 Mon Sep 17 00:00:00 2001 From: Roy Yosef Date: Mon, 13 Apr 2020 23:34:20 +0300 Subject: [PATCH 2/3] Add parent channel info to StreamExtractor: name, url & avatar url --- .../extractors/MediaCCCStreamExtractor.java | 20 ++++++- .../extractors/PeertubeAccountExtractor.java | 15 +++++ .../extractors/PeertubeStreamExtractor.java | 23 ++++++++ .../extractors/SoundcloudStreamExtractor.java | 18 ++++++ .../extractors/YoutubeStreamExtractor.java | 18 ++++++ .../extractor/stream/StreamExtractor.java | 33 +++++++++++ .../newpipe/extractor/stream/StreamInfo.java | 55 +++++++++++++++++-- 7 files changed, 176 insertions(+), 6 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java index 894a0f0db..8eed7091f 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java @@ -112,7 +112,25 @@ public class MediaCCCStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getDashMpdUrl() { + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getDashMpdUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java index 81cb0afae..d5bdacc6a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java @@ -75,6 +75,21 @@ public class PeertubeAccountExtractor extends ChannelExtractor { } } + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Override public InfoItemsPage getInitialPage() throws IOException, ExtractionException { super.fetchPage(); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java index 3cf65154d..05f1846b2 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java @@ -147,6 +147,29 @@ public class PeertubeStreamExtractor extends StreamExtractor { return baseUrl + value; } + @Override + public String getParentChannelUrl() throws ParsingException { + return JsonUtils.getString(json, "channel.url"); + } + + @Nonnull + @Override + public String getParentChannelName() throws ParsingException { + return JsonUtils.getString(json, "channel.displayName"); + } + + @Nonnull + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + String value; + try { + value = JsonUtils.getString(json, "channel.avatar.path"); + } catch (Exception e) { + value = "/client/assets/images/default-avatar.png"; + } + return baseUrl + value; + } + @Override public String getDashMpdUrl() throws ParsingException { return ""; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java index 1c4c9cf11..d276c2b90 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java @@ -142,6 +142,24 @@ public class SoundcloudStreamExtractor extends StreamExtractor { return SoundcloudParsingHelper.getAvatarUrl(track); } + @Nonnull + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Nonnull @Override public String getDashMpdUrl() { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java index 331c9000f..503d09e1d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java @@ -352,6 +352,24 @@ public class YoutubeStreamExtractor extends StreamExtractor { } } + @Nonnull + @Override + public String getParentChannelUrl() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelName() throws ParsingException { + return ""; + } + + @Nonnull + @Override + public String getParentChannelAvatarUrl() throws ParsingException { + return ""; + } + @Nonnull @Override public String getDashMpdUrl() throws ParsingException { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java index 78a5fbf3d..c740ffd75 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java @@ -178,6 +178,39 @@ public abstract class StreamExtractor extends Extractor { @Nonnull public abstract String getUploaderAvatarUrl() throws ParsingException; + /** + * The Url to the page of the parent chanel of the stream. This must not be a homepage, + * but the page offered by the service the extractor handles. This url will be handled by the + * ChannelExtractor, + * so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects + * this url. + * + * @return the url to the page of the parent chanel of the stream or an empty String + * @throws ParsingException + */ + @Nonnull + public abstract String getParentChannelUrl() throws ParsingException; + + /** + * The name of the parent chanel of the stream. + * If the name is not available you can simply return an empty string. + * + * @return the name of the parent chanel of the stream or an empty String + * @throws ParsingException + */ + @Nonnull + public abstract String getParentChannelName() throws ParsingException; + + /** + * The url to the image file/profile picture/avatar of the parent chanel of the stream. + * If the url is not available you can return an empty String. + * + * @return The url of the image file of the parent chanel or an empty String + * @throws ParsingException + */ + @Nonnull + public abstract String getParentChannelAvatarUrl() throws ParsingException; + /** * Get the dash mpd url. If you don't know what a dash MPD is you can read about it * here. diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java index 0e5ff0808..a3cf3dc7e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java @@ -223,6 +223,28 @@ public class StreamInfo extends Info { } catch (Exception e) { streamInfo.addError(e); } + try { + streamInfo.setUploaderAvatarUrl(extractor.getUploaderAvatarUrl()); + } catch (Exception e) { + streamInfo.addError(e); + } + + try { + streamInfo.setParentChannelName(extractor.getParentChannelName()); + } catch (Exception e) { + streamInfo.addError(e); + } + try { + streamInfo.setParentChannelUrl(extractor.getParentChannelUrl()); + } catch (Exception e) { + streamInfo.addError(e); + } + try { + streamInfo.setParentChannelAvatarUrl(extractor.getParentChannelAvatarUrl()); + } catch (Exception e) { + streamInfo.addError(e); + } + try { streamInfo.setDescription(extractor.getDescription()); } catch (Exception e) { @@ -243,11 +265,6 @@ public class StreamInfo extends Info { } catch (Exception e) { streamInfo.addError(e); } - try { - streamInfo.setUploaderAvatarUrl(extractor.getUploaderAvatarUrl()); - } catch (Exception e) { - streamInfo.addError(e); - } try { streamInfo.setStartPosition(extractor.getTimeStamp()); } catch (Exception e) { @@ -332,6 +349,10 @@ public class StreamInfo extends Info { private String uploaderUrl = ""; private String uploaderAvatarUrl = ""; + private String parentChannelName = ""; + private String parentChannelUrl = ""; + private String parentChannelAvatarUrl = ""; + private List videoStreams = new ArrayList<>(); private List audioStreams = new ArrayList<>(); private List videoOnlyStreams = new ArrayList<>(); @@ -486,6 +507,30 @@ public class StreamInfo extends Info { this.uploaderAvatarUrl = uploaderAvatarUrl; } + public String getParentChannelName() { + return parentChannelName; + } + + public void setParentChannelName(String parentChannelName) { + this.parentChannelName = parentChannelName; + } + + public String getParentChannelUrl() { + return parentChannelUrl; + } + + public void setParentChannelUrl(String parentChannelUrl) { + this.parentChannelUrl = parentChannelUrl; + } + + public String getParentChannelAvatarUrl() { + return parentChannelAvatarUrl; + } + + public void setParentChannelAvatarUrl(String parentChannelAvatarUrl) { + this.parentChannelAvatarUrl = parentChannelAvatarUrl; + } + public List getVideoStreams() { return videoStreams; } From a4086617719e53b293efa1e8873799ba7714cb14 Mon Sep 17 00:00:00 2001 From: Roy Yosef Date: Thu, 16 Apr 2020 15:19:36 +0300 Subject: [PATCH 3/3] Fix PR review Rename "ParentChannel" to "SubChannel" Add Tests for sub-channel info fetching --- .../extractor/channel/ChannelExtractor.java | 6 +-- .../extractor/channel/ChannelInfo.java | 36 +++++++++--------- .../MediaCCCConferenceExtractor.java | 6 +-- .../extractors/MediaCCCStreamExtractor.java | 6 +-- .../extractors/PeertubeAccountExtractor.java | 6 +-- .../extractors/PeertubeChannelExtractor.java | 6 +-- .../extractors/PeertubeStreamExtractor.java | 6 +-- .../SoundcloudChannelExtractor.java | 6 +-- .../extractors/SoundcloudStreamExtractor.java | 6 +-- .../extractors/YoutubeChannelExtractor.java | 6 +-- .../extractors/YoutubeStreamExtractor.java | 6 +-- .../extractor/stream/StreamExtractor.java | 23 +++++------ .../newpipe/extractor/stream/StreamInfo.java | 36 +++++++++--------- .../PeertubeChannelExtractorTest.java | 16 ++++---- .../PeertubeStreamExtractorDefaultTest.java | 38 +++++++++++++------ 15 files changed, 113 insertions(+), 96 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java index 3f54f1c2c..3d3b9b1ba 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelExtractor.java @@ -37,7 +37,7 @@ public abstract class ChannelExtractor extends ListExtractor { public abstract String getFeedUrl() throws ParsingException; public abstract long getSubscriberCount() throws ParsingException; public abstract String getDescription() throws ParsingException; - public abstract String getParentChannelName() throws ParsingException; - public abstract String getParentChannelUrl() throws ParsingException; - public abstract String getParentChannelAvatarUrl() throws ParsingException; + public abstract String getSubChannelName() throws ParsingException; + public abstract String getSubChannelUrl() throws ParsingException; + public abstract String getSubChannelAvatarUrl() throws ParsingException; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java index 52f18eadc..874575308 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/channel/ChannelInfo.java @@ -95,19 +95,19 @@ public class ChannelInfo extends ListInfo { } try { - info.setParentChannelName(extractor.getParentChannelName()); + info.setSubChannelName(extractor.getSubChannelName()); } catch (Exception e) { info.addError(e); } try { - info.setParentChannelUrl(extractor.getParentChannelUrl()); + info.setSubChannelUrl(extractor.getSubChannelUrl()); } catch (Exception e) { info.addError(e); } try { - info.setParentChannelAvatarUrl(extractor.getParentChannelAvatarUrl()); + info.setSubChannelAvatarUrl(extractor.getSubChannelAvatarUrl()); } catch (Exception e) { info.addError(e); } @@ -116,37 +116,37 @@ public class ChannelInfo extends ListInfo { } private String avatarUrl; - private String parentChannelName; - private String parentChannelUrl; - private String parentChannelAvatarUrl; + private String subChannelName; + private String subChannelUrl; + private String subChannelAvatarUrl; private String bannerUrl; private String feedUrl; private long subscriberCount = -1; private String description; private String[] donationLinks; - public String getParentChannelName() { - return parentChannelName; + public String getSubChannelName() { + return subChannelName; } - public void setParentChannelName(String parentChannelName) { - this.parentChannelName = parentChannelName; + public void setSubChannelName(String subChannelName) { + this.subChannelName = subChannelName; } - public String getParentChannelUrl() { - return parentChannelUrl; + public String getSubChannelUrl() { + return subChannelUrl; } - public void setParentChannelUrl(String parentChannelUrl) { - this.parentChannelUrl = parentChannelUrl; + public void setSubChannelUrl(String subChannelUrl) { + this.subChannelUrl = subChannelUrl; } - public String getParentChannelAvatarUrl() { - return parentChannelAvatarUrl; + public String getSubChannelAvatarUrl() { + return subChannelAvatarUrl; } - public void setParentChannelAvatarUrl(String parentChannelAvatarUrl) { - this.parentChannelAvatarUrl = parentChannelAvatarUrl; + public void setSubChannelAvatarUrl(String subChannelAvatarUrl) { + this.subChannelAvatarUrl = subChannelAvatarUrl; } public String getAvatarUrl() { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java index f11c13c22..4ec6bb646 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCConferenceExtractor.java @@ -53,17 +53,17 @@ public class MediaCCCConferenceExtractor extends ChannelExtractor { } @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java index 8eed7091f..93772608e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCStreamExtractor.java @@ -112,19 +112,19 @@ public class MediaCCCStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java index d5bdacc6a..fd82e4304 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeAccountExtractor.java @@ -76,17 +76,17 @@ public class PeertubeAccountExtractor extends ChannelExtractor { } @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java index c8f7f4cb3..ff0ff97df 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelExtractor.java @@ -76,17 +76,17 @@ public class PeertubeChannelExtractor extends ChannelExtractor { } @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return JsonUtils.getString(json, "ownerAccount.name"); } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return JsonUtils.getString(json, "ownerAccount.url"); } @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { String value; try { value = JsonUtils.getString(json, "ownerAccount.avatar.path"); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java index 05f1846b2..88ef02435 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java @@ -148,19 +148,19 @@ public class PeertubeStreamExtractor extends StreamExtractor { } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return JsonUtils.getString(json, "channel.url"); } @Nonnull @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return JsonUtils.getString(json, "channel.displayName"); } @Nonnull @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { String value; try { value = JsonUtils.getString(json, "channel.avatar.path"); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java index 1068b36f1..13afc4c7f 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java @@ -84,17 +84,17 @@ public class SoundcloudChannelExtractor extends ChannelExtractor { } @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java index d276c2b90..beee2c3ef 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java @@ -144,19 +144,19 @@ public class SoundcloudStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java index 0e5329425..7b614bffa 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeChannelExtractor.java @@ -213,17 +213,17 @@ public class YoutubeChannelExtractor extends ChannelExtractor { } @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java index 503d09e1d..22dc78c52 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java @@ -354,19 +354,19 @@ public class YoutubeStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getParentChannelUrl() throws ParsingException { + public String getSubChannelUrl() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelName() throws ParsingException { + public String getSubChannelName() throws ParsingException { return ""; } @Nonnull @Override - public String getParentChannelAvatarUrl() throws ParsingException { + public String getSubChannelAvatarUrl() throws ParsingException { return ""; } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java index c740ffd75..2cc64ab70 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamExtractor.java @@ -23,6 +23,7 @@ package org.schabi.newpipe.extractor.stream; import org.schabi.newpipe.extractor.Extractor; import org.schabi.newpipe.extractor.MediaFormat; import org.schabi.newpipe.extractor.StreamingService; +import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.linkhandler.LinkHandler; @@ -148,7 +149,7 @@ public abstract class StreamExtractor extends Extractor { /** * The Url to the page of the creator/uploader of the stream. This must not be a homepage, * but the page offered by the service the extractor handles. This url will be handled by the - * ChannelExtractor, + * {@link ChannelExtractor}, * so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects * this url. * @@ -179,37 +180,37 @@ public abstract class StreamExtractor extends Extractor { public abstract String getUploaderAvatarUrl() throws ParsingException; /** - * The Url to the page of the parent chanel of the stream. This must not be a homepage, + * The Url to the page of the sub-channel of the stream. This must not be a homepage, * but the page offered by the service the extractor handles. This url will be handled by the - * ChannelExtractor, + * {@link ChannelExtractor}, * so be sure to implement that one before you return a value here, otherwise NewPipe will crash if one selects * this url. * - * @return the url to the page of the parent chanel of the stream or an empty String + * @return the url to the page of the sub-channel of the stream or an empty String * @throws ParsingException */ @Nonnull - public abstract String getParentChannelUrl() throws ParsingException; + public abstract String getSubChannelUrl() throws ParsingException; /** - * The name of the parent chanel of the stream. + * The name of the sub-channel of the stream. * If the name is not available you can simply return an empty string. * - * @return the name of the parent chanel of the stream or an empty String + * @return the name of the sub-channel of the stream or an empty String * @throws ParsingException */ @Nonnull - public abstract String getParentChannelName() throws ParsingException; + public abstract String getSubChannelName() throws ParsingException; /** - * The url to the image file/profile picture/avatar of the parent chanel of the stream. + * The url to the image file/profile picture/avatar of the sub-channel of the stream. * If the url is not available you can return an empty String. * - * @return The url of the image file of the parent chanel or an empty String + * @return The url of the image file of the sub-channel or an empty String * @throws ParsingException */ @Nonnull - public abstract String getParentChannelAvatarUrl() throws ParsingException; + public abstract String getSubChannelAvatarUrl() throws ParsingException; /** * Get the dash mpd url. If you don't know what a dash MPD is you can read about it diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java index a3cf3dc7e..aa1001b44 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/StreamInfo.java @@ -230,17 +230,17 @@ public class StreamInfo extends Info { } try { - streamInfo.setParentChannelName(extractor.getParentChannelName()); + streamInfo.setSubChannelName(extractor.getSubChannelName()); } catch (Exception e) { streamInfo.addError(e); } try { - streamInfo.setParentChannelUrl(extractor.getParentChannelUrl()); + streamInfo.setSubChannelUrl(extractor.getSubChannelUrl()); } catch (Exception e) { streamInfo.addError(e); } try { - streamInfo.setParentChannelAvatarUrl(extractor.getParentChannelAvatarUrl()); + streamInfo.setSubChannelAvatarUrl(extractor.getSubChannelAvatarUrl()); } catch (Exception e) { streamInfo.addError(e); } @@ -349,9 +349,9 @@ public class StreamInfo extends Info { private String uploaderUrl = ""; private String uploaderAvatarUrl = ""; - private String parentChannelName = ""; - private String parentChannelUrl = ""; - private String parentChannelAvatarUrl = ""; + private String subChannelName = ""; + private String subChannelUrl = ""; + private String subChannelAvatarUrl = ""; private List videoStreams = new ArrayList<>(); private List audioStreams = new ArrayList<>(); @@ -507,28 +507,28 @@ public class StreamInfo extends Info { this.uploaderAvatarUrl = uploaderAvatarUrl; } - public String getParentChannelName() { - return parentChannelName; + public String getSubChannelName() { + return subChannelName; } - public void setParentChannelName(String parentChannelName) { - this.parentChannelName = parentChannelName; + public void setSubChannelName(String subChannelName) { + this.subChannelName = subChannelName; } - public String getParentChannelUrl() { - return parentChannelUrl; + public String getSubChannelUrl() { + return subChannelUrl; } - public void setParentChannelUrl(String parentChannelUrl) { - this.parentChannelUrl = parentChannelUrl; + public void setSubChannelUrl(String subChannelUrl) { + this.subChannelUrl = subChannelUrl; } - public String getParentChannelAvatarUrl() { - return parentChannelAvatarUrl; + public String getSubChannelAvatarUrl() { + return subChannelAvatarUrl; } - public void setParentChannelAvatarUrl(String parentChannelAvatarUrl) { - this.parentChannelAvatarUrl = parentChannelAvatarUrl; + public void setSubChannelAvatarUrl(String subChannelAvatarUrl) { + this.subChannelAvatarUrl = subChannelAvatarUrl; } public List getVideoStreams() { diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java index bdab43ef8..77d0623e8 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeChannelExtractorTest.java @@ -85,13 +85,13 @@ public class PeertubeChannelExtractorTest { } @Test - public void testParentChannelName() throws ParsingException { - assertEquals("libux", extractor.getParentChannelName()); + public void testSubChannelName() throws ParsingException { + assertEquals("libux", extractor.getSubChannelName()); } @Test - public void testParentChannelUrl() throws ParsingException { - assertEquals("https://peertube.mastodon.host/accounts/libux", extractor.getParentChannelUrl()); + public void testSubChannelUrl() throws ParsingException { + assertEquals("https://peertube.mastodon.host/accounts/libux", extractor.getSubChannelUrl()); } @Test @@ -192,13 +192,13 @@ public class PeertubeChannelExtractorTest { } @Test - public void testParentChannelName() throws ParsingException { - assertEquals("booteille", extractor.getParentChannelName()); + public void testSubChannelName() throws ParsingException { + assertEquals("booteille", extractor.getSubChannelName()); } @Test - public void testParentChannelUrl() throws ParsingException { - assertEquals("https://peertube.mastodon.host/accounts/booteille", extractor.getParentChannelUrl()); + public void testSubChannelUrl() throws ParsingException { + assertEquals("https://peertube.mastodon.host/accounts/booteille", extractor.getSubChannelUrl()); } @Test diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorDefaultTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorDefaultTest.java index f5202f39d..dd4c9c449 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorDefaultTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorDefaultTest.java @@ -87,6 +87,33 @@ public class PeertubeStreamExtractorDefaultTest { assertEquals("Framasoft", extractor.getUploaderName()); } + @Test + public void testGetUploaderUrl() throws ParsingException { + assertIsSecureUrl(extractor.getUploaderUrl()); + assertEquals("https://framatube.org/api/v1/accounts/framasoft@framatube.org", extractor.getUploaderUrl()); + } + + @Test + public void testGetUploaderAvatarUrl() throws ParsingException { + assertIsSecureUrl(extractor.getUploaderAvatarUrl()); + } + + @Test + public void testGetSubChannelName() throws ParsingException { + assertEquals("Les vidéos de Framasoft", extractor.getSubChannelName()); + } + + @Test + public void testGetSubChannelUrl() throws ParsingException { + assertIsSecureUrl(extractor.getSubChannelUrl()); + assertEquals("https://framatube.org/video-channels/bf54d359-cfad-4935-9d45-9d6be93f63e8", extractor.getSubChannelUrl()); + } + + @Test + public void testGetSubChannelAvatarUrl() throws ParsingException { + assertIsSecureUrl(extractor.getSubChannelAvatarUrl()); + } + @Test public void testGetLength() throws ParsingException { assertEquals(113, extractor.getLength()); @@ -98,22 +125,11 @@ public class PeertubeStreamExtractorDefaultTest { extractor.getViewCount() > 10); } - @Test - public void testGetUploaderUrl() throws ParsingException { - assertIsSecureUrl(extractor.getUploaderUrl()); - assertEquals("https://framatube.org/api/v1/accounts/framasoft@framatube.org", extractor.getUploaderUrl()); - } - @Test public void testGetThumbnailUrl() throws ParsingException { assertIsSecureUrl(extractor.getThumbnailUrl()); } - @Test - public void testGetUploaderAvatarUrl() throws ParsingException { - assertIsSecureUrl(extractor.getUploaderAvatarUrl()); - } - @Test public void testGetVideoStreams() throws IOException, ExtractionException { assertFalse(extractor.getVideoStreams().isEmpty());