Add ZScanlation, KomikGesn , Kenhuav2Scan
Fix MangaMate
parent
ea095084cc
commit
9ecb75b51c
@ -0,0 +1,10 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.es
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("KENHUAV2SCANK", "Kenhuav2Scan", "es")
|
||||
internal class Kenhuav2Scan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KENHUAV2SCANK, "kenhuav2scan.com")
|
||||
@ -0,0 +1,70 @@
|
||||
package org.koitharu.kotatsu.parsers.site.zeistmanga.id
|
||||
|
||||
import org.jsoup.nodes.Document
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaChapter
|
||||
import org.koitharu.kotatsu.parsers.model.MangaPage
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
import org.koitharu.kotatsu.parsers.util.json.toJSONList
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
@MangaSourceParser("KOMIKGES", "KomikGes", "id")
|
||||
internal class KomikGes(context: MangaLoaderContext) :
|
||||
ZeistMangaParser(context, MangaSource.KOMIKGES, "www.komikges.my.id") {
|
||||
|
||||
override suspend fun loadChapters(mangaUrl: String, doc: Document): List<MangaChapter> {
|
||||
val feed = doc.selectFirstOrThrow(".episode-list script").html().substringAfter("('").substringBefore("');")
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
append("/feeds/posts/default/-/")
|
||||
append(feed)
|
||||
append("?alt=json&orderby=published&max-results=9999")
|
||||
}
|
||||
val json =
|
||||
webClient.httpGet(url).parseJson().getJSONObject("feed").getJSONArray("entry").toJSONList().reversed()
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
|
||||
return json.mapIndexedNotNull { i, j ->
|
||||
val name = j.getJSONObject("title").getString("\$t")
|
||||
val href =
|
||||
j.getJSONArray("link").toJSONList().first { it.getString("rel") == "alternate" }.getString("href")
|
||||
val dateText = j.getJSONObject("published").getString("\$t").substringBefore("T")
|
||||
val slug = mangaUrl.substringAfterLast('/')
|
||||
val slugChapter = href.substringAfterLast('/')
|
||||
if (slug == slugChapter) {
|
||||
return@mapIndexedNotNull null
|
||||
}
|
||||
MangaChapter(
|
||||
id = generateUid(href),
|
||||
url = href,
|
||||
name = name,
|
||||
number = i + 1,
|
||||
branch = null,
|
||||
uploadDate = dateFormat.tryParse(dateText),
|
||||
scanlator = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
|
||||
val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
|
||||
return doc.selectFirstOrThrow("script:containsData(let data_content =)").data().split("src\\x3d\\x22").drop(1)
|
||||
|
||||
.map { img ->
|
||||
val url = img.substringBefore("\\x22")
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.koitharu.kotatsu.parsers.site.zeistmanga.pt
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser
|
||||
|
||||
@MangaSourceParser("ZSCANLATION", "ZScanlation", "pt", ContentType.HENTAI)
|
||||
internal class ZScanlation(context: MangaLoaderContext) :
|
||||
ZeistMangaParser(context, MangaSource.ZSCANLATION, "www.zscanlation.com") {
|
||||
override val sateOngoing: String = "Em Lançamento"
|
||||
override val sateFinished: String = "Completo"
|
||||
override val sateAbandoned: String = "Dropado"
|
||||
}
|
||||
Loading…
Reference in New Issue