From 7e01eaac3332567e7c3dc17eb42bb7e508231d40 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Sat, 30 Jul 2022 17:09:09 +0200 Subject: [PATCH] [Bandcamp] Apply changes in InfoItemExtractors --- .../BandcampAlbumInfoItemExtractor.java | 11 +++++-- .../BandcampChannelInfoItemExtractor.java | 11 +++++-- .../BandcampCommentsInfoItemExtractor.java | 16 +++++++--- .../BandcampPlaylistInfoItemExtractor.java | 9 ++++-- ...campPlaylistInfoItemFeaturedExtractor.java | 17 +++++++--- .../BandcampRadioInfoItemExtractor.java | 20 ++++++------ ...dcampRelatedPlaylistInfoItemExtractor.java | 9 ++++-- ...campDiscographStreamInfoItemExtractor.java | 19 +++++------ ...ndcampPlaylistStreamInfoItemExtractor.java | 32 +++++++++---------- ...BandcampSearchStreamInfoItemExtractor.java | 18 +++++------ 10 files changed, 96 insertions(+), 66 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampAlbumInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampAlbumInfoItemExtractor.java index 3f41ea047..5b9b1018f 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampAlbumInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampAlbumInfoItemExtractor.java @@ -1,10 +1,16 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import com.grack.nanojson.JsonObject; + +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.ListExtractor; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor; +import java.util.List; + +import javax.annotation.Nonnull; + public class BandcampAlbumInfoItemExtractor implements PlaylistInfoItemExtractor { private final JsonObject albumInfoItem; private final String uploaderUrl; @@ -28,9 +34,10 @@ public class BandcampAlbumInfoItemExtractor implements PlaylistInfoItemExtractor albumInfoItem.getString("item_type")); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return BandcampExtractorHelper.getImageUrl(albumInfoItem.getLong("art_id"), true); + public List getThumbnails() throws ParsingException { + return BandcampExtractorHelper.getImagesFromImageId(albumInfoItem.getLong("art_id"), true); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelInfoItemExtractor.java index f89a63405..268494e4a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelInfoItemExtractor.java @@ -3,9 +3,15 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import org.jsoup.nodes.Element; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor; import org.schabi.newpipe.extractor.exceptions.ParsingException; +import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromSearchResult; + public class BandcampChannelInfoItemExtractor implements ChannelInfoItemExtractor { private final Element resultInfo; @@ -26,9 +32,10 @@ public class BandcampChannelInfoItemExtractor implements ChannelInfoItemExtracto return resultInfo.getElementsByClass("itemurl").text(); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return BandcampExtractorHelper.getThumbnailUrlFromSearchResult(searchResult); + public List getThumbnails() throws ParsingException { + return getImagesFromSearchResult(searchResult); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampCommentsInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampCommentsInfoItemExtractor.java index e65b2cc4d..1a9f691c3 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampCommentsInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampCommentsInfoItemExtractor.java @@ -1,13 +1,17 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; -import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.comments.CommentsInfoItemExtractor; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.stream.Description; +import javax.annotation.Nonnull; +import java.util.List; + public class BandcampCommentsInfoItemExtractor implements CommentsInfoItemExtractor { private final JsonObject review; @@ -28,9 +32,10 @@ public class BandcampCommentsInfoItemExtractor implements CommentsInfoItemExtrac return url; } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return getUploaderAvatarUrl(); + public List getThumbnails() throws ParsingException { + return getUploaderAvatars(); } @Override @@ -43,8 +48,9 @@ public class BandcampCommentsInfoItemExtractor implements CommentsInfoItemExtrac return review.getString("name"); } + @Nonnull @Override - public String getUploaderAvatarUrl() { - return getImageUrl(review.getLong("image_id"), false); + public List getUploaderAvatars() { + return getImagesFromImageId(review.getLong("image_id"), false); } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemExtractor.java index 4bc4a1c65..8c34675f0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemExtractor.java @@ -1,9 +1,13 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import org.jsoup.nodes.Element; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor; import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromSearchResult; public class BandcampPlaylistInfoItemExtractor implements PlaylistInfoItemExtractor { private final Element searchResult; @@ -46,8 +50,9 @@ public class BandcampPlaylistInfoItemExtractor implements PlaylistInfoItemExtrac return resultInfo.getElementsByClass("itemurl").text(); } + @Nonnull @Override - public String getThumbnailUrl() { - return BandcampExtractorHelper.getThumbnailUrlFromSearchResult(searchResult); + public List getThumbnails() { + return getImagesFromSearchResult(searchResult); } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemFeaturedExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemFeaturedExtractor.java index 0808e10cb..e7de5691d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemFeaturedExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistInfoItemFeaturedExtractor.java @@ -1,9 +1,14 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor; +import org.schabi.newpipe.extractor.utils.Utils; -import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; +import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId; public class BandcampPlaylistInfoItemFeaturedExtractor implements PlaylistInfoItemExtractor { @@ -40,12 +45,14 @@ public class BandcampPlaylistInfoItemFeaturedExtractor implements PlaylistInfoIt @Override public String getUrl() { - return featuredStory.getString("item_url").replaceAll("http://", "https://"); + return Utils.replaceHttpWithHttps(featuredStory.getString("item_url")); } + @Nonnull @Override - public String getThumbnailUrl() { - return featuredStory.has("art_id") ? getImageUrl(featuredStory.getLong("art_id"), true) - : getImageUrl(featuredStory.getLong("item_art_id"), true); + public List getThumbnails() { + return featuredStory.has("art_id") + ? getImagesFromImageId(featuredStory.getLong("art_id"), true) + : getImagesFromImageId(featuredStory.getLong("item_art_id"), true); } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java index be6ba0b7a..023234aa3 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioInfoItemExtractor.java @@ -3,15 +3,20 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.localization.DateWrapper; import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor; import org.schabi.newpipe.extractor.stream.StreamType; +import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.util.List; + import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL; -import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId; +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.parseDate; public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { @@ -39,7 +44,7 @@ public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { @Nullable @Override public DateWrapper getUploadDate() throws ParsingException { - return BandcampExtractorHelper.parseDate(getTextualUploadDate()); + return parseDate(getTextualUploadDate()); } @Override @@ -52,9 +57,10 @@ public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { return BASE_URL + "/?show=" + show.getInt("id"); } + @Nonnull @Override - public String getThumbnailUrl() { - return getImageUrl(show.getLong("image_id"), false); + public List getThumbnails() { + return getImagesFromImageId(show.getLong("image_id"), false); } @Override @@ -78,12 +84,6 @@ public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor { return ""; } - @Nullable - @Override - public String getUploaderAvatarUrl() { - return null; - } - @Override public boolean isUploaderVerified() throws ParsingException { return false; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java index 55b319936..64d388528 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRelatedPlaylistInfoItemExtractor.java @@ -3,10 +3,14 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors; import org.jsoup.nodes.Element; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor; import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageUrl; /** * Extracts recommended albums from tracks' website @@ -28,9 +32,10 @@ public class BandcampRelatedPlaylistInfoItemExtractor implements PlaylistInfoIte return relatedAlbum.getElementsByClass("album-link").attr("abs:href"); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return relatedAlbum.getElementsByClass("album-art").attr("src"); + public List getThumbnails() throws ParsingException { + return getImagesFromImageUrl(relatedAlbum.getElementsByClass("album-art").attr("src")); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampDiscographStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampDiscographStreamInfoItemExtractor.java index 42b3170b3..cea350460 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampDiscographStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampDiscographStreamInfoItemExtractor.java @@ -1,10 +1,14 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId; public class BandcampDiscographStreamInfoItemExtractor extends BandcampStreamInfoItemExtractor { @@ -20,12 +24,6 @@ public class BandcampDiscographStreamInfoItemExtractor extends BandcampStreamInf return discograph.getString("band_name"); } - @Nullable - @Override - public String getUploaderAvatarUrl() { - return null; - } - @Override public String getName() { return discograph.getString("title"); @@ -40,11 +38,10 @@ public class BandcampDiscographStreamInfoItemExtractor extends BandcampStreamInf ); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return BandcampExtractorHelper.getImageUrl( - discograph.getLong("art_id"), true - ); + public List getThumbnails() throws ParsingException { + return getImagesFromImageId(discograph.getLong("art_id"), true); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampPlaylistStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampPlaylistStreamInfoItemExtractor.java index 1b2e7e886..5c37ec457 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampPlaylistStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampPlaylistStreamInfoItemExtractor.java @@ -3,19 +3,21 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem; import com.grack.nanojson.JsonObject; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.stream.StreamExtractor; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; import java.io.IOException; - +import java.util.Collections; +import java.util.List; public class BandcampPlaylistStreamInfoItemExtractor extends BandcampStreamInfoItemExtractor { private final JsonObject track; - private String substituteCoverUrl; + private List substituteCovers; private final StreamingService service; public BandcampPlaylistStreamInfoItemExtractor(final JsonObject track, @@ -24,13 +26,14 @@ public class BandcampPlaylistStreamInfoItemExtractor extends BandcampStreamInfoI super(uploaderUrl); this.track = track; this.service = service; + substituteCovers = Collections.emptyList(); } public BandcampPlaylistStreamInfoItemExtractor(final JsonObject track, final String uploaderUrl, - final String substituteCoverUrl) { + final List substituteCovers) { this(track, uploaderUrl, (StreamingService) null); - this.substituteCoverUrl = substituteCoverUrl; + this.substituteCovers = substituteCovers; } @Override @@ -56,28 +59,23 @@ public class BandcampPlaylistStreamInfoItemExtractor extends BandcampStreamInfoI return ""; } - @Nullable - @Override - public String getUploaderAvatarUrl() { - return null; - } - /** * Each track can have its own cover art. Therefore, unless a substitute is provided, * the thumbnail is extracted using a stream extractor. */ + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - if (substituteCoverUrl != null) { - return substituteCoverUrl; - } else { + public List getThumbnails() throws ParsingException { + if (substituteCovers.isEmpty()) { try { final StreamExtractor extractor = service.getStreamExtractor(getUrl()); extractor.fetchPage(); - return extractor.getThumbnailUrl(); + return extractor.getThumbnails(); } catch (final ExtractionException | IOException e) { - throw new ParsingException("could not download cover art location", e); + throw new ParsingException("Could not download cover art location", e); } } + + return substituteCovers; } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java index 5e585e7e0..18c0c0dcc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java @@ -1,10 +1,13 @@ package org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem; import org.jsoup.nodes.Element; +import org.schabi.newpipe.extractor.Image; import org.schabi.newpipe.extractor.exceptions.ParsingException; -import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; +import java.util.List; + +import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromSearchResult; public class BandcampSearchStreamInfoItemExtractor extends BandcampStreamInfoItemExtractor { @@ -29,12 +32,6 @@ public class BandcampSearchStreamInfoItemExtractor extends BandcampStreamInfoIte } } - @Nullable - @Override - public String getUploaderAvatarUrl() { - return null; - } - @Override public String getName() throws ParsingException { return resultInfo.getElementsByClass("heading").text(); @@ -45,9 +42,10 @@ public class BandcampSearchStreamInfoItemExtractor extends BandcampStreamInfoIte return resultInfo.getElementsByClass("itemurl").text(); } + @Nonnull @Override - public String getThumbnailUrl() throws ParsingException { - return BandcampExtractorHelper.getThumbnailUrlFromSearchResult(searchResult); + public List getThumbnails() throws ParsingException { + return getImagesFromSearchResult(searchResult); } @Override