diff options
Diffstat (limited to 'parser')
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(); } } } |