Skip to content

Commit 36038f4

Browse files
Merge branch 'dev' into Refactor-Optional
# Conflicts: # extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelHelper.java # extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java # extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamInfoItemExtractor.java
2 parents ec5d200 + c21cd68 commit 36038f4

25 files changed

Lines changed: 109 additions & 211 deletions

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,7 @@ private JsonObject fetchReviewsData(final String trackId, final String token)
114114
}
115115

116116
private String getNextPageToken(final JsonArray reviews) throws ParsingException {
117-
return reviews.stream()
118-
.filter(JsonObject.class::isInstance)
119-
.map(JsonObject.class::cast)
117+
return reviews.streamAsJsonObjects()
120118
.map(review -> review.getString("token"))
121119
.reduce((a, b) -> b) // keep only the last element
122120
.orElseThrow(() -> new ParsingException("Could not get token"));

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ public List<String> suggestionList(final String query) throws IOException, Extra
4848
.done()
4949
.getBytes(StandardCharsets.UTF_8)).responseBody());
5050

51-
return fuzzyResults.getObject("auto").getArray("results").stream()
52-
.filter(JsonObject.class::isInstance)
53-
.map(JsonObject.class::cast)
51+
return fuzzyResults.getObject("auto").getArray("results")
52+
.streamAsJsonObjects()
5453
.map(jsonObject -> jsonObject.getString("name"))
5554
.distinct()
5655
.collect(Collectors.toList());

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCChannelTabExtractor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ public ListExtractor.InfoItemsPage<InfoItem> getInitialPage() {
5555
new MultiInfoItemsCollector(getServiceId());
5656
Objects.requireNonNull(conferenceData) // will surely be != null after onFetchPage
5757
.getArray("events")
58-
.stream()
59-
.filter(JsonObject.class::isInstance)
60-
.map(JsonObject.class::cast)
58+
.streamAsJsonObjects()
6159
.forEach(event -> collector.commit(new MediaCCCStreamInfoItemExtractor(event)));
6260
return new ListExtractor.InfoItemsPage<>(collector, null);
6361
}

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,7 @@ public String getHlsUrl() {
145145

146146
@Nonnull
147147
private String getManifestOfDeliveryMethodWanted(@Nonnull final String deliveryMethod) {
148-
return room.getArray(STREAMS).stream()
149-
.filter(JsonObject.class::isInstance)
150-
.map(JsonObject.class::cast)
148+
return room.getArray(STREAMS).streamAsJsonObjects()
151149
.map(streamObject -> streamObject.getObject(URLS))
152150
.filter(urls -> urls.has(deliveryMethod))
153151
.map(urls -> urls.getObject(deliveryMethod).getString(URL, ""))
@@ -228,10 +226,7 @@ private static final class MediaCCCLiveStreamMapperDTO {
228226
private <T extends Stream> List<T> getStreams(
229227
@Nonnull final String streamType,
230228
@Nonnull final Function<MediaCCCLiveStreamMapperDTO, T> converter) {
231-
return room.getArray(STREAMS).stream()
232-
// Ensure that we use only process JsonObjects
233-
.filter(JsonObject.class::isInstance)
234-
.map(JsonObject.class::cast)
229+
return room.getArray(STREAMS).streamAsJsonObjects()
235230
// Only process streams of requested type
236231
.filter(streamJsonObj -> streamType.equals(streamJsonObj.getString("type")))
237232
// Flatmap Urls and ensure that we use only process JsonObjects

extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKiosk.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws IOException, Extrac
5757
.reversed();
5858
final var collector = new StreamInfoItemsCollector(getServiceId(), comparator);
5959

60-
events.stream()
61-
.filter(JsonObject.class::isInstance)
62-
.map(JsonObject.class::cast)
60+
events.streamAsJsonObjects()
6361
.map(MediaCCCRecentKioskExtractor::new)
6462
// #813 / voc/voctoweb#609 -> returns faulty data -> filter it out
6563
.filter(extractor -> extractor.getDuration() > 0)

extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/PeertubeParsingHelper.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,7 @@ private static List<Image> getImagesFromAvatarsOrBanners(
293293
private static List<Image> getImagesFromAvatarOrBannerArray(
294294
@Nonnull final String baseUrl,
295295
@Nonnull final JsonArray avatarsOrBannersArray) {
296-
return avatarsOrBannersArray.stream()
297-
.filter(JsonObject.class::isInstance)
298-
.map(JsonObject.class::cast)
296+
return avatarsOrBannersArray.streamAsJsonObjects()
299297
.filter(image -> !isNullOrEmpty(image.getString("path")))
300298
.map(image -> new Image(baseUrl + image.getString("path"), HEIGHT_UNKNOWN,
301299
image.getInt("width", WIDTH_UNKNOWN), ResolutionLevel.UNKNOWN))

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

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -480,10 +480,7 @@ private void loadSubtitles() {
480480

481481
private void extractLiveVideoStreams() throws ParsingException {
482482
try {
483-
final JsonArray streamingPlaylists = json.getArray(STREAMING_PLAYLISTS);
484-
streamingPlaylists.stream()
485-
.filter(JsonObject.class::isInstance)
486-
.map(JsonObject.class::cast)
483+
json.getArray(STREAMING_PLAYLISTS).streamAsJsonObjects()
487484
.map(stream -> new VideoStream.Builder()
488485
.setId(String.valueOf(stream.getInt("id", -1)))
489486
.setContent(stream.getString(PLAYLIST_URL, ""), true)
@@ -507,10 +504,10 @@ private void getStreams() throws ParsingException {
507504

508505
// HLS streams
509506
try {
510-
for (final JsonObject playlist : json.getArray(STREAMING_PLAYLISTS).stream()
511-
.filter(JsonObject.class::isInstance)
512-
.map(JsonObject.class::cast)
513-
.collect(Collectors.toList())) {
507+
final var playlistStream = json.getArray(STREAMING_PLAYLISTS).streamAsJsonObjects();
508+
final var it = playlistStream.iterator();
509+
while (it.hasNext()) {
510+
final var playlist = it.next();
514511
getStreamsFromArray(playlist.getArray(FILES), playlist.getString(PLAYLIST_URL));
515512
}
516513
} catch (final Exception e) {
@@ -530,11 +527,10 @@ private void getStreamsFromArray(@Nonnull final JsonArray streams,
530527
*/
531528
final boolean isInstanceUsingRandomUuidsForHlsStreams = !isNullOrEmpty(playlistUrl)
532529
&& playlistUrl.endsWith("-master.m3u8");
533-
534-
for (final JsonObject stream : streams.stream()
535-
.filter(JsonObject.class::isInstance)
536-
.map(JsonObject.class::cast)
537-
.collect(Collectors.toList())) {
530+
final var streamOfStreams = streams.streamAsJsonObjects();
531+
final var it = streamOfStreams.iterator();
532+
while (it.hasNext()) {
533+
final var stream = it.next();
538534

539535
// Extract stream version of streams first
540536
final String url = JsonUtils.getString(stream,

extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudParsingHelper.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,7 @@ public static String getInfoItemsFromApi(final MultiInfoItemsCollector collector
383383
}
384384

385385
responseObject.getArray("collection")
386-
.stream()
387-
.filter(JsonObject.class::isInstance)
388-
.map(JsonObject.class::cast)
386+
.streamAsJsonObjects()
389387
.forEach(searchResult -> {
390388
final String kind = searchResult.getString("kind", "");
391389
switch (kind) {

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,7 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() {
140140
final List<String> ids = new ArrayList<>();
141141

142142
playlist.getArray("tracks")
143-
.stream()
144-
.filter(JsonObject.class::isInstance)
145-
.map(JsonObject.class::cast)
143+
.streamAsJsonObjects()
146144
.forEachOrdered(track -> {
147145
// i.e. if full info is available
148146
if (track.has("title")) {

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,7 @@ private String getTranscodingUrl(final String endpointUrl)
204204

205205
private void extractAudioStreams(@Nonnull final JsonArray transcodings,
206206
final List<AudioStream> audioStreams) {
207-
transcodings.stream()
208-
.filter(JsonObject.class::isInstance)
209-
.map(JsonObject.class::cast)
207+
transcodings.streamAsJsonObjects()
210208
.forEachOrdered(transcoding -> {
211209
final String url = transcoding.getString("url");
212210
if (isNullOrEmpty(url)) {

0 commit comments

Comments
 (0)