From f134137a05d8f2519996231ad5468ebb7549279a Mon Sep 17 00:00:00 2001 From: devi Date: Mon, 9 Oct 2023 17:58:43 +0200 Subject: [PATCH] add sources and fix --- .../parsers/site/fr/BentomangaParser.kt | 2 +- .../parsers/site/madara/ar/MangaTime.kt | 12 +++++ .../parsers/site/madara/fr/ScantradVf.kt | 2 +- .../parsers/site/madara/tr/DomalFansb.kt | 13 ++++++ .../parsers/site/madara/tr/HoiFansub.kt | 10 +++++ .../parsers/site/mangareader/en/AstraScans.kt | 10 +++++ .../parsers/site/mangareader/id/Komikcast.kt | 44 ++++++------------- .../kotatsu/parsers/site/mmrcms/fr/MangaFr.kt | 2 +- 8 files changed, 61 insertions(+), 34 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index 2ba81758..dab9a70b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -15,7 +15,7 @@ import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.getIntOrDefault import java.util.* -@MangaSourceParser("BENTOMANGA", "BentoManga", "fr") +@MangaSourceParser("BENTOMANGA", "Bento Manga", "fr") internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.BENTOMANGA, 10) { override val sortOrders: Set = EnumSet.of( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt new file mode 100644 index 00000000..eb7413ee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt @@ -0,0 +1,12 @@ +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("MANGATIME", "Manga Time", "ar") +internal class MangaTime(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGATIME, "mangatime.co") { + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt index 6ac8ab29..f6452399 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SCANTRADVF", "Scantrad-Vf", "fr") internal class ScantradVf(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCANTRADVF, "scantrad-vf.co") { + MadaraParser(context, MangaSource.SCANTRADVF, "scantrad-vf.me") { override val datePattern = "d MMMM yyyy" override val tagPrefix = "genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt new file mode 100644 index 00000000..e254c35f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt @@ -0,0 +1,13 @@ +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("DOMALFANSB", "Domal Fansub", "tr") +internal class DomalFansb(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.DOMALFANSB, "domalfansb.com") { + override val datePattern = "d MMMM yyyy" + override val tagPrefix = "manga-turleri/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt new file mode 100644 index 00000000..0cea3459 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt @@ -0,0 +1,10 @@ +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("HOIFANSUB", "Hoi Fansub", "tr") +internal class HoiFansub(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.HOIFANSUB, "hoifansub.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt new file mode 100644 index 00000000..06c05b22 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +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 + +@MangaSourceParser("ASTRASCANS", "Astra Scans", "en") +internal class AstraScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.ASTRASCANS, "astrascans.com", pageSize = 30, searchPageSize = 10) 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 17113587..584ecf67 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 @@ -18,6 +18,8 @@ internal class Komikcast(context: MangaLoaderContext) : override val listUrl = "/daftar-komik" override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH + override val sortOrders: Set + get() = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.ALPHABETICAL) override suspend fun getListPage( page: Int, @@ -29,7 +31,6 @@ internal class Komikcast(context: MangaLoaderContext) : if (page > lastSearchPage) { return emptyList() } - val url = buildString { append("https://") append(domain) @@ -38,21 +39,12 @@ internal class Komikcast(context: MangaLoaderContext) : append("/?s=") append(query.urlEncoded()) } - val docs = webClient.httpGet(url).parseHtml() lastSearchPage = docs.selectFirst(".pagination .next") ?.previousElementSibling() ?.text()?.toIntOrNull() ?: 1 return parseMangaList(docs) } - - val sortQuery = when (sortOrder) { - SortOrder.ALPHABETICAL -> "title" - SortOrder.NEWEST -> "latest" - SortOrder.POPULARITY -> "popular" - SortOrder.UPDATED -> "update" - else -> "" - } val tagKey = "genre[]".urlEncoded() val tagQuery = if (tags.isNullOrEmpty()) "" else tags.joinToString(separator = "&", prefix = "&") { "$tagKey=${it.key}" } @@ -62,11 +54,14 @@ internal class Komikcast(context: MangaLoaderContext) : append(listUrl) append("/page/") append(page) - append("/?orderby=") - append(sortQuery) + when (sortOrder) { + SortOrder.ALPHABETICAL -> append("/?orderby=titleasc") + SortOrder.POPULARITY -> append("/?orderby=popular") + SortOrder.UPDATED -> append("/?sortby=update") + else -> append("/?sortby=update") + } append(tagQuery) } - return parseMangaList(webClient.httpGet(url).parseHtml()) } @@ -93,24 +88,15 @@ internal class Komikcast(context: MangaLoaderContext) : } override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List): Manga { - // / set if is table - val tagMap = getOrCreateTagMap() - val tags = docs.select(".komik_info-content-genre > a").mapNotNullToSet { tagMap[it.text()] } - - val state = docs.selectFirst(".komik_info-content-meta span:contains(Status)")?.lastElementChild() - - val mangaState = state?.let { - when (it.text()) { - "Ongoing" -> MangaState.ONGOING - "Completed" -> MangaState.FINISHED - else -> null - } + val state = docs.selectFirst(".komik_info-content-meta span:contains(Status)")?.html() + val mangaState = if (state!!.contains("Ongoing")) { + MangaState.ONGOING + } else { + MangaState.FINISHED } - val author = docs.selectFirst(".komik_info-content-meta span:contains(Author)")?.lastElementChild()?.text() - val nsfw = docs.selectFirst(".restrictcontainer") != null || docs.selectFirst(".info-right .alr") != null || docs.selectFirst( ".postbody .alr", @@ -131,7 +117,6 @@ internal class Komikcast(context: MangaLoaderContext) : val a = it.selectFirstOrThrow("a.data-tooltip") val relativeUrl = a.attrAsRelativeUrl("href") val rating = it.selectFirst(".numscore")?.text()?.toFloatOrNull()?.div(10) ?: RATING_UNKNOWN - val name = it.selectFirst("h3.title")?.text().orEmpty() Manga( id = generateUid(relativeUrl), @@ -153,7 +138,6 @@ internal class Komikcast(context: MangaLoaderContext) : override suspend fun getPages(chapter: MangaChapter): List { val chapterUrl = chapter.url.toAbsoluteUrl(domain) val docs = webClient.httpGet(chapterUrl).parseHtml() - val test = docs.select("script:containsData(ts_reader)") if (test.isNullOrEmpty()) { return docs.select("div#chapter_body img").map { img -> @@ -180,7 +164,6 @@ internal class Komikcast(context: MangaLoaderContext) : ), ) } - return pages } } @@ -199,7 +182,6 @@ internal class Komikcast(context: MangaLoaderContext) : private fun parseRelativeDate(date: String): Long { val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0 val cal = Calendar.getInstance() - return when { WordSet( "day", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaFr.kt index 1bb6f54d..b4a10f4a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaFr.kt @@ -8,7 +8,7 @@ import java.util.Locale @MangaSourceParser("MANGAFR", "Manga Fr", "fr") internal class MangaFr(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGAFR, "manga-fr.me") { + MmrcmsParser(context, MangaSource.MANGAFR, "manga-fr.cc") { override val imgUpdated = ".jpg" override val sourceLocale: Locale = Locale.ENGLISH }