From 9b4153aacc0790641c3331f5a6e955015372e2a1 Mon Sep 17 00:00:00 2001 From: devi Date: Sun, 15 Oct 2023 10:12:20 +0200 Subject: [PATCH] fix --- .../kotatsu/parsers/site/ar/FlixScans.kt | 10 ++++-- .../kotatsu/parsers/site/fr/LugnicaScans.kt | 32 +++++++++---------- .../kotatsu/parsers/site/fr/ScansMangasMe.kt | 1 - .../parsers/site/madara/pt/LimboScan.kt | 14 ++++++++ .../otakusanctuary/OtakuSanctuaryParser.kt | 1 + .../kotatsu/parsers/site/pt/YugenMangas.kt | 5 +-- 6 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt 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 523f1b49..03bb8d38 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 @@ -148,16 +148,20 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context val json = JSONArray(doc.requireElementById("__NUXT_DATA__").data()) val chapterData = json.getJSONObject(6).getInt("chapterData") val pageLocate = json.getJSONObject(chapterData).getInt("webtoon") - val pages = json.getJSONArray(pageLocate).toString().replace("[", "").replace("]", "").split(",") - return pages.map { - val id = it.toInt() + val jsonPages = json.getJSONArray(pageLocate) + val pages = ArrayList(jsonPages.length()) + for (i in 0 until jsonPages.length()) { + val id = jsonPages.getInt(i) val url = "https://api.$domain/storage/" + json.getString(id) + pages.add( MangaPage( id = generateUid(url), url = url, preview = null, source = source, ) + ) } + return pages } } 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 2e02fec6..2da188be 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 @@ -93,7 +93,6 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont append(page) } val json = webClient.httpGet(url).parseJsonArray() - return json.mapJSON { j -> val urlManga = "https://$domain/api/get/card/${j.getString("manga_slug")}" val img = "https://$domain/upload/min_cover/${j.getString("manga_image")}" @@ -120,7 +119,7 @@ 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 chapters = json.getJSONObject("chapters").toString().split("{\"id\":").drop(1) val slug = manga.url.substringAfterLast("/") val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE) return manga.copy( @@ -138,8 +137,7 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont val url = "https://$domain/api/get/chapter/$slug/$id" val date = getDateString( it.substringAfter("\"date\":\"").substringBefore("\",").toLong(), - ) // Possible improvement here - + ) MangaChapter( id = generateUid(url), name = "Chapitre : $id", @@ -160,20 +158,22 @@ internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(cont 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( - id = generateUid(url), - url = url, - preview = null, - source = source, + val idManga = jsonPage.getJSONObject("manga").getInt("id") + val slug = jsonPage.getJSONObject("chapter").getInt("chapter") + val jsonPages = jsonPage.getJSONObject("chapter").getJSONArray("files") + val pages = ArrayList(jsonPages.length()) + for (i in 0 until jsonPages.length()) { + val url = "https://$domain/upload/chapters/$idManga/$slug/${jsonPages.getString(i)}" + pages.add( + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ), ) } + return pages } override suspend fun getTags(): Set = emptySet() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt index fff12eca..4afeba99 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt @@ -167,7 +167,6 @@ internal class ScansMangasMe(context: MangaLoaderContext) : val pages = ArrayList(images.length()) for (i in 0 until images.length()) { - val pageTake = images.getJSONObject(i) pages.add( MangaPage( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt new file mode 100644 index 00000000..504f3077 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt @@ -0,0 +1,14 @@ +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("LIMBOSCAN", "Limbo Scan", "pt") +internal class LimboScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LIMBOSCAN, "limboscan.com.br") { + override val tagPrefix = "obras-genre/" + override val listUrl= "obras/" + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt index b5f39ed7..04c2fc5a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt @@ -289,6 +289,7 @@ internal abstract class OtakuSanctuaryParser( } + @Suppress("NAME_SHADOWING") private fun processUrl(url: String, vi: String = ""): String { var url = url.replace("_h_", "http") .replace("_e_", "/extendContent/Manga") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt index 45bfdb1b..4d61c0b7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt @@ -125,8 +125,9 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) - val urlApi = fullUrl.replace("/series/", "/api/serie/").replace("/capitulo", "/chapter/capitulo") + "images/" - val json = webClient.httpGet(urlApi).parseJson().getJSONArray("chapter_images") + val apiUrl = webClient.httpGet(fullUrl).parseHtml().selectFirstOrThrow("script:containsData(imageUrls)").data() + .substringAfter("apiUrl = \"").substringBefore("\";") + val json = webClient.httpGet(apiUrl.toAbsoluteUrl(domain)).parseJson().getJSONArray("chapter_images") val pages = ArrayList(json.length()) for (i in 0 until json.length()) { val img = "https://media.$domain/${json.getString(i)}"