From e51b33c74a912768ad2a502986f809e3ccd4f748 Mon Sep 17 00:00:00 2001 From: Saksham Shekher <95137948+OshekharO@users.noreply.github.com> Date: Thu, 9 Feb 2023 23:26:04 +0530 Subject: [PATCH] Add: Toonily, Komiklab, KomikDewasa, KomiKav (#148) * Add: Toonily * Add: KOMIKLAB * Update MangaReaderParser.kt * Add: KomikDewasa * Add: KomiKav --- .../parsers/site/madara/MadaraParser.kt | 11 +++- .../site/mangareader/MangaReaderParser.kt | 64 ++++++++++++++++++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index 5e8b95e9c..3e8b03187 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -317,8 +317,7 @@ internal abstract class MadaraParser( } @MangaSourceParser("HACHIMANGA", "HachiManga", "ja") - class HachiManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HACHIMANGA, "hachimanga.com") { + class HachiManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HACHIMANGA, "hachimanga.com") { override val sourceLocale: Locale = Locale.ENGLISH } @@ -475,6 +474,14 @@ internal abstract class MadaraParser( } + @MangaSourceParser("TOONILY", "Toonily", "en") + class Toonily(context: MangaLoaderContext) : MadaraParser(context, MangaSource.TOONILY, "toonily.com") { + + override val tagPrefix = "webtoon-genre/" + + override val isNsfwSource = true + } + @MangaSourceParser("MANGA_MANHUA", "Manga Manhua", "en") class MangaManhua(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGA_MANHUA, "mangamanhua.online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 8482aa434..904f65ab8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -500,11 +500,73 @@ internal abstract class MangaReaderParser( } } + @MangaSourceParser("KOMIKAV", "KomiKav", "id") + class KomiKavParser(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.KOMIKAV, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("komikav.com", null) + + override val listUrl: String + get() = "/manga" + override val tableMode: Boolean + get() = false + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH) + + override suspend fun parseInfoList(docs: Document, manga: Manga, chapters: List): Manga { + val infoElement = docs.selectFirst("div.infox") + return manga.copy( + chapters = chapters, + description = infoElement?.selectFirst("div.entry-content")?.html(), + author = infoElement?.selectFirst(".flex-wrap div:contains(Author)")?.lastElementSibling()?.text(), + tags = infoElement?.select(".wd-full .mgen > a") + ?.mapNotNullToSet { getOrCreateTagMap()[it.text()] } + .orEmpty(), + ) + } + } + + @MangaSourceParser("KOMIKDEWASA", "KomikDewasa", "id") + class KomikDewasaParser(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.KOMIKDEWASA, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("komikdewasa.club", null) + + override val listUrl: String + get() = "/manga" + override val tableMode: Boolean + get() = false + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH) + + override suspend fun parseInfoList(docs: Document, manga: Manga, chapters: List): Manga { + val infoElement = docs.selectFirst("div.infox") + return manga.copy( + chapters = chapters, + description = infoElement?.selectFirst("div.entry-content")?.html(), + ) + } + } + @MangaSourceParser("MANGASUSU", "Mangasusu", "id") class MangasusuParser(context: MangaLoaderContext) : MangaReaderParser(context, MangaSource.MANGASUSU, pageSize = 20, searchPageSize = 10) { override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("92.84.132.251", null) + get() = ConfigKey.Domain("mangasusu.co.in", null) + + override val listUrl: String + get() = "/project" + override val tableMode: Boolean + get() = true + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH) + } + + @MangaSourceParser("KOMIKLAB", "KomikLab", "id") + class KomikLabParser(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.KOMIKLAB, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("komiklab.com", null) override val listUrl: String get() = "/project"