From 634240b2f0968e194447d2a153b8f74279cd4ea2 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Sun, 12 Apr 2020 18:47:18 -0400 Subject: [PATCH] Madara - xhr chapters (#2651) Madara - xhr chapters --- src/all/madara/build.gradle | 2 +- .../tachiyomi/extension/all/madara/Madara.kt | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/all/madara/build.gradle b/src/all/madara/build.gradle index 551acbfeb..8d99c690e 100644 --- a/src/all/madara/build.gradle +++ b/src/all/madara/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: Madara (multiple sources)' pkgNameSuffix = "all.madara" extClass = '.MadaraFactory' - extVersionCode = 67 + extVersionCode = 68 libVersion = '1.2' } diff --git a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt index bbbcf5127..8a14eeb39 100644 --- a/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt +++ b/src/all/madara/src/eu/kanade/tachiyomi/extension/all/madara/Madara.kt @@ -10,14 +10,17 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup import okhttp3.CacheControl import okhttp3.FormBody import okhttp3.HttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response +import okhttp3.RequestBody import org.jsoup.nodes.Document import org.jsoup.nodes.Element +import org.jsoup.select.Elements import rx.Observable import java.text.ParseException import java.text.SimpleDateFormat @@ -361,6 +364,25 @@ abstract class Madara( return element.absUrl(if (element.hasAttr("data-src")) "data-src" else "src") } + private fun getXhrChapters(mangaId: String): Document { + val xhrHeaders = headersBuilder().add("Content-Type: application/x-www-form-urlencoded; charset=UTF-8").build() + val body = RequestBody.create(null, "action=manga_get_chapters&manga=$mangaId") + return client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", xhrHeaders, body)).execute().asJsoup() + } + + override fun chapterListParse(response: Response): List { + val document = response.asJsoup() + val dataIdSelector = "div#manga-chapters-holder" + + return document.select(chapterListSelector()) + .let { elements -> + if (elements.isEmpty() && !document.select(dataIdSelector).isNullOrEmpty()) + getXhrChapters(document.select(dataIdSelector).attr("data-id")).select(chapterListSelector()) + else Elements() + } + .map { chapterFromElement(it) } + } + override fun chapterListSelector() = "li.wp-manga-chapter" override fun chapterFromElement(element: Element): SChapter {