[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.
This commit is contained in:
AudricV 2022-07-29 12:52:13 +02:00
parent 0a6011a50e
commit 4e6fb368bc
No known key found for this signature in database
GPG Key ID: DA92EC7905614198
4 changed files with 49 additions and 57 deletions

View File

@ -4,6 +4,7 @@ import com.grack.nanojson.JsonArray;
import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonParserException;
import org.schabi.newpipe.extractor.Image;
import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.channel.ChannelExtractor;
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs; import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
@ -22,6 +23,9 @@ import javax.annotation.Nullable;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject;
public class PeertubeAccountExtractor extends ChannelExtractor { public class PeertubeAccountExtractor extends ChannelExtractor {
private JsonObject json; private JsonObject json;
private final String baseUrl; private final String baseUrl;
@ -33,20 +37,16 @@ public class PeertubeAccountExtractor extends ChannelExtractor {
this.baseUrl = getBaseUrl(); this.baseUrl = getBaseUrl();
} }
@Nonnull
@Override @Override
public String getAvatarUrl() { public List<Image> getAvatars() {
String value; return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json);
try {
value = JsonUtils.getString(json, "avatar.path");
} catch (final Exception e) {
value = "/client/assets/images/default-avatar.png";
}
return baseUrl + value;
} }
@Nonnull
@Override @Override
public String getBannerUrl() { public List<Image> getBanners() {
return null; return getBannersFromAccountOrVideoChannelObject(baseUrl, json);
} }
@Override @Override
@ -99,9 +99,10 @@ public class PeertubeAccountExtractor extends ChannelExtractor {
return ""; return "";
} }
@Nonnull
@Override @Override
public String getParentChannelAvatarUrl() { public List<Image> getParentChannelAvatars() {
return ""; return List.of();
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package org.schabi.newpipe.extractor.services.peertube.extractors;
import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonParserException;
import org.schabi.newpipe.extractor.Image;
import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.channel.ChannelExtractor;
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs; import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
@ -20,6 +21,9 @@ import javax.annotation.Nullable;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getBannersFromAccountOrVideoChannelObject;
public class PeertubeChannelExtractor extends ChannelExtractor { public class PeertubeChannelExtractor extends ChannelExtractor {
private JsonObject json; private JsonObject json;
private final String baseUrl; private final String baseUrl;
@ -30,20 +34,16 @@ public class PeertubeChannelExtractor extends ChannelExtractor {
this.baseUrl = getBaseUrl(); this.baseUrl = getBaseUrl();
} }
@Nonnull
@Override @Override
public String getAvatarUrl() { public List<Image> getAvatars() {
String value; return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json);
try {
value = JsonUtils.getString(json, "avatar.path");
} catch (final Exception e) {
value = "/client/assets/images/default-avatar.png";
}
return baseUrl + value;
} }
@Nonnull
@Override @Override
public String getBannerUrl() { public List<Image> getBanners() {
return null; return getBannersFromAccountOrVideoChannelObject(baseUrl, json);
} }
@Override @Override
@ -72,15 +72,11 @@ public class PeertubeChannelExtractor extends ChannelExtractor {
return JsonUtils.getString(json, "ownerAccount.url"); return JsonUtils.getString(json, "ownerAccount.url");
} }
@Nonnull
@Override @Override
public String getParentChannelAvatarUrl() { public List<Image> getParentChannelAvatars() {
String value; return getAvatarsFromOwnerAccountOrVideoChannelObject(
try { baseUrl, json.getObject("ownerAccount"));
value = JsonUtils.getString(json, "ownerAccount.avatar.path");
} catch (final Exception e) {
value = "/client/assets/images/default-avatar.png";
}
return baseUrl + value;
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package org.schabi.newpipe.extractor.services.peertube.extractors;
import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonParserException;
import org.schabi.newpipe.extractor.Image;
import org.schabi.newpipe.extractor.Page; import org.schabi.newpipe.extractor.Page;
import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.downloader.Downloader; import org.schabi.newpipe.extractor.downloader.Downloader;
@ -19,11 +20,14 @@ import org.schabi.newpipe.extractor.utils.Utils;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.COUNT_KEY; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.COUNT_KEY;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.ITEMS_PER_PAGE; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.ITEMS_PER_PAGE;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.START_KEY; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.START_KEY;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.collectItemsFrom; import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.collectItemsFrom;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
public class PeertubePlaylistExtractor extends PlaylistExtractor { public class PeertubePlaylistExtractor extends PlaylistExtractor {
@ -36,8 +40,8 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor {
@Nonnull @Nonnull
@Override @Override
public String getThumbnailUrl() throws ParsingException { public List<Image> getThumbnails() throws ParsingException {
return getBaseUrl() + playlistInfo.getString("thumbnailPath"); return getThumbnailsFromPlaylistOrVideoItem(getBaseUrl(), playlistInfo);
} }
@Override @Override
@ -50,10 +54,11 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor {
return playlistInfo.getObject("ownerAccount").getString("displayName"); return playlistInfo.getObject("ownerAccount").getString("displayName");
} }
@Nonnull
@Override @Override
public String getUploaderAvatarUrl() throws ParsingException { public List<Image> getUploaderAvatars() throws ParsingException {
return getBaseUrl() return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(),
+ playlistInfo.getObject("ownerAccount").getObject("avatar").getString("path"); playlistInfo.getObject("ownerAccount"));
} }
@Override @Override
@ -90,9 +95,9 @@ public class PeertubePlaylistExtractor extends PlaylistExtractor {
@Nonnull @Nonnull
@Override @Override
public String getSubChannelAvatarUrl() throws ParsingException { public List<Image> getSubChannelAvatars() throws ParsingException {
return getBaseUrl() return getAvatarsFromOwnerAccountOrVideoChannelObject(getBaseUrl(),
+ playlistInfo.getObject("videoChannel").getObject("avatar").getString("path"); playlistInfo.getObject("videoChannel"));
} }
@Nonnull @Nonnull

View File

@ -1,5 +1,7 @@
package org.schabi.newpipe.extractor.services.peertube.extractors; package org.schabi.newpipe.extractor.services.peertube.extractors;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE; import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty; import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
@ -7,7 +9,7 @@ import com.grack.nanojson.JsonArray;
import com.grack.nanojson.JsonObject; import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser; import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException; import com.grack.nanojson.JsonParserException;
import org.schabi.newpipe.extractor.Image;
import org.schabi.newpipe.extractor.MediaFormat; import org.schabi.newpipe.extractor.MediaFormat;
import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.StreamingService;
@ -87,8 +89,8 @@ public class PeertubeStreamExtractor extends StreamExtractor {
@Nonnull @Nonnull
@Override @Override
public String getThumbnailUrl() throws ParsingException { public List<Image> getThumbnails() throws ParsingException {
return baseUrl + JsonUtils.getString(json, "previewPath"); return getThumbnailsFromPlaylistOrVideoItem(baseUrl, json);
} }
@Nonnull @Nonnull
@ -176,14 +178,8 @@ public class PeertubeStreamExtractor extends StreamExtractor {
@Nonnull @Nonnull
@Override @Override
public String getUploaderAvatarUrl() { public List<Image> getUploaderAvatars() {
String value; return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("account"));
try {
value = JsonUtils.getString(json, "account.avatar.path");
} catch (final Exception e) {
value = "/client/assets/images/default-avatar.png";
}
return baseUrl + value;
} }
@Nonnull @Nonnull
@ -200,14 +196,8 @@ public class PeertubeStreamExtractor extends StreamExtractor {
@Nonnull @Nonnull
@Override @Override
public String getSubChannelAvatarUrl() { public List<Image> getSubChannelAvatars() {
String value; return getAvatarsFromOwnerAccountOrVideoChannelObject(baseUrl, json.getObject("channel"));
try {
value = JsonUtils.getString(json, "channel.avatar.path");
} catch (final Exception e) {
value = "/client/assets/images/default-avatar.png";
}
return baseUrl + value;
} }
@Nonnull @Nonnull