From 0a6011a50ed0dbe4d8acfaeaaf84bb968040e956 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Wed, 27 Jul 2022 19:36:44 +0200 Subject: [PATCH] [PeerTube] Apply changes in InfoItemExtractors Also lower the visibility of attributes of channels and playlists InfoItems to private. --- .../PeertubeChannelInfoItemExtractor.java | 22 +++++++------- .../PeertubeCommentsInfoItemExtractor.java | 29 +++++++------------ .../PeertubePlaylistInfoItemExtractor.java | 16 ++++++---- .../PeertubeStreamInfoItemExtractor.java | 26 +++++++++-------- 4 files changed, 45 insertions(+), 48 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelInfoItemExtractor.java index 0faa25ea8..ac960b07e 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelInfoItemExtractor.java @@ -1,22 +1,24 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor; import org.schabi.newpipe.extractor.exceptions.ParsingException; import javax.annotation.Nonnull; -import java.util.Comparator; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; public class PeertubeChannelInfoItemExtractor implements ChannelInfoItemExtractor { - final JsonObject item; - final JsonObject uploader; - final String baseUrl; + private final JsonObject item; + private final String baseUrl; + public PeertubeChannelInfoItemExtractor(@Nonnull final JsonObject item, @Nonnull final String baseUrl) { this.item = item; - this.uploader = item.getObject("uploader"); this.baseUrl = baseUrl; } @@ -30,14 +32,10 @@ public class PeertubeChannelInfoItemExtractor implements ChannelInfoItemExtracto return item.getString("url"); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return item.getArray("avatars").stream() - .filter(JsonObject.class::isInstance) - .map(JsonObject.class::cast) - .max(Comparator.comparingInt(avatar -> avatar.getInt("width"))) - .map(avatar -> baseUrl + avatar.getString("path")) - .orElse(null); + public List getThumbnails() throws ParsingException { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java index 804b23802..f2179cbde 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java @@ -6,21 +6,24 @@ import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonWriter; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.comments.CommentsInfoItemExtractor; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.localization.DateWrapper; -import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper; import org.schabi.newpipe.extractor.stream.Description; import org.schabi.newpipe.extractor.utils.JsonUtils; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.Objects; import static org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeCommentsExtractor.CHILDREN; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateFrom; public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtractor { @Nonnull @@ -52,15 +55,10 @@ public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtrac return url + "/" + getCommentId(); } + @Nonnull @Override - public String getThumbnailUrl() { - String value; - try { - value = JsonUtils.getString(item, "account.avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getThumbnails() { + return getUploaderAvatars(); } @Override @@ -76,7 +74,7 @@ public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtrac @Override public DateWrapper getUploadDate() throws ParsingException { final String textualUploadDate = getTextualUploadDate(); - return new DateWrapper(PeertubeParsingHelper.parseDateFrom(textualUploadDate)); + return new DateWrapper(parseDateFrom(textualUploadDate)); } @Override @@ -97,15 +95,10 @@ public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtrac return Objects.toString(item.getLong("id"), null); } + @Nonnull @Override - public String getUploaderAvatarUrl() { - String value; - try { - value = JsonUtils.getString(item, "account.avatar.path"); - } catch (final Exception e) { - value = "/client/assets/images/default-avatar.png"; - } - return baseUrl + value; + public List getUploaderAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item.getObject("account")); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistInfoItemExtractor.java index 168872e15..6dbe0272a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistInfoItemExtractor.java @@ -2,19 +2,22 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor; import org.schabi.newpipe.extractor.stream.Description; import javax.annotation.Nonnull; +import java.util.List; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; +import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem; -public class PeertubePlaylistInfoItemExtractor implements PlaylistInfoItemExtractor { +public class PeertubePlaylistInfoItemExtractor implements PlaylistInfoItemExtractor { - final JsonObject item; - final JsonObject uploader; - final String baseUrl; + private final JsonObject item; + private final JsonObject uploader; + private final String baseUrl; public PeertubePlaylistInfoItemExtractor(@Nonnull final JsonObject item, @Nonnull final String baseUrl) { @@ -33,9 +36,10 @@ public class PeertubePlaylistInfoItemExtractor implements PlaylistInfoItemExtrac return item.getString("url"); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return baseUrl + item.getString("thumbnailPath"); + public List getThumbnails() throws ParsingException { + return getThumbnailsFromPlaylistOrVideoItem(baseUrl, item); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java index b9c7f4b13..46aae43cc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java @@ -1,15 +1,20 @@ package org.schabi.newpipe.extractor.services.peertube.extractors; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.localization.DateWrapper; -import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper; import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor; import org.schabi.newpipe.extractor.stream.StreamType; import org.schabi.newpipe.extractor.utils.JsonUtils; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; +import java.util.List; + +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.services.peertube.PeertubeParsingHelper.parseDateFrom; public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor { @@ -27,9 +32,10 @@ public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor return ServiceList.PeerTube.getStreamLHFactory().fromId(uuid, baseUrl).getUrl(); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return baseUrl + JsonUtils.getString(item, "thumbnailPath"); + public List getThumbnails() throws ParsingException { + return getThumbnailsFromPlaylistOrVideoItem(baseUrl, item); } @Override @@ -56,14 +62,10 @@ public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor .fromId("accounts/" + name + "@" + host, baseUrl).getUrl(); } - @Nullable + @Nonnull @Override - public String getUploaderAvatarUrl() { - final JsonObject account = item.getObject("account"); - if (account.has("avatar") && !account.isNull("avatar")) { - return baseUrl + account.getObject("avatar").getString("path"); - } - return null; + public List getUploaderAvatars() { + return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item.getObject("account")); } @Override @@ -89,7 +91,7 @@ public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor return null; } - return new DateWrapper(PeertubeParsingHelper.parseDateFrom(textualUploadDate)); + return new DateWrapper(parseDateFrom(textualUploadDate)); } @Override