summaryrefslogtreecommitdiff
path: root/parser/feed/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'parser/feed/src/main/java')
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/PodcastIndexChapterParser.java31
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/PodcastIndex.java10
2 files changed, 39 insertions, 2 deletions
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/PodcastIndexChapterParser.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/PodcastIndexChapterParser.java
new file mode 100644
index 000000000..5dcc18b14
--- /dev/null
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/PodcastIndexChapterParser.java
@@ -0,0 +1,31 @@
+package de.danoeh.antennapod.parser.feed;
+
+import de.danoeh.antennapod.model.feed.Chapter;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PodcastIndexChapterParser {
+ public static List<Chapter> parse(String jsonStr) {
+ try {
+ List<Chapter> chapters = new ArrayList<>();
+ JSONObject obj = new JSONObject(jsonStr);
+ JSONArray objChapters = obj.getJSONArray("chapters");
+ for (int i = 0; i < objChapters.length(); i++) {
+ JSONObject jsonObject = objChapters.getJSONObject(i);
+ int startTime = jsonObject.optInt("startTime", 0);
+ String title = jsonObject.optString("title");
+ String link = jsonObject.optString("url");
+ String img = jsonObject.optString("img");
+ chapters.add(new Chapter(startTime * 1000L, title, link, img));
+ }
+ return chapters;
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/PodcastIndex.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/PodcastIndex.java
index 1d4a91192..1f543a5ae 100644
--- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/PodcastIndex.java
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/PodcastIndex.java
@@ -1,8 +1,8 @@
package de.danoeh.antennapod.parser.feed.namespace;
+import android.text.TextUtils;
import de.danoeh.antennapod.parser.feed.HandlerState;
import de.danoeh.antennapod.parser.feed.element.SyndElement;
-import org.jsoup.helper.StringUtil;
import org.xml.sax.Attributes;
import de.danoeh.antennapod.model.feed.FeedFunding;
@@ -13,6 +13,7 @@ public class PodcastIndex extends Namespace {
public static final String NSURI2 = "https://podcastindex.org/namespace/1.0";
private static final String URL = "url";
private static final String FUNDING = "funding";
+ private static final String CHAPTERS = "chapters";
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
@@ -22,6 +23,11 @@ public class PodcastIndex extends Namespace {
FeedFunding funding = new FeedFunding(href, "");
state.setCurrentFunding(funding);
state.getFeed().addPayment(state.getCurrentFunding());
+ } else if (CHAPTERS.equals(localName)) {
+ String href = attributes.getValue(URL);
+ if (!TextUtils.isEmpty(href)) {
+ state.getCurrentItem().setPodcastIndexChapterUrl(href);
+ }
}
return new SyndElement(localName, this);
}
@@ -32,7 +38,7 @@ public class PodcastIndex extends Namespace {
return;
}
String content = state.getContentBuf().toString();
- if (FUNDING.equals(localName) && state.getCurrentFunding() != null && !StringUtil.isBlank(content)) {
+ if (FUNDING.equals(localName) && state.getCurrentFunding() != null && !TextUtils.isEmpty(content)) {
state.getCurrentFunding().setContent(content);
}
}