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; }