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 eb95dcbe9..8b86a3a44 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 @@ -4,6 +4,7 @@ import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParserException; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs; @@ -22,6 +23,9 @@ import javax.annotation.Nullable; import java.io.IOException; import java.util.List; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject; + public class PeertubeAccountExtractor extends ChannelExtractor { private JsonObject json; private final String baseUrl; @@ -33,20 +37,16 @@ public class PeertubeAccountExtractor extends ChannelExtractor { this.baseUrl = getBaseUrl(); } + @Nonnull @Override - public String getAvatarUrl() { - String value; - try { - value = JsonUtils.getString(json, "avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json); } + @Nonnull @Override - public String getBannerUrl() { - return null; + public List getBanners() { + return getBannersFromAccountOrVideoChannelObject(baseUrl, json); } @Override @@ -99,9 +99,10 @@ public class PeertubeAccountExtractor extends ChannelExtractor { return ""; } + @Nonnull @Override - public String getParentChannelAvatarUrl() { - return ""; + public List getParentChannelAvatars() { + return List.of(); } @Override 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 e7de3f061..f8594d697 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 @@ -3,6 +3,7 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParserException; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs; @@ -20,6 +21,9 @@ import javax.annotation.Nullable; import java.io.IOException; import java.util.List; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject; + public class PeertubeChannelExtractor extends ChannelExtractor { private JsonObject json; private final String baseUrl; @@ -30,20 +34,16 @@ public class PeertubeChannelExtractor extends ChannelExtractor { this.baseUrl = getBaseUrl(); } + @Nonnull @Override - public String getAvatarUrl() { - String value; - try { - value = JsonUtils.getString(json, "avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json); } + @Nonnull @Override - public String getBannerUrl() { - return null; + public List getBanners() { + return getBannersFromAccountOrVideoChannelObject(baseUrl, json); } @Override @@ -72,15 +72,11 @@ public class PeertubeChannelExtractor extends ChannelExtractor { return JsonUtils.getString(json, "ownerAccount.url"); } + @Nonnull @Override - public String getParentChannelAvatarUrl() { - String value; - try { - value = JsonUtils.getString(json, "ownerAccount.avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getParentChannelAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject( + baseUrl, json.getObject("ownerAccount")); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistExtractor.java index a950375f0..e1d05417c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistExtractor.java @@ -3,6 +3,7 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParserException; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.downloader.Downloader; @@ -19,11 +20,14 @@ import org.schabi.newpipe.extractor.utils.Utils; import javax.annotation.Nonnull; import java.io.IOException; +import java.util.List; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.COUNT_KEY; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.ITEMS_PER_PAGE; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.START_KEY; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.collectItemsFrom; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; public class PeertubePlaylistExtractor extends PlaylistExtractor { @@ -36,8 +40,8 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor { @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return getBaseUrl() + playlistInfo.getString("thumbnailPath"); + public List getThumbnails() throws ParsingException { + return getThumbnailsFromPlaylistOrVideoItem(getBaseUrl(), playlistInfo); } @Override @@ -50,10 +54,11 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor { return playlistInfo.getObject("ownerAccount").getString("displayName"); } + @Nonnull @Override - public String getUploaderAvatarUrl() throws ParsingException { - return getBaseUrl() - + playlistInfo.getObject("ownerAccount").getObject("avatar").getString("path"); + public List getUploaderAvatars() throws ParsingException { + return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(), + playlistInfo.getObject("ownerAccount")); } @Override @@ -90,9 +95,9 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor { @Nonnull @Override - public String getSubChannelAvatarUrl() throws ParsingException { - return getBaseUrl() - + playlistInfo.getObject("videoChannel").getObject("avatar").getString("path"); + public List getSubChannelAvatars() throws ParsingException { + return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(), + playlistInfo.getObject("videoChannel")); } @Nonnull 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 32d3ed4a7..699083df7 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 @@ -1,5 +1,7 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem; import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; @@ -7,7 +9,7 @@ import com.grack.nanojson.JsonArray; import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParserException; - +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.MediaFormat; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; @@ -87,8 +89,8 @@ public class PeertubeStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return baseUrl + JsonUtils.getString(json, "previewPath"); + public List getThumbnails() throws ParsingException { + return getThumbnailsFromPlaylistOrVideoItem(baseUrl, json); } @Nonnull @@ -176,14 +178,8 @@ public class PeertubeStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getUploaderAvatarUrl() { - String value; - try { - value = JsonUtils.getString(json, "account.avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getUploaderAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("account")); } @Nonnull @@ -200,14 +196,8 @@ public class PeertubeStreamExtractor extends StreamExtractor { @Nonnull @Override - public String getSubChannelAvatarUrl() { - String value; - try { - value = JsonUtils.getString(json, "channel.avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getSubChannelAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("channel")); } @Nonnull