Minor daily update
parent
87032a6835
commit
23cc86e429
@ -1,13 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.ar
|
||||
|
||||
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("MANGALEK_ORG", "MangaLek.org", "ar")
|
||||
internal class MangaLekOrg(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGALEK_ORG, "ww.mangalek.org", pageSize = 10) {
|
||||
override val listUrl = "comics/"
|
||||
override val datePattern = "dd-MM-yyyy"
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.en
|
||||
|
||||
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.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("HMANHWA", "H Manhwa", "en", ContentType.HENTAI)
|
||||
internal class HManhwa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HMANHWA, "hmanhwa.com") {
|
||||
override val tagPrefix = "manhwa-genre/"
|
||||
override val listUrl = "manhwa/"
|
||||
override val datePattern = "dd MMM"
|
||||
override val postReq = true
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
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("PEACHSCAN", "PeachScan", "pt")
|
||||
internal class PeachScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PEACHSCAN, "www.peachscan.com", 10) {
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@ -1,13 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
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("MANGAKEYFI", "MangaKeyfi", "tr")
|
||||
internal class Mangakeyfi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAKEYFI, "mangakeyfi.net", 20) {
|
||||
override val tagPrefix = "mangalar-genre/"
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
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("MONOMANGA", "MonoManga", "tr")
|
||||
internal class MonoManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MONOMANGA, "monomanga.com") {
|
||||
override val datePattern = "d MMM yyyy"
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangabox.en
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.model.*
|
||||
import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser
|
||||
import org.koitharu.kotatsu.parsers.util.*
|
||||
|
||||
@MangaSourceParser("MANGAKAKALOTTV", "Mangakakalot.tv", "en")
|
||||
internal class MangakakalotTv(context: MangaLoaderContext) :
|
||||
MangaboxParser(context, MangaSource.MANGAKAKALOTTV) {
|
||||
|
||||
override val configKeyDomain = ConfigKey.Domain("ww6.mangakakalot.tv")
|
||||
override val searchUrl = "/search/"
|
||||
override val listUrl = "/manga_list"
|
||||
|
||||
override suspend fun getListPage(
|
||||
page: Int,
|
||||
query: String?,
|
||||
tags: Set<MangaTag>?,
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
val tag = tags.oneOrThrowIfMany()
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
if (!query.isNullOrEmpty()) {
|
||||
append(searchUrl)
|
||||
append(query.urlEncoded())
|
||||
append("?page=")
|
||||
append(page.toString())
|
||||
} else {
|
||||
append("$listUrl/")
|
||||
append("?type=")
|
||||
when (sortOrder) {
|
||||
SortOrder.POPULARITY -> append("topview")
|
||||
SortOrder.UPDATED -> append("latest")
|
||||
SortOrder.NEWEST -> append("newest")
|
||||
else -> append("latest")
|
||||
}
|
||||
if (!tags.isNullOrEmpty()) {
|
||||
append("&category=")
|
||||
append(tag?.key.orEmpty())
|
||||
}
|
||||
if (page > 1) {
|
||||
append("&page=")
|
||||
append(page.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
val doc = webClient.httpGet(url).parseHtml()
|
||||
return doc.select("div.list-truyen-item-wrap").ifEmpty {
|
||||
doc.select("div.story_item")
|
||||
}.map { div ->
|
||||
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
|
||||
Manga(
|
||||
id = generateUid(href),
|
||||
url = href,
|
||||
publicUrl = href.toAbsoluteUrl(div.host ?: domain),
|
||||
coverUrl = div.selectFirst("img")?.src().orEmpty(),
|
||||
title = div.selectFirstOrThrow("h3").text().orEmpty(),
|
||||
altTitle = null,
|
||||
rating = RATING_UNKNOWN,
|
||||
tags = emptySet(),
|
||||
author = null,
|
||||
state = null,
|
||||
source = source,
|
||||
isNsfw = isNsfwSource,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override val selectTagMap = "ul.tag li a"
|
||||
|
||||
override suspend fun getTags(): Set<MangaTag> {
|
||||
val doc = webClient.httpGet("https://$domain/$listUrl").parseHtml()
|
||||
return doc.select(selectTagMap).mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").substringAfterLast("category=").substringBefore("&"),
|
||||
title = a.attr("title"),
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
||||
|
||||
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.mangareader.MangaReaderParser
|
||||
import java.util.*
|
||||
|
||||
@MangaSourceParser("MANGAINDO", "MangaIndo", "id")
|
||||
internal class Mangaindo(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGAINDO, "mangaindo.me", pageSize = 26, searchPageSize = 26) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
Loading…
Reference in New Issue