From 3ed55ca3c95dc8ebab2d79d3352b9a418ce5624b Mon Sep 17 00:00:00 2001 From: Jannik Date: Thu, 26 Nov 2020 17:32:15 +0100 Subject: [PATCH] fix episodes without a streaming link make AoDParser crash --- .../java/org/mosad/teapod/parser/AoDParser.kt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt index 588e930..a283a68 100644 --- a/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt +++ b/app/src/main/java/org/mosad/teapod/parser/AoDParser.kt @@ -235,7 +235,6 @@ object AoDParser { //Log.i(javaClass.name, "New csrf token is $csrfToken") } - val pl = res.select("input.streamstarter_html5").first() val primary = pl.attr("data-playlist") val secondary = pl.attr("data-otherplaylist") @@ -291,7 +290,7 @@ object AoDParser { ) } } - Log.i(javaClass.name, "Loading secondary plalyist finished") + Log.i(javaClass.name, "Loading secondary playlist finished") // parse additional info from the media page res.select("table.vertical-table").select("tr").forEach { row -> @@ -310,15 +309,18 @@ object AoDParser { // parse additional information for tv shows if (media.type == MediaType.TVSHOW) { res.select("div.three-box-container > div.episodebox").forEach { episodebox -> - val episodeId = episodebox.select("div.flip-front").attr("id").substringAfter("-").toInt() - val episodeShortDesc = episodebox.select("p.episodebox-shorttext").text() - val episodeWatched = episodebox.select("div.episodebox-icons > div").hasClass("status-icon-orange") - val episodeWatchedCallback = episodebox.select("input.streamstarter_html5").eachAttr("data-playlist").first() + // make sure the episode has a streaming link + if (episodebox.select("input.streamstarter_html5").isNotEmpty()) { + val episodeId = episodebox.select("div.flip-front").attr("id").substringAfter("-").toInt() + val episodeShortDesc = episodebox.select("p.episodebox-shorttext").text() + val episodeWatched = episodebox.select("div.episodebox-icons > div").hasClass("status-icon-orange") + val episodeWatchedCallback = episodebox.select("input.streamstarter_html5").eachAttr("data-playlist").first() - media.episodes.firstOrNull { it.id == episodeId }?.apply { - shortDesc = episodeShortDesc - watched = episodeWatched - watchedCallback = episodeWatchedCallback + media.episodes.firstOrNull { it.id == episodeId }?.apply { + shortDesc = episodeShortDesc + watched = episodeWatched + watchedCallback = episodeWatchedCallback + } } } }