summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-05-06 21:31:02 +0200
committerByteHamster <info@bytehamster.com>2021-05-06 21:31:05 +0200
commit27d86cfb267f4e70b1075b837b46630f65735200 (patch)
tree703d4df7e757cb9d1fa145d16f39d1425b1139d1
parentd08a9c423ef7122dfbcd55d5f7bcedccc2aea21c (diff)
downloadAntennaPod-27d86cfb267f4e70b1075b837b46630f65735200.zip
Refuse to show future dates
Some shows start to specify dates from the future to appear on top of episode lists. If we find one of those episodes, just ignore that it is there. We then use the date when we first found the item.
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java16
4 files changed, 20 insertions, 4 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java
index 14286d850..0394b754a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java
@@ -29,7 +29,7 @@ public class NSDublinCore extends Namespace {
String second = state.getSecondTag().getName();
if (DATE.equals(top) && ITEM.equals(second)) {
String content = state.getContentBuf().toString();
- currentItem.setPubDate(DateUtils.parse(content));
+ currentItem.setPubDate(DateUtils.parseOrNullIfFuture(content));
}
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
index 87423b6b1..50c2dc118 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
@@ -124,7 +124,7 @@ public class NSRSS20 extends Namespace {
state.getCurrentItem().setLink(content);
}
} else if (PUBDATE.equals(top) && ITEM.equals(second) && state.getCurrentItem() != null) {
- state.getCurrentItem().setPubDate(DateUtils.parse(content));
+ state.getCurrentItem().setPubDate(DateUtils.parseOrNullIfFuture(content));
} else if (URL.equals(top) && IMAGE.equals(second) && CHANNEL.equals(third)) {
// prefer itunes:image
if (state.getFeed() != null && state.getFeed().getImageUrl() == null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
index 7c5ed2d30..6d459075a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
@@ -205,9 +205,9 @@ public class NSAtom extends Namespace {
state.getCurrentItem().setDescriptionIfLonger(textElement.getProcessedContent());
} else if (UPDATED.equals(top) && ENTRY.equals(second) && state.getCurrentItem() != null &&
state.getCurrentItem().getPubDate() == null) {
- state.getCurrentItem().setPubDate(DateUtils.parse(content));
+ state.getCurrentItem().setPubDate(DateUtils.parseOrNullIfFuture(content));
} else if (PUBLISHED.equals(top) && ENTRY.equals(second) && state.getCurrentItem() != null) {
- state.getCurrentItem().setPubDate(DateUtils.parse(content));
+ state.getCurrentItem().setPubDate(DateUtils.parseOrNullIfFuture(content));
} else if (IMAGE_LOGO.equals(top) && state.getFeed() != null && state.getFeed().getImageUrl() == null) {
state.getFeed().setImageUrl(content);
} else if (IMAGE_ICON.equals(top) && state.getFeed() != null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
index 196583bcd..a0b9fbef9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/DateUtils.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.core.util;
import android.content.Context;
import android.util.Log;
+import androidx.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
import java.text.DateFormat;
@@ -122,6 +123,21 @@ public class DateUtils {
return null;
}
+ /**
+ * Parses the date but if the date is in the future, returns null.
+ */
+ @Nullable
+ public static Date parseOrNullIfFuture(final String input) {
+ Date date = parse(input);
+ if (date == null) {
+ return null;
+ }
+ Date now = new Date();
+ if (date.after(now)) {
+ return null;
+ }
+ return date;
+ }
/**
* Takes a string of the form [HH:]MM:SS[.mmm] and converts it to