From a8e083aa40ece43ea59b98cd43a24aa64e691373 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Thu, 15 May 2025 12:24:46 -0300 Subject: [PATCH] GreenShit: Fix source data issue (#8827) * Fix source data issue * Rename method --- lib-multisrc/greenshit/build.gradle.kts | 2 +- .../multisrc/greenshit/GreenShitDto.kt | 19 +++++++++++-------- .../extension/pt/sussyscan/SussyToons.kt | 6 ++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib-multisrc/greenshit/build.gradle.kts b/lib-multisrc/greenshit/build.gradle.kts index dc076cc37..9dce2478c 100644 --- a/lib-multisrc/greenshit/build.gradle.kts +++ b/lib-multisrc/greenshit/build.gradle.kts @@ -2,4 +2,4 @@ plugins { id("lib-multisrc") } -baseVersionCode = 1 +baseVersionCode = 2 diff --git a/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShitDto.kt b/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShitDto.kt index 5e534d698..3430afff8 100644 --- a/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShitDto.kt +++ b/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShitDto.kt @@ -36,8 +36,8 @@ class ResultDto( .chapters.map { SChapter.create().apply { name = it.name - it.chapterNumber?.let { - chapter_number = it + CHAPTER_NUMBER_REGEX.find(it.name)?.groups?.get(0)?.value?.let { + chapter_number = it.toFloat() } url = "/capitulo/${it.id}" date_upload = dateFormat.tryParse(it.updateAt) @@ -46,7 +46,9 @@ class ResultDto( fun toPageList(): List { val dto = (results as ChapterPageDto) - + val chapter = dto.chapterNumber.let { number -> + number.takeIf { it.isNotInteger() } ?: number.toInt() + } return dto.pages.mapIndexed { index, image -> val imageUrl = when { image.isWordPressContent() -> { @@ -56,7 +58,7 @@ class ResultDto( .build() } else -> { - "$CDN_URL/scans/${dto.manga.scanId}/obras/${dto.manga.id}/capitulos/${dto.chapterNumber}/${image.src}" + "$CDN_URL/scans/${dto.manga.scanId}/obras/${dto.manga.id}/capitulos/$chapter/${image.src}" .toHttpUrl() } } @@ -64,6 +66,8 @@ class ResultDto( } } + private fun Float.isNotInteger(): Boolean = toInt() < this + private fun String.createSlug(): String { return Normalizer.normalize(this, Normalizer.Form.NFD) .trim() @@ -76,6 +80,7 @@ class ResultDto( companion object { @SuppressLint("SimpleDateFormat") val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) + val CHAPTER_NUMBER_REGEX = """\d+(\.\d+)?""".toRegex() } } @@ -149,8 +154,6 @@ class ChapterDto( val id: Int, @SerialName("cap_nome") val name: String, - @SerialName("cap_numero") - val chapterNumber: Float?, @SerialName("cap_lancado_em") val updateAt: String, ) @@ -168,7 +171,7 @@ class ChapterPageDto( @SerialName("obra") val manga: MangaReferenceDto, @SerialName("cap_numero") - val chapterNumber: Int, + val chapterNumber: Float, ) { @Serializable class MangaReferenceDto( @@ -183,7 +186,7 @@ class ChapterPageDto( class PageDto( val src: String, @SerialName("numero") - val number: Int? = null, + val number: Float? = null, ) { fun isWordPressContent(): Boolean = number == null } diff --git a/src/pt/sussyscan/src/eu/kanade/tachiyomi/extension/pt/sussyscan/SussyToons.kt b/src/pt/sussyscan/src/eu/kanade/tachiyomi/extension/pt/sussyscan/SussyToons.kt index 7fccc1932..3a9d81aaf 100644 --- a/src/pt/sussyscan/src/eu/kanade/tachiyomi/extension/pt/sussyscan/SussyToons.kt +++ b/src/pt/sussyscan/src/eu/kanade/tachiyomi/extension/pt/sussyscan/SussyToons.kt @@ -6,11 +6,13 @@ import eu.kanade.tachiyomi.multisrc.greenshit.MangaDto import eu.kanade.tachiyomi.multisrc.greenshit.ResultDto import eu.kanade.tachiyomi.multisrc.greenshit.WrapperChapterDto import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import keiyoushi.utils.parseAs +import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -23,6 +25,10 @@ class SussyToons : GreenShit( override val versionId = 2 + override val client: OkHttpClient = super.client.newBuilder() + .rateLimit(2) + .build() + override fun popularMangaRequest(page: Int): Request = GET("$apiUrl/obras/top5", headers)