diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLekOrg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLekOrg.kt deleted file mode 100644 index f279720da..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLekOrg.kt +++ /dev/null @@ -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" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HManhwa.kt deleted file mode 100644 index 04ef7cfa3..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HManhwa.kt +++ /dev/null @@ -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 -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt deleted file mode 100644 index 5129e67a4..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PeachScan.kt +++ /dev/null @@ -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" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt deleted file mode 100644 index b46451670..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangakeyfi.kt +++ /dev/null @@ -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" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MonoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MonoManga.kt deleted file mode 100644 index d05454344..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MonoManga.kt +++ /dev/null @@ -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" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt index ecfddd20c..cf03402bc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt @@ -6,9 +6,7 @@ import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +//Manga +18 require login. @MangaSourceParser("VIYAFANSUB", "ViyaFansub", "tr", ContentType.HENTAI) internal class ViyaFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.VIYAFANSUB, "viyafansub.com") { - - override val datePattern = "d MMMM yyyy" -} + MadaraParser(context, MangaSource.VIYAFANSUB, "viyafansub.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt index 1f7a624e6..18ded601e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOITR", "YaoiTr", "tr") internal class YaoiTr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YAOITR, "yaoitr.com", 16) { + MadaraParser(context, MangaSource.YAOITR, "yaoitr.online", 16) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt new file mode 100644 index 000000000..fa77b4788 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt @@ -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?, + sortOrder: SortOrder, + ): List { + 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 { + 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, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt index f58e52f91..3feb38fd6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("COSMICSCANS", "CosmicScans", "en") internal class CosmicScansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmicscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt index f6fbb6558..c57ec637e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("KOMIKCAST", "KomikCast", "id") internal class Komikcast(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKCAST, "komikcast.vip", pageSize = 60, searchPageSize = 28) { + MangaReaderParser(context, MangaSource.KOMIKCAST, "komikcast.ch", pageSize = 60, searchPageSize = 28) { override val listUrl = "/daftar-komik" override val datePattern = "MMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt deleted file mode 100644 index 913dc0e77..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt +++ /dev/null @@ -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 -}