summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2021-08-27 23:09:20 +0200
committerGitHub <noreply@github.com>2021-08-27 23:09:20 +0200
commit542832805c8874bcfe11402d11bf341e9524157d (patch)
tree324994a94878ca2f973fee1166e2146b462eb462
parentd85e754f31a69c382b91a0d03218fa8bc5d873e0 (diff)
parent29e17bb506a04f450e08dc80b34f16e59a533958 (diff)
downloadAntennaPod-542832805c8874bcfe11402d11bf341e9524157d.zip
Merge pull request #5358 from ByteHamster/duplicate-same-day
Allow duplicate items to have a different publication date
-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) {