From e261514c5ba18a028ced8cf68c04c4f485409902 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 29 Jan 2023 12:12:08 +0100 Subject: Update feed url when server returns itunes:new-feed-url (#6291) --- .../src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java | 2 +- .../main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java | 4 +++- .../src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java | 1 + .../main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) (limited to 'parser/feed') 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 alternateFeedUrls; + public final String redirectUrl; - public FeedHandlerResult(Feed feed, Map alternateFeedUrls) { + public FeedHandlerResult(Feed feed, Map 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 alternateUrls; + public String redirectUrl = null; private final ArrayList 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(); } } } -- cgit v1.2.3