From 141bca517d6e600d26faa4a345416f54622007bd Mon Sep 17 00:00:00 2001 From: devi Date: Tue, 4 Jul 2023 15:49:50 +0200 Subject: [PATCH] Add Koitharu optimization, and rename Manga origines --- .../org/koitharu/kotatsu/parsers/site/ScantradUnion.kt | 7 +++++-- .../fr/{MangasOrigines.kt => MangasOriginesUnofficial.kt} | 6 +++--- .../kotatsu/parsers/site/mangareader/ar/SwaTeam.kt | 4 ++-- .../kotatsu/parsers/site/mangareader/fr/LelManga.kt | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/{MangasOrigines.kt => MangasOriginesUnofficial.kt} (62%) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt index edc2b68a..383c3509 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt @@ -17,10 +17,12 @@ import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.generateUid import org.koitharu.kotatsu.parsers.util.mapChapters import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.parseFailed import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.requireElementById @@ -189,7 +191,8 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con val root = doc.body().selectFirst("#webtoon") ?: throw ParseException("Root not found", fullUrl) return root.select("img").map { img -> - val url = img.attr("data-src") ?: img.attr("src") ?: img.parseFailed("Image src not found") + val url = img.attrAsRelativeUrlOrNull("data-src") ?: img.attrAsRelativeUrlOrNull("src") + ?: img.parseFailed("Image src not found") MangaPage( id = generateUid(url), url = url, @@ -204,7 +207,7 @@ internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(con val body = doc.body() val root = body.select(".asp_gochosen")[1] val list = root?.select("option").orEmpty() - return list.mapNotNullToSet { li -> + return list.mapToSet { li -> MangaTag( key = li.text(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt similarity index 62% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt index 2bc22031..06ecbc40 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt @@ -6,9 +6,9 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.Locale -@MangaSourceParser("MANGASORIGINES", "Mangas Origines", "fr") -internal class MangasOrigines(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASORIGINES, "mangas-origines.xyz") { +@MangaSourceParser("MANGASORIGINESUNOFFICIAL", "Mangas Origines ( unofficial )", "fr") +internal class MangasOriginesUnofficial(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGASORIGINESUNOFFICIAL, "mangas-origines.xyz") { override val datePattern = "MMMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt index 7b51b627..a86b6c5c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt @@ -14,7 +14,7 @@ import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.generateUid import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toTitleCase @@ -84,7 +84,7 @@ internal class SwaTeam(context: MangaLoaderContext) : state = mangaState, author = author, isNsfw = manga.isNsfw || nsfw, - tags = docs.select("div.spe a[rel*=tag]").mapNotNullToSet { a -> + tags = docs.select("div.spe a[rel*=tag]").mapToSet { a -> MangaTag( key = a.attr("href").removeSuffix("/").substringAfterLast('/'), title = a.text().toTitleCase(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt index 7cdd4d92..fdc87e8c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt @@ -4,7 +4,6 @@ import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource @@ -13,6 +12,8 @@ import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.generateUid import org.koitharu.kotatsu.parsers.util.parseFailed import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.requireElementById +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toRelativeUrl import java.text.SimpleDateFormat @@ -29,8 +30,7 @@ internal class LelManga(context: MangaLoaderContext) : override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() - val root = doc.body().selectFirst("div.maincontent")?.selectFirst("div#readerarea") - ?: throw ParseException("Root not found", fullUrl) + val root = doc.body().selectFirstOrThrow("div.maincontent").requireElementById("readerarea") return root.select("img").map { img -> val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") MangaPage(