Skip to content

Commit 8997187

Browse files
Address code review comments
1 parent 1a5ac2f commit 8997187

13 files changed

Lines changed: 48 additions & 54 deletions

extractor/src/main/java/org/schabi/newpipe/extractor/localization/DateWrapper.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.schabi.newpipe.extractor.localization;
22

3+
import org.schabi.newpipe.extractor.exceptions.ParsingException;
4+
35
import javax.annotation.Nonnull;
46
import java.io.Serializable;
57
import java.time.Instant;
68
import java.time.LocalDateTime;
79
import java.time.OffsetDateTime;
810
import java.time.ZoneId;
911
import java.time.ZoneOffset;
12+
import java.time.format.DateTimeParseException;
1013

1114
/**
1215
* A wrapper class that provides a field to describe if the date/time is precise or just an
@@ -78,4 +81,26 @@ public LocalDateTime getLocalDateTime(@Nonnull final ZoneId zoneId) {
7881
public boolean isApproximation() {
7982
return isApproximation;
8083
}
84+
85+
public static DateWrapper fromOffsetDateTime(final String date) throws ParsingException {
86+
if (date == null) {
87+
return null;
88+
}
89+
try {
90+
return new DateWrapper(OffsetDateTime.parse(date));
91+
} catch (final DateTimeParseException e) {
92+
throw new ParsingException("Could not parse date: \"" + date + "\"", e);
93+
}
94+
}
95+
96+
public static DateWrapper fromInstant(final String date) throws ParsingException {
97+
if (date == null) {
98+
return null;
99+
}
100+
try {
101+
return new DateWrapper(Instant.parse(date));
102+
} catch (final DateTimeParseException e) {
103+
throw new ParsingException("Could not parse date: \"" + date + "\"", e);
104+
}
105+
}
81106
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public String getTextualUploadDate() {
5555
@Nonnull
5656
@Override
5757
public DateWrapper getUploadDate() throws ParsingException {
58-
return ExtractorHelper.parseDateWrapper(getTextualUploadDate());
58+
return DateWrapper.fromOffsetDateTime(getTextualUploadDate());
5959
}
6060

6161
@Nonnull

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,8 @@ public String getTextualUploadDate() {
6565
@Nullable
6666
@Override
6767
public DateWrapper getUploadDate() throws ParsingException {
68-
final String date = getTextualUploadDate();
6968
// if null, event is in the future...
70-
return date == null ? null : ExtractorHelper.parseDateWrapper(date);
69+
return DateWrapper.fromOffsetDateTime(getTextualUploadDate());
7170
}
7271

7372
@Override

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

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.schabi.newpipe.extractor.Page;
1111
import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException;
1212
import org.schabi.newpipe.extractor.exceptions.ParsingException;
13-
import org.schabi.newpipe.extractor.localization.DateWrapper;
1413
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeChannelInfoItemExtractor;
1514
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubePlaylistInfoItemExtractor;
1615
import org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeSepiaStreamInfoItemExtractor;
@@ -19,8 +18,6 @@
1918
import org.schabi.newpipe.extractor.utils.Parser;
2019

2120
import javax.annotation.Nonnull;
22-
import java.time.Instant;
23-
import java.time.format.DateTimeParseException;
2421
import java.util.ArrayList;
2522
import java.util.Collections;
2623
import java.util.List;
@@ -47,15 +44,6 @@ public static void validate(final JsonObject json) throws ContentNotAvailableExc
4744
}
4845
}
4946

50-
public static DateWrapper parseDateWrapper(final String textualUploadDate)
51-
throws ParsingException {
52-
try {
53-
return new DateWrapper(Instant.parse(textualUploadDate));
54-
} catch (final DateTimeParseException e) {
55-
throw new ParsingException("Could not parse date: \"" + textualUploadDate + "\"", e);
56-
}
57-
}
58-
5947
public static Page getNextPage(final String prevPageUrl, final long total) {
6048
final String prevStart;
6149
try {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import static org.schabi.newpipe.extractor.services.peertube.extractors.PeertubeCommentsExtractor.CHILDREN;
2525
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
26-
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateWrapper;
2726

2827
public class PeertubeCommentsInfoItemExtractor implements CommentsInfoItemExtractor {
2928
@Nonnull
@@ -73,7 +72,7 @@ public String getTextualUploadDate() throws ParsingException {
7372

7473
@Override
7574
public DateWrapper getUploadDate() throws ParsingException {
76-
return parseDateWrapper(getTextualUploadDate());
75+
return DateWrapper.fromInstant(getTextualUploadDate());
7776
}
7877

7978
@Nonnull

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
44
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
5-
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateWrapper;
65
import static org.schabi.newpipe.extractor.stream.AudioStream.UNKNOWN_BITRATE;
76
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
87

@@ -80,8 +79,7 @@ public String getTextualUploadDate() throws ParsingException {
8079

8180
@Override
8281
public DateWrapper getUploadDate() throws ParsingException {
83-
final String textualUploadDate = getTextualUploadDate();
84-
return textualUploadDate == null ? null : parseDateWrapper(textualUploadDate);
82+
return DateWrapper.fromInstant(getTextualUploadDate());
8583
}
8684

8785
@Nonnull

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getAvatarsFromOwnerAccountOrVideoChannelObject;
1616
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.getThumbnailsFromPlaylistOrVideoItem;
17-
import static org.schabi.newpipe.extractor.services.peertube.PeertubeParsingHelper.parseDateWrapper;
1817

1918
public class PeertubeStreamInfoItemExtractor implements StreamInfoItemExtractor {
2019

@@ -85,8 +84,7 @@ public String getTextualUploadDate() throws ParsingException {
8584

8685
@Override
8786
public DateWrapper getUploadDate() throws ParsingException {
88-
final String textualUploadDate = getTextualUploadDate();
89-
return textualUploadDate == null ? null : parseDateWrapper(textualUploadDate);
87+
return DateWrapper.fromInstant(getTextualUploadDate());
9088
}
9189

9290
@Override

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
import java.io.IOException;
4141
import java.net.MalformedURLException;
4242
import java.net.URL;
43-
import java.time.Instant;
43+
import java.time.OffsetDateTime;
44+
import java.time.format.DateTimeFormatter;
4445
import java.time.format.DateTimeParseException;
4546
import java.util.Collections;
4647
import java.util.List;
@@ -134,15 +135,17 @@ public static synchronized String clientId() throws ExtractionException, IOExcep
134135
}
135136

136137
@Nullable
137-
public static DateWrapper parseDateFrom(@Nullable final String uploadDate)
138-
throws ParsingException {
139-
if (uploadDate == null) {
140-
return null;
141-
}
138+
public static DateWrapper parseDate(final String uploadDate) throws ParsingException {
142139
try {
143-
return new DateWrapper(Instant.parse(uploadDate));
140+
return DateWrapper.fromInstant(uploadDate);
144141
} catch (final DateTimeParseException e) {
145-
throw new ParsingException("Could not parse date: \"" + uploadDate + "\"", e);
142+
try {
143+
return new DateWrapper(OffsetDateTime.parse(uploadDate,
144+
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss +0000")));
145+
} catch (final DateTimeParseException e1) {
146+
e1.addSuppressed(e);
147+
throw new ParsingException("Could not parse date: \"" + uploadDate + "\"", e1);
148+
}
146149
}
147150
}
148151

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.util.Objects;
1414

1515
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
16-
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDateFrom;
16+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDate;
1717

1818
public class SoundcloudCommentsInfoItemExtractor implements CommentsInfoItemExtractor {
1919
private final JsonObject json;
@@ -69,7 +69,7 @@ public String getTextualUploadDate() {
6969
@Nullable
7070
@Override
7171
public DateWrapper getUploadDate() throws ParsingException {
72-
return parseDateFrom(getTextualUploadDate());
72+
return parseDate(getTextualUploadDate());
7373
}
7474

7575
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromArtworkOrAvatarUrl;
66
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAllImagesFromTrackObject;
77
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.getAvatarUrl;
8-
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDateFrom;
8+
import static org.schabi.newpipe.extractor.services.soundcloud.SoundcloudParsingHelper.parseDate;
99
import static org.schabi.newpipe.extractor.stream.Stream.ID_UNKNOWN;
1010
import static org.schabi.newpipe.extractor.utils.Utils.isNullOrEmpty;
1111

@@ -97,7 +97,7 @@ public String getTextualUploadDate() {
9797
@Nullable
9898
@Override
9999
public DateWrapper getUploadDate() throws ParsingException {
100-
return parseDateFrom(getTextualUploadDate());
100+
return parseDate(getTextualUploadDate());
101101
}
102102

103103
@Nonnull

0 commit comments

Comments
 (0)