diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2021-08-27 23:09:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-27 23:09:20 +0200 |
commit | 542832805c8874bcfe11402d11bf341e9524157d (patch) | |
tree | 324994a94878ca2f973fee1166e2146b462eb462 | |
parent | d85e754f31a69c382b91a0d03218fa8bc5d873e0 (diff) | |
parent | 29e17bb506a04f450e08dc80b34f16e59a533958 (diff) | |
download | AntennaPod-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.java | 17 |
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) { |