Skip to content

Commit 7e01eaa

Browse files
committed
[Bandcamp] Apply changes in InfoItemExtractors
1 parent 4b80d73 commit 7e01eaa

10 files changed

Lines changed: 96 additions & 66 deletions

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
22

33
import com.grack.nanojson.JsonObject;
4+
5+
import org.schabi.newpipe.extractor.Image;
46
import org.schabi.newpipe.extractor.ListExtractor;
57
import org.schabi.newpipe.extractor.exceptions.ParsingException;
68
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
79

10+
import java.util.List;
11+
12+
import javax.annotation.Nonnull;
13+
814
public class BandcampAlbumInfoItemExtractor implements PlaylistInfoItemExtractor {
915
private final JsonObject albumInfoItem;
1016
private final String uploaderUrl;
@@ -28,9 +34,10 @@ public String getUrl() throws ParsingException {
2834
albumInfoItem.getString("item_type"));
2935
}
3036

37+
@Nonnull
3138
@Override
32-
public String getThumbnailUrl() throws ParsingException {
33-
return BandcampExtractorHelper.getImageUrl(albumInfoItem.getLong("art_id"), true);
39+
public List<Image> getThumbnails() throws ParsingException {
40+
return BandcampExtractorHelper.getImagesFromImageId(albumInfoItem.getLong("art_id"), true);
3441
}
3542

3643
@Override

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,15 @@
33
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
44

55
import org.jsoup.nodes.Element;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
78
import org.schabi.newpipe.extractor.exceptions.ParsingException;
89

10+
import javax.annotation.Nonnull;
11+
import java.util.List;
12+
13+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromSearchResult;
14+
915
public class BandcampChannelInfoItemExtractor implements ChannelInfoItemExtractor {
1016

1117
private final Element resultInfo;
@@ -26,9 +32,10 @@ public String getUrl() throws ParsingException {
2632
return resultInfo.getElementsByClass("itemurl").text();
2733
}
2834

35+
@Nonnull
2936
@Override
30-
public String getThumbnailUrl() throws ParsingException {
31-
return BandcampExtractorHelper.getThumbnailUrlFromSearchResult(searchResult);
37+
public List<Image> getThumbnails() throws ParsingException {
38+
return getImagesFromSearchResult(searchResult);
3239
}
3340

3441
@Override

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
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;
44

55
import com.grack.nanojson.JsonObject;
66

7+
import org.schabi.newpipe.extractor.Image;
78
import org.schabi.newpipe.extractor.comments.CommentsInfoItemExtractor;
89
import org.schabi.newpipe.extractor.exceptions.ParsingException;
910
import org.schabi.newpipe.extractor.stream.Description;
1011

12+
import javax.annotation.Nonnull;
13+
import java.util.List;
14+
1115
public class BandcampCommentsInfoItemExtractor implements CommentsInfoItemExtractor {
1216

1317
private final JsonObject review;
@@ -28,9 +32,10 @@ public String getUrl() {
2832
return url;
2933
}
3034

35+
@Nonnull
3136
@Override
32-
public String getThumbnailUrl() throws ParsingException {
33-
return getUploaderAvatarUrl();
37+
public List<Image> getThumbnails() throws ParsingException {
38+
return getUploaderAvatars();
3439
}
3540

3641
@Override
@@ -43,8 +48,9 @@ public String getUploaderName() throws ParsingException {
4348
return review.getString("name");
4449
}
4550

51+
@Nonnull
4652
@Override
47-
public String getUploaderAvatarUrl() {
48-
return getImageUrl(review.getLong("image_id"), false);
53+
public List<Image> getUploaderAvatars() {
54+
return getImagesFromImageId(review.getLong("image_id"), false);
4955
}
5056
}

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

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

33
import org.jsoup.nodes.Element;
4+
import org.schabi.newpipe.extractor.Image;
45
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
56

67
import javax.annotation.Nonnull;
8+
import java.util.List;
9+
10+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromSearchResult;
711

812
public class BandcampPlaylistInfoItemExtractor implements PlaylistInfoItemExtractor {
913
private final Element searchResult;
@@ -46,8 +50,9 @@ public String getUrl() {
4650
return resultInfo.getElementsByClass("itemurl").text();
4751
}
4852

53+
@Nonnull
4954
@Override
50-
public String getThumbnailUrl() {
51-
return BandcampExtractorHelper.getThumbnailUrlFromSearchResult(searchResult);
55+
public List<Image> getThumbnails() {
56+
return getImagesFromSearchResult(searchResult);
5257
}
5358
}

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
22

33
import com.grack.nanojson.JsonObject;
4+
import org.schabi.newpipe.extractor.Image;
45
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
6+
import org.schabi.newpipe.extractor.utils.Utils;
57

6-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
8+
import javax.annotation.Nonnull;
9+
import java.util.List;
10+
11+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
712

813
public class BandcampPlaylistInfoItemFeaturedExtractor implements PlaylistInfoItemExtractor {
914

@@ -40,12 +45,14 @@ public String getName() {
4045

4146
@Override
4247
public String getUrl() {
43-
return featuredStory.getString("item_url").replaceAll("http://", "https://");
48+
return Utils.replaceHttpWithHttps(featuredStory.getString("item_url"));
4449
}
4550

51+
@Nonnull
4652
@Override
47-
public String getThumbnailUrl() {
48-
return featuredStory.has("art_id") ? getImageUrl(featuredStory.getLong("art_id"), true)
49-
: getImageUrl(featuredStory.getLong("item_art_id"), true);
53+
public List<Image> getThumbnails() {
54+
return featuredStory.has("art_id")
55+
? getImagesFromImageId(featuredStory.getLong("art_id"), true)
56+
: getImagesFromImageId(featuredStory.getLong("item_art_id"), true);
5057
}
5158
}

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@
33
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
44

55
import com.grack.nanojson.JsonObject;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.exceptions.ParsingException;
78
import org.schabi.newpipe.extractor.localization.DateWrapper;
89
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
910
import org.schabi.newpipe.extractor.stream.StreamType;
1011

12+
import javax.annotation.Nonnull;
1113
import javax.annotation.Nullable;
1214

15+
import java.util.List;
16+
1317
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
14-
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImageUrl;
18+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
19+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.parseDate;
1520

1621
public class BandcampRadioInfoItemExtractor implements StreamInfoItemExtractor {
1722

@@ -39,7 +44,7 @@ public String getTextualUploadDate() {
3944
@Nullable
4045
@Override
4146
public DateWrapper getUploadDate() throws ParsingException {
42-
return BandcampExtractorHelper.parseDate(getTextualUploadDate());
47+
return parseDate(getTextualUploadDate());
4348
}
4449

4550
@Override
@@ -52,9 +57,10 @@ public String getUrl() {
5257
return BASE_URL + "/?show=" + show.getInt("id");
5358
}
5459

60+
@Nonnull
5561
@Override
56-
public String getThumbnailUrl() {
57-
return getImageUrl(show.getLong("image_id"), false);
62+
public List<Image> getThumbnails() {
63+
return getImagesFromImageId(show.getLong("image_id"), false);
5864
}
5965

6066
@Override
@@ -78,12 +84,6 @@ public String getUploaderUrl() {
7884
return "";
7985
}
8086

81-
@Nullable
82-
@Override
83-
public String getUploaderAvatarUrl() {
84-
return null;
85-
}
86-
8787
@Override
8888
public boolean isUploaderVerified() throws ParsingException {
8989
return false;

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@
33
package org.schabi.newpipe.extractor.services.bandcamp.extractors;
44

55
import org.jsoup.nodes.Element;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.exceptions.ParsingException;
78
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
89

910
import javax.annotation.Nonnull;
11+
import java.util.List;
12+
13+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageUrl;
1014

1115
/**
1216
* Extracts recommended albums from tracks' website
@@ -28,9 +32,10 @@ public String getUrl() throws ParsingException {
2832
return relatedAlbum.getElementsByClass("album-link").attr("abs:href");
2933
}
3034

35+
@Nonnull
3136
@Override
32-
public String getThumbnailUrl() throws ParsingException {
33-
return relatedAlbum.getElementsByClass("album-art").attr("src");
37+
public List<Image> getThumbnails() throws ParsingException {
38+
return getImagesFromImageUrl(relatedAlbum.getElementsByClass("album-art").attr("src"));
3439
}
3540

3641
@Override

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

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

33
import com.grack.nanojson.JsonObject;
4+
import org.schabi.newpipe.extractor.Image;
45
import org.schabi.newpipe.extractor.exceptions.ParsingException;
56
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper;
67

7-
import javax.annotation.Nullable;
8+
import javax.annotation.Nonnull;
9+
import java.util.List;
10+
11+
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.getImagesFromImageId;
812

913
public class BandcampDiscographStreamInfoItemExtractor extends BandcampStreamInfoItemExtractor {
1014

@@ -20,12 +24,6 @@ public String getUploaderName() {
2024
return discograph.getString("band_name");
2125
}
2226

23-
@Nullable
24-
@Override
25-
public String getUploaderAvatarUrl() {
26-
return null;
27-
}
28-
2927
@Override
3028
public String getName() {
3129
return discograph.getString("title");
@@ -40,11 +38,10 @@ public String getUrl() throws ParsingException {
4038
);
4139
}
4240

41+
@Nonnull
4342
@Override
44-
public String getThumbnailUrl() throws ParsingException {
45-
return BandcampExtractorHelper.getImageUrl(
46-
discograph.getLong("art_id"), true
47-
);
43+
public List<Image> getThumbnails() throws ParsingException {
44+
return getImagesFromImageId(discograph.getLong("art_id"), true);
4845
}
4946

5047
@Override

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

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,21 @@
33
package org.schabi.newpipe.extractor.services.bandcamp.extractors.streaminfoitem;
44

55
import com.grack.nanojson.JsonObject;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.StreamingService;
78
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
89
import org.schabi.newpipe.extractor.exceptions.ParsingException;
910
import org.schabi.newpipe.extractor.stream.StreamExtractor;
1011

11-
import javax.annotation.Nullable;
12+
import javax.annotation.Nonnull;
1213
import java.io.IOException;
13-
14+
import java.util.Collections;
15+
import java.util.List;
1416

1517
public class BandcampPlaylistStreamInfoItemExtractor extends BandcampStreamInfoItemExtractor {
1618

1719
private final JsonObject track;
18-
private String substituteCoverUrl;
20+
private List<Image> substituteCovers;
1921
private final StreamingService service;
2022

2123
public BandcampPlaylistStreamInfoItemExtractor(final JsonObject track,
@@ -24,13 +26,14 @@ public BandcampPlaylistStreamInfoItemExtractor(final JsonObject track,
2426
super(uploaderUrl);
2527
this.track = track;
2628
this.service = service;
29+
substituteCovers = Collections.emptyList();
2730
}
2831

2932
public BandcampPlaylistStreamInfoItemExtractor(final JsonObject track,
3033
final String uploaderUrl,
31-
final String substituteCoverUrl) {
34+
final List<Image> substituteCovers) {
3235
this(track, uploaderUrl, (StreamingService) null);
33-
this.substituteCoverUrl = substituteCoverUrl;
36+
this.substituteCovers = substituteCovers;
3437
}
3538

3639
@Override
@@ -56,28 +59,23 @@ public String getUploaderName() {
5659
return "";
5760
}
5861

59-
@Nullable
60-
@Override
61-
public String getUploaderAvatarUrl() {
62-
return null;
63-
}
64-
6562
/**
6663
* Each track can have its own cover art. Therefore, unless a substitute is provided,
6764
* the thumbnail is extracted using a stream extractor.
6865
*/
66+
@Nonnull
6967
@Override
70-
public String getThumbnailUrl() throws ParsingException {
71-
if (substituteCoverUrl != null) {
72-
return substituteCoverUrl;
73-
} else {
68+
public List<Image> getThumbnails() throws ParsingException {
69+
if (substituteCovers.isEmpty()) {
7470
try {
7571
final StreamExtractor extractor = service.getStreamExtractor(getUrl());
7672
extractor.fetchPage();
77-
return extractor.getThumbnailUrl();
73+
return extractor.getThumbnails();
7874
} catch (final ExtractionException | IOException e) {
79-
throw new ParsingException("could not download cover art location", e);
75+
throw new ParsingException("Could not download cover art location", e);
8076
}
8177
}
78+
79+
return substituteCovers;
8280
}
8381
}

0 commit comments

Comments
 (0)