diff --git a/src/all/mangapark/build.gradle b/src/all/mangapark/build.gradle index 38333ffc0..7d2e0c725 100644 --- a/src/all/mangapark/build.gradle +++ b/src/all/mangapark/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'MangaPark v3' pkgNameSuffix = 'all.mangapark' extClass = '.MangaParkFactory' - extVersionCode = 14 + extVersionCode = 15 isNsfw = true } diff --git a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt index da0ea731c..ab7ce04fa 100644 --- a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt +++ b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaPark.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.extension.all.mangapark import com.squareup.duktape.Duktape import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -12,18 +11,12 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.json.Json -import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive -import kotlinx.serialization.json.put import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response -import org.jsoup.Jsoup import org.jsoup.nodes.Document import org.jsoup.nodes.Element import rx.Observable @@ -39,14 +32,13 @@ open class MangaPark( override val name: String = "MangaPark v3" - override val baseUrl: String = "https://v35.mangapark.net" // temporary url change to keep the ext working after update return to https://mangapark.net or https://v36.mangapark.net at later date + override val baseUrl: String = "https://mangapark.net" override val supportsLatest = true override val id: Long = when (lang) { "zh-Hans" -> 6306867705763005424 "zh-Hant" -> 4563855043528673539 - "ro-MD" -> 7298853649198357919 else -> super.id } @@ -200,46 +192,25 @@ open class MangaPark( else -> SManga.UNKNOWN } - override fun chapterListRequest(manga: SManga): Request { - val sid = "$baseUrl${manga.url}".toHttpUrl().pathSegments[1].toInt() - - val jsonPayload = buildJsonObject { - put("lang", siteLang) - put("sid", sid) - } - - val requestBody = - jsonPayload.toString().toRequestBody("application/json;charset=UTF-8".toMediaType()) - - val refererUrl = "$baseUrl/${manga.url}".toHttpUrl().newBuilder() - .toString() - val newHeaders = headersBuilder() - .add("Content-Length", requestBody.contentLength().toString()) - .add("Content-Type", requestBody.contentType().toString()) - .set("Referer", refererUrl) - .build() - - return POST( - "$baseUrl/ajax.reader.subject.episodes.by.serial", - headers = newHeaders, - body = requestBody - ) - } - override fun chapterListParse(response: Response): List { - val resToJson = json.parseToJsonElement(response.body!!.string()).jsonObject - val document = Jsoup.parse(resToJson["html"]!!.jsonPrimitive.content) - return document.select(chapterListSelector()).map { chapterFromElement(it) } + val chapterListHtml = response.asJsoup().select("div.episode-list #chap-index") + return chapterListHtml.flatMap { it.select(chapterListSelector()).map { chapElem -> chapterFromElement(chapElem) } } } - override fun chapterListSelector() = "div.episode-item" + override fun chapterListSelector(): String { + return when (lang) { + "en" -> "div.p-2:not(:has(.px-3))" + // To handle both "/comic/1/test/c0-en" and "/comic/1/test/c0-en/" like url + else -> "div.p-2:has(.px-3 a[href\$=\"$siteLang\"]), div.p-2:has(.px-3 a[href\$=\"$siteLang/\"])" + } + } override fun chapterFromElement(element: Element): SChapter { - val urlElement = element.select("a.chapt") + val urlElement = element.select("a.ms-3") return SChapter.create().apply { - name = urlElement.text() - date_upload = element.select("div.extra > i.ps-2").text().parseChapterDate() + name = urlElement.text().removePrefix("Ch").trim() + date_upload = element.select("i.text-nowrap").text().parseChapterDate() setUrlWithoutDomain(urlElement.attr("href").removeSuffix("/")) } } diff --git a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaParkFactory.kt b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaParkFactory.kt index e9228bc8f..949a4b11e 100644 --- a/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaParkFactory.kt +++ b/src/all/mangapark/src/eu/kanade/tachiyomi/extension/all/mangapark/MangaParkFactory.kt @@ -10,68 +10,52 @@ class MangaParkFactory : SourceFactory { class LanguageOption(val lang: String, val siteLang: String = lang) private val languages = listOf( // LanguageOption("",""), - LanguageOption("en"), - LanguageOption("ar"), - LanguageOption("bg"), - LanguageOption("zh"), - LanguageOption("cs"), - LanguageOption("da"), - LanguageOption("nl"), - LanguageOption("fil"), - LanguageOption("fi"), - LanguageOption("fr"), - LanguageOption("de"), - LanguageOption("el"), - LanguageOption("he"), - LanguageOption("hi"), - LanguageOption("hu"), - LanguageOption("id"), - LanguageOption("it"), - LanguageOption("ja"), - LanguageOption("ko"), - LanguageOption("ms"), - LanguageOption("pl"), - LanguageOption("pt"), - LanguageOption("pt-BR", "pt_br"), - LanguageOption("ro"), - LanguageOption("ru"), - LanguageOption("es"), - LanguageOption("es-419", "es_419"), - LanguageOption("sv"), - LanguageOption("th"), - LanguageOption("tr"), - LanguageOption("uk"), - LanguageOption("vi"), LanguageOption("af"), LanguageOption("sq"), LanguageOption("am"), + LanguageOption("ar"), LanguageOption("hy"), LanguageOption("az"), LanguageOption("be"), LanguageOption("bn"), LanguageOption("bs"), + LanguageOption("bg"), LanguageOption("my"), LanguageOption("km"), LanguageOption("ca"), LanguageOption("ceb"), + LanguageOption("zh"), LanguageOption("zh-Hans", "zh_hk"), LanguageOption("zh-Hant", "zh_tw"), LanguageOption("hr"), - LanguageOption("en-US", "en_us"), + LanguageOption("cs"), + LanguageOption("da"), + LanguageOption("nl"), + LanguageOption("en"), LanguageOption("eo"), LanguageOption("et"), LanguageOption("fo"), + LanguageOption("fil"), + LanguageOption("fi"), + LanguageOption("fr"), LanguageOption("ka"), + LanguageOption("de"), + LanguageOption("el"), LanguageOption("gn"), - LanguageOption("gu"), - LanguageOption("ht",), + LanguageOption("ht"), LanguageOption("ha"), + LanguageOption("he"), + LanguageOption("hi"), + LanguageOption("hu"), LanguageOption("is"), LanguageOption("ig"), + LanguageOption("id"), LanguageOption("ga"), + LanguageOption("it"), + LanguageOption("ja"), LanguageOption("jv"), - LanguageOption("kn"), LanguageOption("kk"), + LanguageOption("ko"), LanguageOption("ku"), LanguageOption("ky"), LanguageOption("lo"), @@ -80,21 +64,26 @@ private val languages = listOf( LanguageOption("lb"), LanguageOption("mk"), LanguageOption("mg"), + LanguageOption("ms"), LanguageOption("ml"), LanguageOption("mt"), LanguageOption("mi"), - LanguageOption("mr"), - LanguageOption("mo", "ro-MD"), + LanguageOption("mo"), LanguageOption("mn"), LanguageOption("ne"), LanguageOption("no"), LanguageOption("ny"), LanguageOption("ps"), LanguageOption("fa"), + LanguageOption("pl"), + LanguageOption("pt"), + LanguageOption("pt-BR", "pt_br"), + LanguageOption("ro"), LanguageOption("rm"), + LanguageOption("ru"), LanguageOption("sm"), LanguageOption("sr"), - LanguageOption("sh",), + LanguageOption("sh"), LanguageOption("st"), LanguageOption("sn"), LanguageOption("sd"), @@ -102,17 +91,22 @@ private val languages = listOf( LanguageOption("sk"), LanguageOption("sl"), LanguageOption("so"), + LanguageOption("es"), + LanguageOption("es-419", "es_419"), LanguageOption("sw"), + LanguageOption("sv"), LanguageOption("tg"), LanguageOption("ta"), + LanguageOption("th"), LanguageOption("ti"), LanguageOption("to"), + LanguageOption("tr"), LanguageOption("tk"), + LanguageOption("uk"), LanguageOption("ur"), LanguageOption("uz"), + LanguageOption("vi"), LanguageOption("yo"), LanguageOption("zu"), - LanguageOption("other", "_t"), - LanguageOption("eu"), - LanguageOption("pt-PT", "pt_pt") + LanguageOption("other", "_t") )