Skip to content

Commit 71cda03

Browse files
committed
[Bandcamp] Apply changes in Extractors
1 parent 7e01eaa commit 71cda03

4 files changed

Lines changed: 57 additions & 33 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampChannelExtractor.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22

33
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
44

5+
import static org.schabi.newpipe.extractor.Image.HEIGHT_UNKNOWN;
6+
import static org.schabi.newpipe.extractor.Image.WIDTH_UNKNOWN;
7+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getArtistDetails;
8+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
59
import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps;
610

711
import com.grack.nanojson.JsonArray;
812
import com.grack.nanojson.JsonObject;
913

1014
import org.jsoup.Jsoup;
15+
import org.schabi.newpipe.extractor.Image;
16+
import org.schabi.newpipe.extractor.Image.ResolutionLevel;
1117
import org.schabi.newpipe.extractor.StreamingService;
1218
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
1319
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabExtractor;
@@ -25,6 +31,7 @@
2531
import java.util.Collections;
2632
import java.util.List;
2733
import java.util.Objects;
34+
import java.util.stream.Collectors;
2835
import java.util.stream.Stream;
2936

3037
import javax.annotation.Nonnull;
@@ -38,17 +45,15 @@ public BandcampChannelExtractor(final StreamingService service,
3845
super(service, linkHandler);
3946
}
4047

48+
@Nonnull
4149
@Override
42-
public String getAvatarUrl() {
43-
if (channelInfo.getLong("bio_image_id") == 0) {
44-
return "";
45-
}
46-
47-
return BandcampExtractorHelper.getImageUrl(channelInfo.getLong("bio_image_id"), false);
50+
public List<Image> getAvatars() {
51+
return getImagesFromImageId(channelInfo.getLong("bio_image_id"), false);
4852
}
4953

54+
@Nonnull
5055
@Override
51-
public String getBannerUrl() throws ParsingException {
56+
public List<Image> getBanners() throws ParsingException {
5257
/*
5358
* Mobile API does not return the header or not the correct header.
5459
* Therefore, we need to query the website
@@ -62,8 +67,11 @@ public String getBannerUrl() throws ParsingException {
6267
.filter(Objects::nonNull)
6368
.flatMap(element -> element.getElementsByTag("img").stream())
6469
.map(element -> element.attr("src"))
65-
.findFirst()
66-
.orElse(""); // no banner available
70+
.filter(url -> !url.isEmpty())
71+
.map(url -> new Image(
72+
replaceHttpWithHttps(url), HEIGHT_UNKNOWN, WIDTH_UNKNOWN,
73+
ResolutionLevel.UNKNOWN))
74+
.collect(Collectors.toUnmodifiableList());
6775

6876
} catch (final IOException | ReCaptchaException e) {
6977
throw new ParsingException("Could not download artist web site", e);
@@ -98,9 +106,10 @@ public String getParentChannelUrl() {
98106
return null;
99107
}
100108

109+
@Nonnull
101110
@Override
102-
public String getParentChannelAvatarUrl() {
103-
return null;
111+
public List<Image> getParentChannelAvatars() {
112+
return List.of();
104113
}
105114

106115
@Override
@@ -156,7 +165,7 @@ public List<ListLinkHandler> getTabs() throws ParsingException {
156165
@Override
157166
public void onFetchPage(@Nonnull final Downloader downloader)
158167
throws IOException, ExtractionException {
159-
channelInfo = BandcampExtractorHelper.getArtistDetails(getId());
168+
channelInfo = getArtistDetails(getId());
160169
}
161170

162171
@Nonnull

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampPlaylistExtractor.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
22

3-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
3+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
4+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageUrl;
45
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampStreamExtractor.getAlbumInfoJson;
56
import static org.schabi.newpipe.extractor.utils.JsonUtils.getJsonData;
67
import static org.schabi.newpipe.extractor.utils.Utils.HTTPS;
@@ -13,6 +14,7 @@
1314
import org.jsoup.nodes.Document;
1415
import org.jsoup.nodes.Element;
1516
import org.jsoup.select.Elements;
17+
import org.schabi.newpipe.extractor.Image;
1618
import org.schabi.newpipe.extractor.Page;
1719
import org.schabi.newpipe.extractor.StreamingService;
1820
import org.schabi.newpipe.extractor.downloader.Downloader;
@@ -28,6 +30,7 @@
2830

2931
import java.io.IOException;
3032
import java.util.Objects;
33+
import java.util.List;
3134

3235
import javax.annotation.Nonnull;
3336

@@ -74,11 +77,11 @@ public void onFetchPage(@Nonnull final Downloader downloader)
7477

7578
@Nonnull
7679
@Override
77-
public String getThumbnailUrl() throws ParsingException {
80+
public List<Image> getThumbnails() throws ParsingException {
7881
if (albumJson.isNull("art_id")) {
79-
return "";
82+
return List.of();
8083
} else {
81-
return getImageUrl(albumJson.getLong("art_id"), true);
84+
return getImagesFromImageId(albumJson.getLong("art_id"), true);
8285
}
8386
}
8487

@@ -94,12 +97,14 @@ public String getUploaderName() {
9497
return albumJson.getString("artist");
9598
}
9699

100+
@Nonnull
97101
@Override
98-
public String getUploaderAvatarUrl() {
99-
return document.getElementsByClass("band-photo").stream()
102+
public List<Image> getUploaderAvatars() {
103+
return getImagesFromImageUrl(document.getElementsByClass("band-photo")
104+
.stream()
100105
.map(element -> element.attr("src"))
101106
.findFirst()
102-
.orElse("");
107+
.orElse(""));
103108
}
104109

105110
@Override
@@ -154,7 +159,7 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws ExtractionException
154159
} else {
155160
// Pretend every track has the same cover art as the album
156161
collector.commit(new BandcampPlaylistStreamInfoItemExtractor(
157-
track, getUploaderUrl(), getThumbnailUrl()));
162+
track, getUploaderUrl(), getThumbnails()));
158163
}
159164
}
160165

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampRadioStreamExtractor.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_API_URL;
44
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
55
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
6+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
67

78
import com.grack.nanojson.JsonArray;
89
import com.grack.nanojson.JsonObject;
@@ -11,6 +12,8 @@
1112

1213
import org.jsoup.Jsoup;
1314
import org.jsoup.nodes.Element;
15+
import org.schabi.newpipe.extractor.Image;
16+
import org.schabi.newpipe.extractor.Image.ResolutionLevel;
1417
import org.schabi.newpipe.extractor.MediaFormat;
1518
import org.schabi.newpipe.extractor.NewPipe;
1619
import org.schabi.newpipe.extractor.StreamingService;
@@ -97,14 +100,16 @@ public String getTextualUploadDate() {
97100

98101
@Nonnull
99102
@Override
100-
public String getThumbnailUrl() throws ParsingException {
101-
return getImageUrl(showInfo.getLong("show_image_id"), false);
103+
public List<Image> getThumbnails() throws ParsingException {
104+
return getImagesFromImageId(showInfo.getLong("show_image_id"), false);
102105
}
103106

104107
@Nonnull
105108
@Override
106-
public String getUploaderAvatarUrl() {
107-
return BASE_URL + "/img/buttons/bandcamp-button-circle-whitecolor-512.png";
109+
public List<Image> getUploaderAvatars() {
110+
return Collections.singletonList(
111+
new Image(BASE_URL + "/img/buttons/bandcamp-button-circle-whitecolor-512.png",
112+
512, 512, ResolutionLevel.MEDIUM));
108113
}
109114

110115
@Nonnull

extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/BandcampStreamExtractor.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22

33
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
44

5-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
5+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
6+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageUrl;
7+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.parseDate;
68
import static org.schabi.newpipe.extractor.utils.Utils.HTTPS;
9+
import static org.schabi.newpipe.extractor.utils.Utils.replaceHttpWithHttps;
710

811
import com.grack.nanojson.JsonObject;
912
import com.grack.nanojson.JsonParserException;
1013

1114
import org.jsoup.Jsoup;
1215
import org.jsoup.nodes.Document;
1316
import org.jsoup.nodes.Element;
17+
import org.schabi.newpipe.extractor.Image;
1418
import org.schabi.newpipe.extractor.MediaFormat;
1519
import org.schabi.newpipe.extractor.StreamingService;
1620
import org.schabi.newpipe.extractor.downloader.Downloader;
@@ -98,7 +102,7 @@ public String getUploaderUrl() throws ParsingException {
98102
@Nonnull
99103
@Override
100104
public String getUrl() throws ParsingException {
101-
return albumJson.getString("url").replace("http://", "https://");
105+
return replaceHttpWithHttps(albumJson.getString("url"));
102106
}
103107

104108
@Nonnull
@@ -116,26 +120,27 @@ public String getTextualUploadDate() {
116120
@Nullable
117121
@Override
118122
public DateWrapper getUploadDate() throws ParsingException {
119-
return BandcampExtractorHelper.parseDate(getTextualUploadDate());
123+
return parseDate(getTextualUploadDate());
120124
}
121125

122126
@Nonnull
123127
@Override
124-
public String getThumbnailUrl() throws ParsingException {
128+
public List<Image> getThumbnails() throws ParsingException {
125129
if (albumJson.isNull("art_id")) {
126-
return "";
130+
return List.of();
127131
}
128132

129-
return getImageUrl(albumJson.getLong("art_id"), true);
133+
return getImagesFromImageId(albumJson.getLong("art_id"), true);
130134
}
131135

132136
@Nonnull
133137
@Override
134-
public String getUploaderAvatarUrl() {
135-
return document.getElementsByClass("band-photo").stream()
138+
public List<Image> getUploaderAvatars() {
139+
return getImagesFromImageUrl(document.getElementsByClass("band-photo")
140+
.stream()
136141
.map(element -> element.attr("src"))
137142
.findFirst()
138-
.orElse("");
143+
.orElse(""));
139144
}
140145

141146
@Nonnull

0 commit comments

Comments
 (0)