From b1ef9f424fc5ec46e5fcf995cdbe57b682e5e3ac Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 26 May 2020 12:02:56 +0200 Subject: [PATCH] Fixed chapters of non-content uris --- .../playback/PlaybackServiceTaskManager.java | 6 +++--- .../antennapod/core/util/ChapterUtils.java | 20 +++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java index 5e7ee6532..e71c1dfa7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java @@ -311,9 +311,9 @@ public class PlaybackServiceTaskManager { if (media.getChapters() == null) { Completable.create(emitter -> { - media.loadChapterMarks(context); - emitter.onComplete(); - }) + media.loadChapterMarks(context); + emitter.onComplete(); + }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(() -> callback.onChapterLoaded(media)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java index e0f5e9c03..550c9f070 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.core.util; +import android.content.ContentResolver; import android.content.Context; import android.net.Uri; import androidx.annotation.NonNull; @@ -13,6 +14,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import java.util.Collections; import java.util.List; @@ -78,8 +80,13 @@ public class ChapterUtils { Log.d(TAG, "Reading id3 chapters from item " + p.getEpisodeTitle()); CountingInputStream in = null; try { - Uri uri = Uri.parse(p.getStreamUrl()); - in = new CountingInputStream(context.getContentResolver().openInputStream(uri)); + if (p.getStreamUrl().startsWith(ContentResolver.SCHEME_CONTENT)) { + Uri uri = Uri.parse(p.getStreamUrl()); + in = new CountingInputStream(context.getContentResolver().openInputStream(uri)); + } else { + URL url = new URL(p.getStreamUrl()); + in = new CountingInputStream(url.openStream()); + } List chapters = readChaptersFrom(in); if (!chapters.isEmpty()) { p.setChapters(chapters); @@ -147,8 +154,13 @@ public class ChapterUtils { } InputStream input = null; try { - Uri uri = Uri.parse(media.getStreamUrl()); - input = context.getContentResolver().openInputStream(uri); + if (media.getStreamUrl().startsWith(ContentResolver.SCHEME_CONTENT)) { + Uri uri = Uri.parse(media.getStreamUrl()); + input = context.getContentResolver().openInputStream(uri); + } else { + URL url = new URL(media.getStreamUrl()); + input = url.openStream(); + } if (input != null) { readOggChaptersFromInputStream(media, input); }