Fix Chapter list (#11405)

This commit is contained in:
FourTOne5 2022-04-10 09:02:58 +06:00 committed by GitHub
parent 40acef146a
commit f91c2ed90e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 85 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'MangaPark v3'
pkgNameSuffix = 'all.mangapark'
extClass = '.MangaParkFactory'
extVersionCode = 14
extVersionCode = 15
isNsfw = true
}

View File

@ -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<SChapter> {
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("/"))
}
}

View File

@ -10,68 +10,52 @@ class MangaParkFactory : SourceFactory {
class LanguageOption(val lang: String, val siteLang: String = lang)
private val languages = listOf(
// 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("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")
)