diff options
author | ByteHamster <info@bytehamster.com> | 2021-11-28 22:20:57 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2021-11-28 22:20:57 +0100 |
commit | 561141cfffaacc159660578a46cb393d7be5bc68 (patch) | |
tree | 8f26e238e7ebfe3e927f2449a724eff90025836b /core/src/main/java | |
parent | f0100e61ac633516082ea112363132c99f7c0b7a (diff) | |
parent | 19dfa08905e33943995edb1703b8ddc3bb9fc0ea (diff) | |
download | AntennaPod-561141cfffaacc159660578a46cb393d7be5bc68.zip |
Merge branch 'master' into develop
Diffstat (limited to 'core/src/main/java')
4 files changed, 18 insertions, 8 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index 949c0ff9d..d5e0140d0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -1791,7 +1791,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { private void addPlayableToQueue(Playable playable) { if (playable instanceof FeedMedia) { long itemId = ((FeedMedia) playable).getItem().getId(); - DBWriter.addQueueItem(this, false, false, itemId); + DBWriter.addQueueItem(this, false, true, itemId); } } 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 04722b916..2cb99559a 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 @@ -457,24 +457,30 @@ public final class DBTasks { for (int idx = 0; idx < newFeed.getItems().size(); idx++) { final FeedItem item = newFeed.getItems().get(idx); - if (item != searchFeedItemGuessDuplicate(newFeed.getItems(), item)) { + FeedItem possibleDuplicate = searchFeedItemGuessDuplicate(newFeed.getItems(), item); + if (!newFeed.isLocalFeed() && possibleDuplicate != null && item != possibleDuplicate) { // Canonical episode is the first one returned (usually oldest) DBWriter.addDownloadStatus(new DownloadStatus(savedFeed, item.getTitle(), DownloadError.ERROR_PARSER_EXCEPTION_DUPLICATE, false, "The podcast host appears to have added the same episode twice. " - + "AntennaPod attempted to repair it.", false)); + + "AntennaPod still refreshed the feed and attempted to repair it." + + "{" + possibleDuplicate.getTitle() + "} with ID " + + possibleDuplicate.getItemIdentifier() + + " seems to be the same as {" + item.getTitle() + "} with ID " + + item.getItemIdentifier(), false)); continue; } FeedItem oldItem = searchFeedItemByIdentifyingValue(savedFeed.getItems(), item); - if (oldItem == null) { + if (!newFeed.isLocalFeed() && oldItem == null) { oldItem = searchFeedItemGuessDuplicate(savedFeed.getItems(), item); if (oldItem != null) { Log.d(TAG, "Repaired duplicate: " + oldItem + ", " + item); DBWriter.addDownloadStatus(new DownloadStatus(savedFeed, item.getTitle(), DownloadError.ERROR_PARSER_EXCEPTION_DUPLICATE, false, "The podcast host changed the ID of an existing episode instead of just " - + "updating the episode itself. AntennaPod attempted to repair it.\n\n" + + "updating the episode itself. AntennaPod still refreshed the feed and " + + "attempted to repair it.\n\n" + "{" + oldItem.getTitle() + "} with ID " + oldItem.getItemIdentifier() + " seems to be the same as {" + item.getTitle() + "} with ID " + item.getItemIdentifier(), false)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java index f45cb2b66..6192edf7c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java @@ -218,7 +218,7 @@ public class DownloadRequester implements DownloadStateProvider { args.putInt(REQUEST_ARG_PAGE_NR, feed.getPageNr()); args.putBoolean(REQUEST_ARG_LOAD_ALL_PAGES, loadAllPages); - DownloadRequest request = createRequest(feed, null, new File(getFeedfilePath(), getFeedfileName(feed)), + DownloadRequest request = createRequest(feed, null, getDownloadPathForFeed(feed), true, username, password, lastModified, true, args, initiatedByUser ); if (request != null) { @@ -230,6 +230,10 @@ public class DownloadRequester implements DownloadStateProvider { } } + public File getDownloadPathForFeed(Feed feed) throws DownloadRequestException { + return new File(getFeedfilePath(), getFeedfileName(feed)); + } + public synchronized void downloadFeed(Context context, Feed feed) throws DownloadRequestException { downloadFeed(context, feed, false, false, true); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java index 1ac068307..a72d2034b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/URLChecker.java @@ -29,7 +29,7 @@ public final class URLChecker { private static final String TAG = "URLChecker"; private static final String AP_SUBSCRIBE = "antennapod-subscribe://"; - private static final String AP_SUBSCRIBE_DEEPLINK = "antennapod.org/deeplink/subscribe?url="; + private static final String AP_SUBSCRIBE_DEEPLINK = "antennapod.org/deeplink/subscribe"; /** * Checks if URL is valid and modifies it if necessary. @@ -57,7 +57,7 @@ public final class URLChecker { return prepareURL(url.substring(AP_SUBSCRIBE.length())); } else if (lowerCaseUrl.contains(AP_SUBSCRIBE_DEEPLINK)) { Log.d(TAG, "Removing " + AP_SUBSCRIBE_DEEPLINK); - String removedWebsite = url.substring(url.indexOf(AP_SUBSCRIBE_DEEPLINK) + AP_SUBSCRIBE_DEEPLINK.length()); + String removedWebsite = url.substring(url.indexOf("?url=") + "?url=".length()); try { return prepareURL(URLDecoder.decode(removedWebsite, "UTF-8")); } catch (UnsupportedEncodingException e) { |