From 164e21b5af176bda50036e81604e89e5ff0856d9 Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Thu, 17 Mar 2022 14:10:28 +0100 Subject: [PATCH] Fixed ``MediaCCCRecentKiosk`` Ignore faulty data/items (with duration <= 0) --- .../extractors/MediaCCCRecentKiosk.java | 18 +++++++++++++----- .../MediaCCCRecentKioskExtractor.java | 6 +++--- .../MediaCCCRecentListExtractorTest.java | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKiosk.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKiosk.java index 1e6bd774f..9c42f7fb5 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKiosk.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKiosk.java @@ -16,7 +16,9 @@ import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector; import javax.annotation.Nonnull; import java.io.IOException; +import java.time.OffsetDateTime; import java.util.Comparator; +import java.util.function.Function; public class MediaCCCRecentKiosk extends KioskExtractor { @@ -51,11 +53,17 @@ public class MediaCCCRecentKiosk extends KioskExtractor { streamInfoItem -> streamInfoItem.getUploadDate().offsetDateTime()); comparator = comparator.reversed(); - final StreamInfoItemsCollector collector - = new StreamInfoItemsCollector(getServiceId(), comparator); - for (int i = 0; i < events.size(); i++) { - collector.commit(new MediaCCCRecentKioskExtractor(events.getObject(i))); - } + final StreamInfoItemsCollector collector = + new StreamInfoItemsCollector(getServiceId(), comparator); + + events.stream() + .filter(JsonObject.class::isInstance) + .map(JsonObject.class::cast) + .map(MediaCCCRecentKioskExtractor::new) + // #813 / voc/voctoweb#609 -> returns faulty data -> filter it out + .filter(extractor -> extractor.getDuration() > 0) + .forEach(collector::commit); + return new InfoItemsPage<>(collector, null); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKioskExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKioskExtractor.java index dd2aced2e..363e91b62 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKioskExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCRecentKioskExtractor.java @@ -45,9 +45,9 @@ public class MediaCCCRecentKioskExtractor implements StreamInfoItemExtractor { } @Override - public long getDuration() throws ParsingException { - // duration and length have the same value, see - // https://github.com/voc/voctoweb/blob/master/app/views/public/shared/_event.json.jbuilder + public long getDuration() { + // duration and length have the same value + // see https://github.com/voc/voctoweb/blob/master/app/views/public/shared/_event.json.jbuilder return event.getInt("duration"); } diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCRecentListExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCRecentListExtractorTest.java index 6d2f903a2..0493d3ff6 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCRecentListExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCRecentListExtractorTest.java @@ -30,7 +30,7 @@ public class MediaCCCRecentListExtractorTest { @Test void testStreamList() throws Exception { final List items = extractor.getInitialPage().getItems(); - assertEquals(100, items.size()); + assertFalse(items.isEmpty(), "No items returned"); assertAll(items.stream().flatMap(this::getAllConditionsForItem)); }