diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2023-01-29 12:12:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-29 12:12:08 +0100 |
commit | e261514c5ba18a028ced8cf68c04c4f485409902 (patch) | |
tree | 8302632dfddcdfc2ac83b130b06c47d20e03ea31 /parser/feed/src/main/java/de/danoeh/antennapod | |
parent | 73a6ff1f6003c776fb37bd8e7315045e69e710d2 (diff) | |
download | AntennaPod-e261514c5ba18a028ced8cf68c04c4f485409902.zip |
Update feed url when server returns itunes:new-feed-url (#6291)
Diffstat (limited to 'parser/feed/src/main/java/de/danoeh/antennapod')
4 files changed, 8 insertions, 2 deletions
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java index 6b364fa73..dd9cb836b 100644 --- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java +++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java @@ -31,6 +31,6 @@ public class FeedHandler { saxParser.parse(inputSource, handler); inputStreamReader.close(); - return new FeedHandlerResult(handler.state.feed, handler.state.alternateUrls); + return new FeedHandlerResult(handler.state.feed, handler.state.alternateUrls, handler.state.redirectUrl); } } diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java index 43b3387a0..6db3ca47f 100644 --- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java +++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java @@ -11,9 +11,11 @@ public class FeedHandlerResult { public final Feed feed; public final Map<String, String> alternateFeedUrls; + public final String redirectUrl; - public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls) { + public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls, String redirectUrl) { this.feed = feed; this.alternateFeedUrls = alternateFeedUrls; + this.redirectUrl = redirectUrl; } } diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java index 706a328e8..650931fc1 100644 --- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java +++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java @@ -26,6 +26,7 @@ public class HandlerState { * URL of the feed, the value is the title */ public final Map<String, String> alternateUrls; + public String redirectUrl = null; private final ArrayList<FeedItem> items; private FeedItem currentItem; private FeedFunding currentFunding; diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java index 9c57d4ef3..cb4bcb8a7 100644 --- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java +++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java @@ -23,6 +23,7 @@ public class Itunes extends Namespace { public static final String DURATION = "duration"; private static final String SUBTITLE = "subtitle"; private static final String SUMMARY = "summary"; + private static final String NEW_FEED_URL = "new-feed-url"; @Override public SyndElement handleElementStart(String localName, HandlerState state, @@ -76,6 +77,8 @@ public class Itunes extends Namespace { } else if (Rss20.CHANNEL.equals(state.getSecondTag().getName()) && state.getFeed() != null) { state.getFeed().setDescription(content); } + } else if (NEW_FEED_URL.equals(localName) && content.trim().startsWith("http")) { + state.redirectUrl = content.trim(); } } } |