Allow duplicate items to have a different publication date

This commit is contained in:
ByteHamster 2021-08-27 22:56:38 +02:00
parent 85c8a419ac
commit 29e17bb506
1 changed files with 12 additions and 5 deletions

View File

@ -354,16 +354,23 @@ public final class DBTasks {
&& TextUtils.equals(item.getMedia().getStreamUrl(), searchItem.getMedia().getStreamUrl())) { && TextUtils.equals(item.getMedia().getStreamUrl(), searchItem.getMedia().getStreamUrl())) {
Log.d(TAG, "Removing duplicate episode stream url " + item.getMedia().getStreamUrl()); Log.d(TAG, "Removing duplicate episode stream url " + item.getMedia().getStreamUrl());
isDuplicate = true; isDuplicate = true;
} else if (TextUtils.equals(item.getTitle(), searchItem.getTitle()) } else if (TextUtils.equals(item.getTitle(), searchItem.getTitle())) {
&& item.getPubDate().equals(searchItem.getPubDate())) { Log.d(TAG, "Found same title. Checking pubdate: " + item.getTitle());
Log.d(TAG, "Removing duplicate episode title + pubDate " + item.getTitle() + " " + item.getPubDate()); 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; isDuplicate = true;
} }
}
if (isDuplicate) { if (isDuplicate) {
DBWriter.addDownloadStatus(new DownloadStatus(feed, DBWriter.addDownloadStatus(new DownloadStatus(feed,
searchItem.getTitle(), DownloadError.ERROR_PARSER_EXCEPTION, false, searchItem.getTitle(), DownloadError.ERROR_PARSER_EXCEPTION, false,
"The podcast host changed the ID of an existing episode instead of just " "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()); item.setItemIdentifier(searchItem.getItemIdentifier());
if (item.isPlayed() && item.getMedia() != null) { if (item.isPlayed() && item.getMedia() != null) {