Skip to content

Commit 0a6011a

Browse files
committed
[PeerTube] Apply changes in InfoItemExtractors
Also lower the visibility of attributes of channels and playlists InfoItems to private.
1 parent 6f83315 commit 0a6011a

4 files changed

Lines changed: 45 additions & 48 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeChannelInfoItemExtractor.java

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

33
import com.grack.nanojson.JsonObject;
4+
import org.schabi.newpipe.extractor.Image;
45
import org.schabi.newpipe.extractor.ListExtractor;
56
import org.schabi.newpipe.extractor.channel.ChannelInfoItemExtractor;
67
import org.schabi.newpipe.extractor.exceptions.ParsingException;
78

89
import javax.annotation.Nonnull;
9-
import java.util.Comparator;
10+
import java.util.List;
11+
12+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
1013

1114
public class PeertubeChannelInfoItemExtractor implements ChannelInfoItemExtractor {
1215

13-
final JsonObject item;
14-
final JsonObject uploader;
15-
final String baseUrl;
16+
private final JsonObject item;
17+
private final String baseUrl;
18+
1619
public PeertubeChannelInfoItemExtractor(@Nonnull final JsonObject item,
1720
@Nonnull final String baseUrl) {
1821
this.item = item;
19-
this.uploader = item.getObject("uploader");
2022
this.baseUrl = baseUrl;
2123
}
2224

@@ -30,14 +32,10 @@ public String getUrl() throws ParsingException {
3032
return item.getString("url");
3133
}
3234

35+
@Nonnull
3336
@Override
34-
public String getThumbnailUrl() throws ParsingException {
35-
return item.getArray("avatars").stream()
36-
.filter(JsonObject.class::isInstance)
37-
.map(JsonObject.class::cast)
38-
.max(Comparator.comparingInt(avatar -> avatar.getInt("width")))
39-
.map(avatar -> baseUrl + avatar.getString("path"))
40-
.orElse(null);
37+
public List<Image> getThumbnails() throws ParsingException {
38+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item);
4139
}
4240

4341
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeCommentsInfoItemExtractor.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,24 @@
66
import com.grack.nanojson.JsonWriter;
77
import org.jsoup.Jsoup;
88
import org.jsoup.nodes.Document;
9+
import org.schabi.newpipe.extractor.Image;
910
import org.schabi.newpipe.extractor.Page;
1011
import org.schabi.newpipe.extractor.ServiceList;
1112
import org.schabi.newpipe.extractor.comments.CommentsInfoItemExtractor;
1213
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1314
import org.schabi.newpipe.extractor.localization.DateWrapper;
14-
import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper;
1515
import org.schabi.newpipe.extractor.stream.Description;
1616
import org.schabi.newpipe.extractor.utils.JsonUtils;
1717

1818
import javax.annotation.Nonnull;
1919
import javax.annotation.Nullable;
2020
import java.nio.charset.StandardCharsets;
21+
import java.util.List;
2122
import java.util.Objects;
2223

2324
import static org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeCommentsExtractor.CHILDREN;
25+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
26+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateFrom;
2427

2528
public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtractor {
2629
@Nonnull
@@ -52,15 +55,10 @@ public String getUrl() throws ParsingException {
5255
return url + "/" + getCommentId();
5356
}
5457

58+
@Nonnull
5559
@Override
56-
public String getThumbnailUrl() {
57-
String value;
58-
try {
59-
value = JsonUtils.getString(item, "account.avatar.path");
60-
} catch (final Exception e) {
61-
value = "/client/assets/images/default-avatar.png";
62-
}
63-
return baseUrl + value;
60+
public List<Image> getThumbnails() {
61+
return getUploaderAvatars();
6462
}
6563

6664
@Override
@@ -76,7 +74,7 @@ public String getTextualUploadDate() throws ParsingException {
7674
@Override
7775
public DateWrapper getUploadDate() throws ParsingException {
7876
final String textualUploadDate = getTextualUploadDate();
79-
return new DateWrapper(PeertubeParsingHelper.parseDateFrom(textualUploadDate));
77+
return new DateWrapper(parseDateFrom(textualUploadDate));
8078
}
8179

8280
@Override
@@ -97,15 +95,10 @@ public String getCommentId() {
9795
return Objects.toString(item.getLong("id"), null);
9896
}
9997

98+
@Nonnull
10099
@Override
101-
public String getUploaderAvatarUrl() {
102-
String value;
103-
try {
104-
value = JsonUtils.getString(item, "account.avatar.path");
105-
} catch (final Exception e) {
106-
value = "/client/assets/images/default-avatar.png";
107-
}
108-
return baseUrl + value;
100+
public List<Image> getUploaderAvatars() {
101+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item.getObject("account"));
109102
}
110103

111104
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubePlaylistInfoItemExtractor.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@
22

33
import com.grack.nanojson.JsonObject;
44

5+
import org.schabi.newpipe.extractor.Image;
56
import org.schabi.newpipe.extractor.exceptions.ParsingException;
67
import org.schabi.newpipe.extractor.playlist.PlaylistInfoItemExtractor;
78
import org.schabi.newpipe.extractor.stream.Description;
89

910
import javax.annotation.Nonnull;
11+
import java.util.List;
1012

1113
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
14+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
1215

13-
public class PeertubePlaylistInfoItemExtractor implements PlaylistInfoItemExtractor {
16+
public class PeertubePlaylistInfoItemExtractor implements PlaylistInfoItemExtractor {
1417

15-
final JsonObject item;
16-
final JsonObject uploader;
17-
final String baseUrl;
18+
private final JsonObject item;
19+
private final JsonObject uploader;
20+
private final String baseUrl;
1821

1922
public PeertubePlaylistInfoItemExtractor(@Nonnull final JsonObject item,
2023
@Nonnull final String baseUrl) {
@@ -33,9 +36,10 @@ public String getUrl() throws ParsingException {
3336
return item.getString("url");
3437
}
3538

39+
@Nonnull
3640
@Override
37-
public String getThumbnailUrl() throws ParsingException {
38-
return baseUrl + item.getString("thumbnailPath");
41+
public List<Image> getThumbnails() throws ParsingException {
42+
return getThumbnailsFromPlaylistOrVideoItem(baseUrl, item);
3943
}
4044

4145
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamInfoItemExtractor.java

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

33
import com.grack.nanojson.JsonObject;
4+
import org.schabi.newpipe.extractor.Image;
45
import org.schabi.newpipe.extractor.ServiceList;
56
import org.schabi.newpipe.extractor.exceptions.ParsingException;
67
import org.schabi.newpipe.extractor.localization.DateWrapper;
7-
import org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper;
88
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
99
import org.schabi.newpipe.extractor.stream.StreamType;
1010
import org.schabi.newpipe.extractor.utils.JsonUtils;
1111

12-
import javax.annotation.Nullable;
12+
import javax.annotation.Nonnull;
13+
import java.util.List;
14+
15+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
16+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
17+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateFrom;
1318

1419
public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor {
1520

@@ -27,9 +32,10 @@ public String getUrl() throws ParsingException {
2732
return ServiceList.PeerTube.getStreamLHFactory().fromId(uuid, baseUrl).getUrl();
2833
}
2934

35+
@Nonnull
3036
@Override
31-
public String getThumbnailUrl() throws ParsingException {
32-
return baseUrl + JsonUtils.getString(item, "thumbnailPath");
37+
public List<Image> getThumbnails() throws ParsingException {
38+
return getThumbnailsFromPlaylistOrVideoItem(baseUrl, item);
3339
}
3440

3541
@Override
@@ -56,14 +62,10 @@ public String getUploaderUrl() throws ParsingException {
5662
.fromId("accounts/" + name + "@" + host, baseUrl).getUrl();
5763
}
5864

59-
@Nullable
65+
@Nonnull
6066
@Override
61-
public String getUploaderAvatarUrl() {
62-
final JsonObject account = item.getObject("account");
63-
if (account.has("avatar") && !account.isNull("avatar")) {
64-
return baseUrl + account.getObject("avatar").getString("path");
65-
}
66-
return null;
67+
public List<Image> getUploaderAvatars() {
68+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, item.getObject("account"));
6769
}
6870

6971
@Override
@@ -89,7 +91,7 @@ public DateWrapper getUploadDate() throws ParsingException {
8991
return null;
9092
}
9193

92-
return new DateWrapper(PeertubeParsingHelper.parseDateFrom(textualUploadDate));
94+
return new DateWrapper(parseDateFrom(textualUploadDate));
9395
}
9496

9597
@Override

0 commit comments

Comments
 (0)