Skip to content

Commit 31da5be

Browse files
committed
[SoundCloud] Apply changes in Extractors
1 parent a3a74cd commit 31da5be

3 files changed

Lines changed: 53 additions & 42 deletions

File tree

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudChannelExtractor.java

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

33
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
4+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
5+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromVisualUrl;
46

57
import com.grack.nanojson.JsonObject;
68
import com.grack.nanojson.JsonParser;
79
import com.grack.nanojson.JsonParserException;
810

11+
import org.schabi.newpipe.extractor.Image;
912
import org.schabi.newpipe.extractor.StreamingService;
1013
import org.schabi.newpipe.extractor.channel.ChannelExtractor;
1114
import org.schabi.newpipe.extractor.channel.tabs.ChannelTabs;
@@ -59,15 +62,19 @@ public String getName() {
5962
return user.getString("username");
6063
}
6164

65+
@Nonnull
6266
@Override
63-
public String getAvatarUrl() {
64-
return user.getString("avatar_url");
67+
public List<Image> getAvatars() {
68+
return getAllImagesFromArtworkOrAvatarUrl(user.getString("avatar_url"));
6569
}
6670

71+
@Nonnull
6772
@Override
68-
public String getBannerUrl() {
69-
return user.getObject("visuals").getArray("visuals").getObject(0)
70-
.getString("visual_url");
73+
public List<Image> getBanners() {
74+
return getAllImagesFromVisualUrl(user.getObject("visuals")
75+
.getArray("visuals")
76+
.getObject(0)
77+
.getString("visual_url"));
7178
}
7279

7380
@Override
@@ -95,9 +102,10 @@ public String getParentChannelUrl() {
95102
return "";
96103
}
97104

105+
@Nonnull
98106
@Override
99-
public String getParentChannelAvatarUrl() {
100-
return "";
107+
public List<Image> getParentChannelAvatars() {
108+
return List.of();
101109
}
102110

103111
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudPlaylistExtractor.java

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

3+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
4+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
5+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAvatarUrl;
6+
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
7+
38
import com.grack.nanojson.JsonArray;
49
import com.grack.nanojson.JsonObject;
510
import com.grack.nanojson.JsonParser;
611
import com.grack.nanojson.JsonParserException;
12+
13+
import org.schabi.newpipe.extractor.Image;
714
import org.schabi.newpipe.extractor.NewPipe;
815
import org.schabi.newpipe.extractor.Page;
916
import org.schabi.newpipe.extractor.StreamingService;
@@ -24,9 +31,6 @@
2431
import java.util.List;
2532
import java.util.Objects;
2633

27-
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
28-
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
29-
3034
public class SoundcloudPlaylistExtractor extends PlaylistExtractor {
3135
private static final int STREAMS_PER_REQUESTED_PAGE = 15;
3236

@@ -68,30 +72,28 @@ public String getName() {
6872

6973
@Nonnull
7074
@Override
71-
public String getThumbnailUrl() {
72-
String artworkUrl = playlist.getString("artwork_url");
73-
74-
if (artworkUrl == null) {
75-
// If the thumbnail is null, traverse the items list and get a valid one,
76-
// if it also fails, return null
77-
try {
78-
final InfoItemsPage<StreamInfoItem> infoItems = getInitialPage();
79-
80-
for (final StreamInfoItem item : infoItems.getItems()) {
81-
artworkUrl = item.getThumbnailUrl();
82-
if (!isNullOrEmpty(artworkUrl)) {
83-
break;
84-
}
85-
}
86-
} catch (final Exception ignored) {
87-
}
75+
public List<Image> getThumbnails() {
76+
final String artworkUrl = playlist.getString("artwork_url");
77+
78+
if (!isNullOrEmpty(artworkUrl)) {
79+
return getAllImagesFromArtworkOrAvatarUrl(artworkUrl);
80+
}
8881

89-
if (artworkUrl == null) {
90-
return "";
82+
// If the thumbnail is null or empty, traverse the items list and get a valid one
83+
// If it also fails, return an empty list
84+
try {
85+
final InfoItemsPage<StreamInfoItem> infoItems = getInitialPage();
86+
87+
for (final StreamInfoItem item : infoItems.getItems()) {
88+
final List<Image> thumbnails = item.getThumbnails();
89+
if (!isNullOrEmpty(thumbnails)) {
90+
return thumbnails;
91+
}
9192
}
93+
} catch (final Exception ignored) {
9294
}
9395

94-
return artworkUrl.replace("large.jpg", "crop.jpg");
96+
return List.of();
9597
}
9698

9799
@Override
@@ -104,9 +106,10 @@ public String getUploaderName() {
104106
return SoundcloudParsingHelper.getUploaderName(playlist);
105107
}
106108

109+
@Nonnull
107110
@Override
108-
public String getUploaderAvatarUrl() {
109-
return SoundcloudParsingHelper.getAvatarUrl(playlist);
111+
public List<Image> getUploaderAvatars() {
112+
return getAllImagesFromArtworkOrAvatarUrl(getAvatarUrl(playlist));
110113
}
111114

112115
@Override

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java

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

33
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.SOUNDCLOUD_API_V2_URL;
44
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.clientId;
5+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
6+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromTrackObject;
7+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAvatarUrl;
8+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDateFrom;
59
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
610
import static org.schabi.newpipe.extractor.stream.Stream.ID_UNKNOWN;
711
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
@@ -11,6 +15,7 @@
1115
import com.grack.nanojson.JsonParser;
1216
import com.grack.nanojson.JsonParserException;
1317

18+
import org.schabi.newpipe.extractor.Image;
1419
import org.schabi.newpipe.extractor.MediaFormat;
1520
import org.schabi.newpipe.extractor.NewPipe;
1621
import org.schabi.newpipe.extractor.StreamingService;
@@ -96,18 +101,13 @@ public String getTextualUploadDate() {
96101
@Nonnull
97102
@Override
98103
public DateWrapper getUploadDate() throws ParsingException {
99-
return new DateWrapper(SoundcloudParsingHelper.parseDateFrom(track.getString(
100-
"created_at")));
104+
return new DateWrapper(parseDateFrom(track.getString("created_at")));
101105
}
102106

103107
@Nonnull
104108
@Override
105-
public String getThumbnailUrl() {
106-
String artworkUrl = track.getString("artwork_url", "");
107-
if (artworkUrl.isEmpty()) {
108-
artworkUrl = track.getObject("user").getString("avatar_url", "");
109-
}
110-
return artworkUrl.replace("large.jpg", "crop.jpg");
109+
public List<Image> getThumbnails() throws ParsingException {
110+
return getAllImagesFromTrackObject(track);
111111
}
112112

113113
@Nonnull
@@ -155,8 +155,8 @@ public boolean isUploaderVerified() throws ParsingException {
155155

156156
@Nonnull
157157
@Override
158-
public String getUploaderAvatarUrl() {
159-
return SoundcloudParsingHelper.getAvatarUrl(track);
158+
public List<Image> getUploaderAvatars() {
159+
return getAllImagesFromArtworkOrAvatarUrl(getAvatarUrl(track));
160160
}
161161

162162
@Override

0 commit comments

Comments
 (0)