Skip to content

Commit 0261e63

Browse files
Extract stream duration as a Java 8 Duration
1 parent 592f159 commit 0261e63

21 files changed

+94
-80
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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public InfoItemsPage<StreamInfoItem> getInitialPage() throws IOException, Extrac
6464
.map(JsonObject.class::cast)
6565
.map(MediaCCCRecentKioskExtractor::new)
6666
// #813 / voc/voctoweb#609 -> returns faulty data -> filter it out
67-
.filter(extractor -> extractor.getDuration() > 0)
67+
.filter(extractor -> !extractor.getDurationObject().isZero())
6868
.forEach(collector::commit);
6969

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

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.schabi.newpipe.extractor.stream.StreamInfoItemExtractor;
1010
import org.schabi.newpipe.extractor.stream.StreamType;
1111

12+
import java.time.Duration;
1213
import java.time.ZonedDateTime;
1314
import java.time.format.DateTimeFormatter;
1415
import java.util.List;
@@ -53,10 +54,11 @@ public boolean isAd() {
5354
}
5455

5556
@Override
56-
public long getDuration() {
57+
@Nonnull
58+
public Duration getDurationObject() {
5759
// duration and length have the same value, see
5860
// https://github.com/voc/voctoweb/blob/master/app/views/public/shared/_event.json.jbuilder
59-
return event.getInt("duration");
61+
return Duration.ofSeconds(event.getLong("duration"));
6062
}
6163

6264
@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 & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.schabi.newpipe.extractor.stream.StreamType;
1010

1111
import javax.annotation.Nonnull;
12+
import java.time.Duration;
1213
import java.util.List;
1314

1415
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
@@ -35,8 +36,9 @@ public String getName() {
3536
}
3637

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

4244
@Override

0 commit comments

Comments
 (0)