From 4e6fb368bc49d261a1e3196414449c994249df42 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Fri, 29 Jul 2022 12:52:13 +0200 Subject: [PATCH] [PeerTube] Apply changes in Extractors and remove usages of default avatar picture The default avatar picture was used when no profile picture was found, but it was removed and split in multiple images. Thumbnails' size is not known, as this data is not provided by the API. --- .../extractors/PeertubeAccountExtractor.java | 25 ++++++++------- .../extractors/PeertubeChannelExtractor.java | 32 ++++++++----------- .../extractors/PeertubePlaylistExtractor.java | 21 +++++++----- .../extractors/PeertubeStreamExtractor.java | 28 ++++++---------- 4 files changed, 49 insertions(+), 57 deletions(-) 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