summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-08-27 22:56:38 +0200
committerByteHamster <info@bytehamster.com>2021-08-27 22:56:57 +0200
commit29e17bb506a04f450e08dc80b34f16e59a533958 (patch)
treeefe26ad055a6570d8c0a2fa9ea43b484e31037fd /core/src/main/java
parent85c8a419acb385cdf249662866715965de219c93 (diff)
downloadAntennaPod-29e17bb506a04f450e08dc80b34f16e59a533958.zip
Allow duplicate items to have a different publication date
Diffstat (limited to 'core/src/main/java')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java17
1 files changed, 12 insertions, 5 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index 06f7f9657..52966c3f6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -354,16 +354,23 @@ public final class DBTasks {
&& TextUtils.equals(item.getMedia().getStreamUrl(), searchItem.getMedia().getStreamUrl())) {
Log.d(TAG, "Removing duplicate episode stream url " + item.getMedia().getStreamUrl());
isDuplicate = true;
- } else if (TextUtils.equals(item.getTitle(), searchItem.getTitle())
- && item.getPubDate().equals(searchItem.getPubDate())) {
- Log.d(TAG, "Removing duplicate episode title + pubDate " + item.getTitle() + " " + item.getPubDate());
- isDuplicate = true;
+ } else if (TextUtils.equals(item.getTitle(), searchItem.getTitle())) {
+ Log.d(TAG, "Found same title. Checking pubdate: " + item.getTitle());
+ long dateOriginal = item.getPubDate().getTime();
+ long dateNew = searchItem.getPubDate() == null ? 0 : searchItem.getPubDate().getTime();
+ if (Math.abs(dateOriginal - dateNew) < 24L * 3600L * 1000L) { // Same day
+ Log.d(TAG, "Same pubDate. Removing. " + item.getPubDate() + ", " + searchItem.getPubDate());
+ isDuplicate = true;
+ }
}
if (isDuplicate) {
DBWriter.addDownloadStatus(new DownloadStatus(feed,
searchItem.getTitle(), DownloadError.ERROR_PARSER_EXCEPTION, false,
"The podcast host changed the ID of an existing episode instead of just "
- + "updating the episode itself. AntennaPod attempted to repair it.", false));
+ + "updating the episode itself. AntennaPod attempted to repair it.\n\n"
+ + "{" + item.getTitle() + "} with ID " + item.getItemIdentifier()
+ + " seems to be the same as {" + searchItem.getTitle() + "} with ID "
+ + searchItem.getItemIdentifier(), false));
item.setItemIdentifier(searchItem.getItemIdentifier());
if (item.isPlayed() && item.getMedia() != null) {