Skip to content

Commit 335875d

Browse files
Extract stream duration as a Java 8 Duration
1 parent 592f159 commit 335875d

21 files changed

+115
-112
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import javax.annotation.Nonnull;
1313
import javax.annotation.Nullable;
14-
14+
import java.time.Duration;
1515
import java.util.List;
1616

1717
import static org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampExtractorHelper.BASE_URL;
@@ -26,13 +26,14 @@ public BandcampRadioInfoItemExtractor(final JsonObject radioShow) {
2626
show = radioShow;
2727
}
2828

29+
@Nonnull
2930
@Override
30-
public long getDuration() {
31+
public Duration getDurationObject() {
3132
/* Duration is only present in the more detailed information that has to be queried
3233
separately. Therefore, over 300 queries would be needed every time the kiosk is opened if we
3334
were to display the real value. */
34-
//return query(show.getInt("id")).getLong("audio_duration");
35-
return 0;
35+
//return Duration.ofSeconds(query(show.getInt("id")).getLong("audio_duration"));
36+
return Duration.ZERO;
3637
}
3738

3839
@Nullable

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,4 @@ public String getUrl() throws ParsingException {
4343
public List<Image> getThumbnails() throws ParsingException {
4444
return getImagesFromImageId(discograph.getLong("art_id"), true);
4545
}
46-
47-
@Override
48-
public long getDuration() {
49-
return -1;
50-
}
5146
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import javax.annotation.Nonnull;
1313
import java.io.IOException;
14+
import java.time.Duration;
1415
import java.util.Collections;
1516
import java.util.List;
1617

@@ -46,9 +47,10 @@ public String getUrl() {
4647
return getUploaderUrl() + track.getString("title_link");
4748
}
4849

50+
@Nonnull
4951
@Override
50-
public long getDuration() {
51-
return track.getLong("duration");
52+
public Duration getDurationObject() {
53+
return Duration.ofSeconds(track.getLong("duration"));
5254
}
5355

5456
@Override

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,4 @@ public String getUrl() throws ParsingException {
4747
public List<Image> getThumbnails() throws ParsingException {
4848
return getImagesFromSearchResult(searchResult);
4949
}
50-
51-
@Override
52-
public long getDuration() {
53-
return -1;
54-
}
5550
}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,6 @@ public boolean isAd() throws ParsingException {
6060
return false;
6161
}
6262

63-
@Override
64-
public long getDuration() throws ParsingException {
65-
return 0;
66-
}
67-
6863
@Override
6964
public long getViewCount() throws ParsingException {
7065
return -1;

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.grack.nanojson.JsonObject;
55
import com.grack.nanojson.JsonParser;
66
import com.grack.nanojson.JsonParserException;
7-
87
import org.schabi.newpipe.extractor.Page;
98
import org.schabi.newpipe.extractor.StreamingService;
109
import org.schabi.newpipe.extractor.downloader.Downloader;
@@ -16,11 +15,10 @@
1615
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
1716
import org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector;
1817

18+
import javax.annotation.Nonnull;
1919
import java.io.IOException;
2020
import java.util.Comparator;
2121

22-
import javax.annotation.Nonnull;
23-
2422
public class MediaCCCRecentKiosk extends KioskExtractor<StreamInfoItem> {
2523

2624
public static final String KIOSK_ID = "recent";
@@ -64,7 +62,7 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws IOException, Extrac
6462
.map(JsonObject.class::cast)
6563
.map(MediaCCCRecentKioskExtractor::new)
6664
// #813 / voc/voctoweb#609 -> returns faulty data -> filter it out
67-
.filter(extractor -> extractor.getDuration() > 0)
65+
.filter(extractor -> !extractor.getDurationObject().isZero())
6866
.forEach(collector::commit);
6967

7068
return new InfoItemsPage<>(collector, null);

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package org.schabi.newpipe.extractor.services.media_ccc.extractors;
22

33
import com.grack.nanojson.JsonObject;
4-
54
import org.schabi.newpipe.extractor.Image;
65
import org.schabi.newpipe.extractor.exceptions.ParsingException;
76
import org.schabi.newpipe.extractor.localization.DateWrapper;
87
import org.schabi.newpipe.extractor.services.media_ccc.linkHandler.MediaCCCConferenceLinkHandlerFactory;
98
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
109
import org.schabi.newpipe.extractor.stream.StreamType;
1110

11+
import javax.annotation.Nonnull;
12+
import javax.annotation.Nullable;
13+
import java.time.Duration;
1214
import java.time.ZonedDateTime;
1315
import java.time.format.DateTimeFormatter;
1416
import java.util.List;
1517

16-
import javax.annotation.Nonnull;
17-
import javax.annotation.Nullable;
18-
1918
import static org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCParsingHelper.getImageListFromLogoImageUrl;
2019

2120
public class MediaCCCRecentKioskExtractor implements StreamInfoItemExtractor {
@@ -53,10 +52,11 @@ public boolean isAd() {
5352
}
5453

5554
@Override
56-
public long getDuration() {
55+
@Nonnull
56+
public Duration getDurationObject() {
5757
// duration and length have the same value, see
5858
// https://github.com/voc/voctoweb/blob/master/app/views/public/shared/_event.json.jbuilder
59-
return event.getInt("duration");
59+
return Duration.ofSeconds(event.getLong("duration"));
6060
}
6161

6262
@Override

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

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

1111
import javax.annotation.Nonnull;
1212
import javax.annotation.Nullable;
13+
import java.time.Duration;
1314
import java.util.List;
1415

1516
import static org.schabi.newpipe.extractor.services.media_ccc.extractors.MediaCCCParsingHelper.getThumbnailsFromStreamItem;
@@ -32,8 +33,9 @@ public boolean isAd() {
3233
}
3334

3435
@Override
35-
public long getDuration() {
36-
return event.getInt("length");
36+
@Nonnull
37+
public Duration getDurationObject() {
38+
return Duration.ofSeconds(event.getLong("length"));
3739
}
3840

3941
@Override

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.schabi.newpipe.extractor.utils.JsonUtils;
1111

1212
import javax.annotation.Nonnull;
13+
import java.time.Duration;
1314
import java.util.List;
1415

1516
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
@@ -100,8 +101,9 @@ public StreamType getStreamType() {
100101
}
101102

102103
@Override
103-
public long getDuration() {
104-
return item.getLong("duration");
104+
@Nonnull
105+
public Duration getDurationObject() {
106+
return Duration.ofSeconds(item.getLong("duration"));
105107
}
106108

107109
protected void setBaseUrl(final String baseUrl) {

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

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

33
import com.grack.nanojson.JsonObject;
4-
54
import org.schabi.newpipe.extractor.Image;
65
import org.schabi.newpipe.extractor.exceptions.ParsingException;
76
import org.schabi.newpipe.extractor.localization.DateWrapper;
87
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
98
import org.schabi.newpipe.extractor.stream.StreamType;
109

1110
import javax.annotation.Nonnull;
11+
import java.time.Duration;
1212
import java.util.List;
1313

1414
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
@@ -35,8 +35,9 @@ public String getName() {
3535
}
3636

3737
@Override
38-
public long getDuration() {
39-
return itemObject.getLong("duration") / 1000L;
38+
@Nonnull
39+
public Duration getDurationObject() {
40+
return Duration.ofMillis(itemObject.getLong("duration"));
4041
}
4142

4243
@Override

0 commit comments

Comments
 (0)