Fix Chapter list (#11405)
This commit is contained in:
parent
40acef146a
commit
f91c2ed90e
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'MangaPark v3'
|
extName = 'MangaPark v3'
|
||||||
pkgNameSuffix = 'all.mangapark'
|
pkgNameSuffix = 'all.mangapark'
|
||||||
extClass = '.MangaParkFactory'
|
extClass = '.MangaParkFactory'
|
||||||
extVersionCode = 14
|
extVersionCode = 15
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.extension.all.mangapark
|
||||||
|
|
||||||
import com.squareup.duktape.Duktape
|
import com.squareup.duktape.Duktape
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.POST
|
|
||||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
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.source.online.ParsedHttpSource
|
||||||
import eu.kanade.tachiyomi.util.asJsoup
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import kotlinx.serialization.json.buildJsonObject
|
|
||||||
import kotlinx.serialization.json.jsonArray
|
import kotlinx.serialization.json.jsonArray
|
||||||
import kotlinx.serialization.json.jsonObject
|
|
||||||
import kotlinx.serialization.json.jsonPrimitive
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
import kotlinx.serialization.json.put
|
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.jsoup.Jsoup
|
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
@ -39,14 +32,13 @@ open class MangaPark(
|
||||||
|
|
||||||
override val name: String = "MangaPark v3"
|
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 supportsLatest = true
|
||||||
|
|
||||||
override val id: Long = when (lang) {
|
override val id: Long = when (lang) {
|
||||||
"zh-Hans" -> 6306867705763005424
|
"zh-Hans" -> 6306867705763005424
|
||||||
"zh-Hant" -> 4563855043528673539
|
"zh-Hant" -> 4563855043528673539
|
||||||
"ro-MD" -> 7298853649198357919
|
|
||||||
else -> super.id
|
else -> super.id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,46 +192,25 @@ open class MangaPark(
|
||||||
else -> SManga.UNKNOWN
|
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<SChapter> {
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
val resToJson = json.parseToJsonElement(response.body!!.string()).jsonObject
|
val chapterListHtml = response.asJsoup().select("div.episode-list #chap-index")
|
||||||
val document = Jsoup.parse(resToJson["html"]!!.jsonPrimitive.content)
|
return chapterListHtml.flatMap { it.select(chapterListSelector()).map { chapElem -> chapterFromElement(chapElem) } }
|
||||||
return document.select(chapterListSelector()).map { chapterFromElement(it) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
override fun chapterFromElement(element: Element): SChapter {
|
||||||
val urlElement = element.select("a.chapt")
|
val urlElement = element.select("a.ms-3")
|
||||||
|
|
||||||
return SChapter.create().apply {
|
return SChapter.create().apply {
|
||||||
name = urlElement.text()
|
name = urlElement.text().removePrefix("Ch").trim()
|
||||||
date_upload = element.select("div.extra > i.ps-2").text().parseChapterDate()
|
date_upload = element.select("i.text-nowrap").text().parseChapterDate()
|
||||||
setUrlWithoutDomain(urlElement.attr("href").removeSuffix("/"))
|
setUrlWithoutDomain(urlElement.attr("href").removeSuffix("/"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,68 +10,52 @@ class MangaParkFactory : SourceFactory {
|
||||||
class LanguageOption(val lang: String, val siteLang: String = lang)
|
class LanguageOption(val lang: String, val siteLang: String = lang)
|
||||||
private val languages = listOf(
|
private val languages = listOf(
|
||||||
// LanguageOption("<Language Format>","<Language Format used in site.>"),
|
// LanguageOption("<Language Format>","<Language Format used in site.>"),
|
||||||
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("af"),
|
||||||
LanguageOption("sq"),
|
LanguageOption("sq"),
|
||||||
LanguageOption("am"),
|
LanguageOption("am"),
|
||||||
|
LanguageOption("ar"),
|
||||||
LanguageOption("hy"),
|
LanguageOption("hy"),
|
||||||
LanguageOption("az"),
|
LanguageOption("az"),
|
||||||
LanguageOption("be"),
|
LanguageOption("be"),
|
||||||
LanguageOption("bn"),
|
LanguageOption("bn"),
|
||||||
LanguageOption("bs"),
|
LanguageOption("bs"),
|
||||||
|
LanguageOption("bg"),
|
||||||
LanguageOption("my"),
|
LanguageOption("my"),
|
||||||
LanguageOption("km"),
|
LanguageOption("km"),
|
||||||
LanguageOption("ca"),
|
LanguageOption("ca"),
|
||||||
LanguageOption("ceb"),
|
LanguageOption("ceb"),
|
||||||
|
LanguageOption("zh"),
|
||||||
LanguageOption("zh-Hans", "zh_hk"),
|
LanguageOption("zh-Hans", "zh_hk"),
|
||||||
LanguageOption("zh-Hant", "zh_tw"),
|
LanguageOption("zh-Hant", "zh_tw"),
|
||||||
LanguageOption("hr"),
|
LanguageOption("hr"),
|
||||||
LanguageOption("en-US", "en_us"),
|
LanguageOption("cs"),
|
||||||
|
LanguageOption("da"),
|
||||||
|
LanguageOption("nl"),
|
||||||
|
LanguageOption("en"),
|
||||||
LanguageOption("eo"),
|
LanguageOption("eo"),
|
||||||
LanguageOption("et"),
|
LanguageOption("et"),
|
||||||
LanguageOption("fo"),
|
LanguageOption("fo"),
|
||||||
|
LanguageOption("fil"),
|
||||||
|
LanguageOption("fi"),
|
||||||
|
LanguageOption("fr"),
|
||||||
LanguageOption("ka"),
|
LanguageOption("ka"),
|
||||||
|
LanguageOption("de"),
|
||||||
|
LanguageOption("el"),
|
||||||
LanguageOption("gn"),
|
LanguageOption("gn"),
|
||||||
LanguageOption("gu"),
|
LanguageOption("ht"),
|
||||||
LanguageOption("ht",),
|
|
||||||
LanguageOption("ha"),
|
LanguageOption("ha"),
|
||||||
|
LanguageOption("he"),
|
||||||
|
LanguageOption("hi"),
|
||||||
|
LanguageOption("hu"),
|
||||||
LanguageOption("is"),
|
LanguageOption("is"),
|
||||||
LanguageOption("ig"),
|
LanguageOption("ig"),
|
||||||
|
LanguageOption("id"),
|
||||||
LanguageOption("ga"),
|
LanguageOption("ga"),
|
||||||
|
LanguageOption("it"),
|
||||||
|
LanguageOption("ja"),
|
||||||
LanguageOption("jv"),
|
LanguageOption("jv"),
|
||||||
LanguageOption("kn"),
|
|
||||||
LanguageOption("kk"),
|
LanguageOption("kk"),
|
||||||
|
LanguageOption("ko"),
|
||||||
LanguageOption("ku"),
|
LanguageOption("ku"),
|
||||||
LanguageOption("ky"),
|
LanguageOption("ky"),
|
||||||
LanguageOption("lo"),
|
LanguageOption("lo"),
|
||||||
|
@ -80,21 +64,26 @@ private val languages = listOf(
|
||||||
LanguageOption("lb"),
|
LanguageOption("lb"),
|
||||||
LanguageOption("mk"),
|
LanguageOption("mk"),
|
||||||
LanguageOption("mg"),
|
LanguageOption("mg"),
|
||||||
|
LanguageOption("ms"),
|
||||||
LanguageOption("ml"),
|
LanguageOption("ml"),
|
||||||
LanguageOption("mt"),
|
LanguageOption("mt"),
|
||||||
LanguageOption("mi"),
|
LanguageOption("mi"),
|
||||||
LanguageOption("mr"),
|
LanguageOption("mo"),
|
||||||
LanguageOption("mo", "ro-MD"),
|
|
||||||
LanguageOption("mn"),
|
LanguageOption("mn"),
|
||||||
LanguageOption("ne"),
|
LanguageOption("ne"),
|
||||||
LanguageOption("no"),
|
LanguageOption("no"),
|
||||||
LanguageOption("ny"),
|
LanguageOption("ny"),
|
||||||
LanguageOption("ps"),
|
LanguageOption("ps"),
|
||||||
LanguageOption("fa"),
|
LanguageOption("fa"),
|
||||||
|
LanguageOption("pl"),
|
||||||
|
LanguageOption("pt"),
|
||||||
|
LanguageOption("pt-BR", "pt_br"),
|
||||||
|
LanguageOption("ro"),
|
||||||
LanguageOption("rm"),
|
LanguageOption("rm"),
|
||||||
|
LanguageOption("ru"),
|
||||||
LanguageOption("sm"),
|
LanguageOption("sm"),
|
||||||
LanguageOption("sr"),
|
LanguageOption("sr"),
|
||||||
LanguageOption("sh",),
|
LanguageOption("sh"),
|
||||||
LanguageOption("st"),
|
LanguageOption("st"),
|
||||||
LanguageOption("sn"),
|
LanguageOption("sn"),
|
||||||
LanguageOption("sd"),
|
LanguageOption("sd"),
|
||||||
|
@ -102,17 +91,22 @@ private val languages = listOf(
|
||||||
LanguageOption("sk"),
|
LanguageOption("sk"),
|
||||||
LanguageOption("sl"),
|
LanguageOption("sl"),
|
||||||
LanguageOption("so"),
|
LanguageOption("so"),
|
||||||
|
LanguageOption("es"),
|
||||||
|
LanguageOption("es-419", "es_419"),
|
||||||
LanguageOption("sw"),
|
LanguageOption("sw"),
|
||||||
|
LanguageOption("sv"),
|
||||||
LanguageOption("tg"),
|
LanguageOption("tg"),
|
||||||
LanguageOption("ta"),
|
LanguageOption("ta"),
|
||||||
|
LanguageOption("th"),
|
||||||
LanguageOption("ti"),
|
LanguageOption("ti"),
|
||||||
LanguageOption("to"),
|
LanguageOption("to"),
|
||||||
|
LanguageOption("tr"),
|
||||||
LanguageOption("tk"),
|
LanguageOption("tk"),
|
||||||
|
LanguageOption("uk"),
|
||||||
LanguageOption("ur"),
|
LanguageOption("ur"),
|
||||||
LanguageOption("uz"),
|
LanguageOption("uz"),
|
||||||
|
LanguageOption("vi"),
|
||||||
LanguageOption("yo"),
|
LanguageOption("yo"),
|
||||||
LanguageOption("zu"),
|
LanguageOption("zu"),
|
||||||
LanguageOption("other", "_t"),
|
LanguageOption("other", "_t")
|
||||||
LanguageOption("eu"),
|
|
||||||
LanguageOption("pt-PT", "pt_pt")
|
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue