From b10fa0fd101454f0e8dfebfbada946b6c2a69a1e Mon Sep 17 00:00:00 2001 From: devi Date: Fri, 13 Oct 2023 16:15:19 +0200 Subject: [PATCH] add change requested and fix url --- .../koitharu/kotatsu/parsers/site/all/HentaiFox.kt | 5 +++-- .../koitharu/kotatsu/parsers/site/ar/FlixScans.kt | 2 +- .../koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt | 7 ++----- .../kotatsu/parsers/site/fr/LugnicaScans.kt | 14 ++------------ .../kotatsu/parsers/site/madara/es/TmoManga.kt | 3 ++- .../parsers/site/mangareader/ar/BeastScans.kt | 2 +- .../kotatsu/parsers/site/pt/LerMangaOnline.kt | 3 ++- .../koitharu/kotatsu/parsers/site/vi/Truyenqq.kt | 6 ++++-- 8 files changed, 17 insertions(+), 25 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HentaiFox.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HentaiFox.kt index c8675745..c20e53fa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HentaiFox.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HentaiFox.kt @@ -28,7 +28,8 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context val tag = tags.oneOrThrowIfMany() val url = buildString { - append("https://$domain") + append("https://") + append(domain) if (!tags.isNullOrEmpty()) { append("/tag/") append(tag?.key.orEmpty()) @@ -173,6 +174,6 @@ internal class HentaiFox(context: MangaLoaderContext) : PagedMangaParser(context override suspend fun getPageUrl(page: MangaPage): String { val doc = webClient.httpGet(page.url.toAbsoluteUrl(domain)).parseHtml() val root = doc.body() - return root.requireElementById("gimg").attr("data-src") ?: doc.parseFailed("Page image not found") + return root.requireElementById("gimg").attrAsAbsoluteUrl("data-src") } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt index 919532ce..523f1b49 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt @@ -132,7 +132,7 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context MangaChapter( id = generateUid(url), url = url, - name = j.getString("slug").replace("-", " "), + name = j.getString("slug").replace('-', ' '), number = i + 1, branch = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt index ae64112c..7a7cee35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt @@ -26,9 +26,9 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex sortOrder: SortOrder, ): List { val tag = tags.oneOrThrowIfMany() - val url = buildString { - append("https://$domain") + append("https://") + append(domain) if (!tags.isNullOrEmpty()) { append("/series?genre=") append(tag?.key.orEmpty()) @@ -57,7 +57,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex } val doc = webClient.httpGet(url).parseHtml() - return doc.select("div.listupd .bs .bsx").ifEmpty { doc.select("div.post-body .box") }.map { div -> @@ -97,7 +96,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex override suspend fun getDetails(manga: Manga): Manga { val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val mangaUrl = manga.url.toAbsoluteUrl(domain) - val maxPageChapterSelect = doc.select(".pagination .page-item a") var maxPageChapter = 1 if (!maxPageChapterSelect.isNullOrEmpty()) { @@ -108,7 +106,6 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex } } } - return manga.copy( altTitle = null, state = when (doc.selectFirstOrThrow(".full-list-info:contains(الحالة:) a").text()) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt index 6f3ed91c..2e02fec6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt @@ -9,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.mapJSON +import java.lang.IllegalArgumentException import java.text.SimpleDateFormat import java.util.* @@ -48,24 +49,19 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont tags: Set?, sortOrder: SortOrder, ): List { - if (!query.isNullOrEmpty()) { - return emptyList() + throw IllegalArgumentException("Search is not supported by this source") } - if (sortOrder == SortOrder.ALPHABETICAL) { - if (page > 1) { return emptyList() } - val url = buildString { append("https://") append(domain) append("/api/get/catalog?page=0&filter=all") } val json = webClient.httpGet(url).parseJsonArray() - return json.mapJSON { j -> val urlManga = "https://$domain/api/get/card/${j.getString("slug")}" val img = "https://$domain/upload/min_cover/${j.getString("image")}" @@ -123,10 +119,8 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont override suspend fun getDetails(manga: Manga): Manga { val json = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseJson() - val jsonManga = json.getJSONObject("manga") val chapters = json.getJSONObject("chapters").toString().split("{\"id\":").drop(1) // Possible improvement here - val slug = manga.url.substringAfterLast("/") val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE) return manga.copy( @@ -163,18 +157,14 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont private val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE) private fun getDateString(time: Long): String = simpleDateFormat.format(time * 1000L) - override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val jsonPage = webClient.httpGet(fullUrl).parseJson() - val idManga = jsonPage.getJSONObject("manga").getString("id") val slugChapter = chapter.url.substringAfterLast("/") - val pages = jsonPage.getJSONObject("chapter").getJSONArray("files").toString() .replace("[", "").replace("]", "").replace("\"", "") .split(",") // Possible improvement here - return pages.map { img -> val url = "https://$domain/upload/chapitre/$idManga/$slugChapter/$img" MangaPage( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt index f5ebd397..31c36c11 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt @@ -31,7 +31,8 @@ internal class TmoManga(context: MangaLoaderContext) : ): List { val tag = tags.oneOrThrowIfMany() val url = buildString { - append("https://$domain") + append("https://") + append(domain) when { !query.isNullOrEmpty() -> { append("/$listUrl") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt index b58b9e1a..0b763068 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("BEASTSCANS", "Beast Scans", "ar") internal class BeastScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BEASTSCANS, "beast-scans.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaSource.BEASTSCANS, "beastscans.net", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt index f82008bb..e3351de9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt @@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* +import java.lang.IllegalArgumentException import java.text.SimpleDateFormat import java.util.* @@ -24,7 +25,7 @@ class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, Ma sortOrder: SortOrder, ): List { if (!query.isNullOrEmpty()) { - return emptyList() // Research revisits non-manga chapters + throw IllegalArgumentException("Search is not supported by this source") } val tag = tags.oneOrThrowIfMany() val url = buildString { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt index 86a621a0..b307ff31 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt @@ -24,14 +24,16 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, val tagQuery = if (tags.isNullOrEmpty()) "" else tags.joinToString(separator = ",") { it.key } val url = if (!query.isNullOrEmpty()) { buildString { - append("https://$domain") + append("https://") + append(domain) append("/tim-kiem/trang-$page.html") append("?q=") append(query.urlEncoded()) } } else { buildString { - append("https://$domain") + append("https://") + append(domain) append("/tim-kiem-nang-cao/trang-$page.html") append("?status=-1&country=0&sort=") when (sortOrder) {