Skip to content

Commit 4e6fb36

Browse files
committed
[PeerTube] Apply changes in Extractors and remove usages of default avatar picture
The default avatar picture was used when no profile picture was found, but it was removed and split in multiple images. Thumbnails' size is not known, as this data is not provided by the API.
1 parent 0a6011a commit 4e6fb36

4 files changed

Lines changed: 49 additions & 57 deletions

File tree

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

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.grack.nanojson.JsonObject;
55
import com.grack.nanojson.JsonParser;
66
import com.grack.nanojson.JsonParserException;
7+
import org.schabi.newpipe.extractor.Image;
78
import org.schabi.newpipe.extractor.StreamingService;
89
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
910
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
@@ -22,6 +23,9 @@
2223
import java.io.IOException;
2324
import java.util.List;
2425

26+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
27+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject;
28+
2529
public class PeertubeAccountExtractor extends ChannelExtractor {
2630
private JsonObject json;
2731
private final String baseUrl;
@@ -33,20 +37,16 @@ public PeertubeAccountExtractor(final StreamingService service,
3337
this.baseUrl = getBaseUrl();
3438
}
3539

40+
@Nonnull
3641
@Override
37-
public String getAvatarUrl() {
38-
String value;
39-
try {
40-
value = JsonUtils.getString(json, "avatar.path");
41-
} catch (final Exception e) {
42-
value = "/client/assets/images/default-avatar.png";
43-
}
44-
return baseUrl + value;
42+
public List<Image> getAvatars() {
43+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json);
4544
}
4645

46+
@Nonnull
4747
@Override
48-
public String getBannerUrl() {
49-
return null;
48+
public List<Image> getBanners() {
49+
return getBannersFromAccountOrVideoChannelObject(baseUrl, json);
5050
}
5151

5252
@Override
@@ -99,9 +99,10 @@ public String getParentChannelUrl() {
9999
return "";
100100
}
101101

102+
@Nonnull
102103
@Override
103-
public String getParentChannelAvatarUrl() {
104-
return "";
104+
public List<Image> getParentChannelAvatars() {
105+
return List.of();
105106
}
106107

107108
@Override

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

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.grack.nanojson.JsonObject;
44
import com.grack.nanojson.JsonParser;
55
import com.grack.nanojson.JsonParserException;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.StreamingService;
78
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
89
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
@@ -20,6 +21,9 @@
2021
import java.io.IOException;
2122
import java.util.List;
2223

24+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
25+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject;
26+
2327
public class PeertubeChannelExtractor extends ChannelExtractor {
2428
private JsonObject json;
2529
private final String baseUrl;
@@ -30,20 +34,16 @@ public PeertubeChannelExtractor(final StreamingService service,
3034
this.baseUrl = getBaseUrl();
3135
}
3236

37+
@Nonnull
3338
@Override
34-
public String getAvatarUrl() {
35-
String value;
36-
try {
37-
value = JsonUtils.getString(json, "avatar.path");
38-
} catch (final Exception e) {
39-
value = "/client/assets/images/default-avatar.png";
40-
}
41-
return baseUrl + value;
39+
public List<Image> getAvatars() {
40+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json);
4241
}
4342

43+
@Nonnull
4444
@Override
45-
public String getBannerUrl() {
46-
return null;
45+
public List<Image> getBanners() {
46+
return getBannersFromAccountOrVideoChannelObject(baseUrl, json);
4747
}
4848

4949
@Override
@@ -72,15 +72,11 @@ public String getParentChannelUrl() throws ParsingException {
7272
return JsonUtils.getString(json, "ownerAccount.url");
7373
}
7474

75+
@Nonnull
7576
@Override
76-
public String getParentChannelAvatarUrl() {
77-
String value;
78-
try {
79-
value = JsonUtils.getString(json, "ownerAccount.avatar.path");
80-
} catch (final Exception e) {
81-
value = "/client/assets/images/default-avatar.png";
82-
}
83-
return baseUrl + value;
77+
public List<Image> getParentChannelAvatars() {
78+
return getAvatarsFromOwnerAccountOrVideoChannelObject(
79+
baseUrl, json.getObject("ownerAccount"));
8480
}
8581

8682
@Override

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

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.grack.nanojson.JsonObject;
44
import com.grack.nanojson.JsonParser;
55
import com.grack.nanojson.JsonParserException;
6+
import org.schabi.newpipe.extractor.Image;
67
import org.schabi.newpipe.extractor.Page;
78
import org.schabi.newpipe.extractor.StreamingService;
89
import org.schabi.newpipe.extractor.downloader.Downloader;
@@ -19,11 +20,14 @@
1920

2021
import javax.annotation.Nonnull;
2122
import java.io.IOException;
23+
import java.util.List;
2224

2325
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.COUNT_KEY;
2426
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.ITEMS_PER_PAGE;
2527
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.START_KEY;
2628
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.collectItemsFrom;
29+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
30+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
2731
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
2832

2933
public class PeertubePlaylistExtractor extends PlaylistExtractor {
@@ -36,8 +40,8 @@ public PeertubePlaylistExtractor(final StreamingService service,
3640

3741
@Nonnull
3842
@Override
39-
public String getThumbnailUrl() throws ParsingException {
40-
return getBaseUrl() + playlistInfo.getString("thumbnailPath");
43+
public List<Image> getThumbnails() throws ParsingException {
44+
return getThumbnailsFromPlaylistOrVideoItem(getBaseUrl(), playlistInfo);
4145
}
4246

4347
@Override
@@ -50,10 +54,11 @@ public String getUploaderName() {
5054
return playlistInfo.getObject("ownerAccount").getString("displayName");
5155
}
5256

57+
@Nonnull
5358
@Override
54-
public String getUploaderAvatarUrl() throws ParsingException {
55-
return getBaseUrl()
56-
+ playlistInfo.getObject("ownerAccount").getObject("avatar").getString("path");
59+
public List<Image> getUploaderAvatars() throws ParsingException {
60+
return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(),
61+
playlistInfo.getObject("ownerAccount"));
5762
}
5863

5964
@Override
@@ -90,9 +95,9 @@ public String getSubChannelUrl() {
9095

9196
@Nonnull
9297
@Override
93-
public String getSubChannelAvatarUrl() throws ParsingException {
94-
return getBaseUrl()
95-
+ playlistInfo.getObject("videoChannel").getObject("avatar").getString("path");
98+
public List<Image> getSubChannelAvatars() throws ParsingException {
99+
return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(),
100+
playlistInfo.getObject("videoChannel"));
96101
}
97102

98103
@Nonnull

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

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

3+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
4+
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
35
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
46
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
57

68
import com.grack.nanojson.JsonArray;
79
import com.grack.nanojson.JsonObject;
810
import com.grack.nanojson.JsonParser;
911
import com.grack.nanojson.JsonParserException;
10-
12+
import org.schabi.newpipe.extractor.Image;
1113
import org.schabi.newpipe.extractor.MediaFormat;
1214
import org.schabi.newpipe.extractor.NewPipe;
1315
import org.schabi.newpipe.extractor.StreamingService;
@@ -87,8 +89,8 @@ public DateWrapper getUploadDate() throws ParsingException {
8789

8890
@Nonnull
8991
@Override
90-
public String getThumbnailUrl() throws ParsingException {
91-
return baseUrl + JsonUtils.getString(json, "previewPath");
92+
public List<Image> getThumbnails() throws ParsingException {
93+
return getThumbnailsFromPlaylistOrVideoItem(baseUrl, json);
9294
}
9395

9496
@Nonnull
@@ -176,14 +178,8 @@ public String getUploaderName() throws ParsingException {
176178

177179
@Nonnull
178180
@Override
179-
public String getUploaderAvatarUrl() {
180-
String value;
181-
try {
182-
value = JsonUtils.getString(json, "account.avatar.path");
183-
} catch (final Exception e) {
184-
value = "/client/assets/images/default-avatar.png";
185-
}
186-
return baseUrl + value;
181+
public List<Image> getUploaderAvatars() {
182+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("account"));
187183
}
188184

189185
@Nonnull
@@ -200,14 +196,8 @@ public String getSubChannelName() throws ParsingException {
200196

201197
@Nonnull
202198
@Override
203-
public String getSubChannelAvatarUrl() {
204-
String value;
205-
try {
206-
value = JsonUtils.getString(json, "channel.avatar.path");
207-
} catch (final Exception e) {
208-
value = "/client/assets/images/default-avatar.png";
209-
}
210-
return baseUrl + value;
199+
public List<Image> getSubChannelAvatars() {
200+
return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("channel"));
211201
}
212202

213203
@Nonnull

0 commit comments

Comments
 (0)