GreenShit: Fix source data issue (#8827)

* Fix source data issue

* Rename method
This commit is contained in:
Chopper 2025-05-15 12:24:46 -03:00 committed by Draff
parent c44aba3f1a
commit a8e083aa40
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
3 changed files with 18 additions and 9 deletions

View File

@ -2,4 +2,4 @@ plugins {
id("lib-multisrc") id("lib-multisrc")
} }
baseVersionCode = 1 baseVersionCode = 2

View File

@ -36,8 +36,8 @@ class ResultDto<T>(
.chapters.map { .chapters.map {
SChapter.create().apply { SChapter.create().apply {
name = it.name name = it.name
it.chapterNumber?.let { CHAPTER_NUMBER_REGEX.find(it.name)?.groups?.get(0)?.value?.let {
chapter_number = it chapter_number = it.toFloat()
} }
url = "/capitulo/${it.id}" url = "/capitulo/${it.id}"
date_upload = dateFormat.tryParse(it.updateAt) date_upload = dateFormat.tryParse(it.updateAt)
@ -46,7 +46,9 @@ class ResultDto<T>(
fun toPageList(): List<Page> { fun toPageList(): List<Page> {
val dto = (results as ChapterPageDto) val dto = (results as ChapterPageDto)
val chapter = dto.chapterNumber.let { number ->
number.takeIf { it.isNotInteger() } ?: number.toInt()
}
return dto.pages.mapIndexed { index, image -> return dto.pages.mapIndexed { index, image ->
val imageUrl = when { val imageUrl = when {
image.isWordPressContent() -> { image.isWordPressContent() -> {
@ -56,7 +58,7 @@ class ResultDto<T>(
.build() .build()
} }
else -> { 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() .toHttpUrl()
} }
} }
@ -64,6 +66,8 @@ class ResultDto<T>(
} }
} }
private fun Float.isNotInteger(): Boolean = toInt() < this
private fun String.createSlug(): String { private fun String.createSlug(): String {
return Normalizer.normalize(this, Normalizer.Form.NFD) return Normalizer.normalize(this, Normalizer.Form.NFD)
.trim() .trim()
@ -76,6 +80,7 @@ class ResultDto<T>(
companion object { companion object {
@SuppressLint("SimpleDateFormat") @SuppressLint("SimpleDateFormat")
val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT) val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT)
val CHAPTER_NUMBER_REGEX = """\d+(\.\d+)?""".toRegex()
} }
} }
@ -149,8 +154,6 @@ class ChapterDto(
val id: Int, val id: Int,
@SerialName("cap_nome") @SerialName("cap_nome")
val name: String, val name: String,
@SerialName("cap_numero")
val chapterNumber: Float?,
@SerialName("cap_lancado_em") @SerialName("cap_lancado_em")
val updateAt: String, val updateAt: String,
) )
@ -168,7 +171,7 @@ class ChapterPageDto(
@SerialName("obra") @SerialName("obra")
val manga: MangaReferenceDto, val manga: MangaReferenceDto,
@SerialName("cap_numero") @SerialName("cap_numero")
val chapterNumber: Int, val chapterNumber: Float,
) { ) {
@Serializable @Serializable
class MangaReferenceDto( class MangaReferenceDto(
@ -183,7 +186,7 @@ class ChapterPageDto(
class PageDto( class PageDto(
val src: String, val src: String,
@SerialName("numero") @SerialName("numero")
val number: Int? = null, val number: Float? = null,
) { ) {
fun isWordPressContent(): Boolean = number == null fun isWordPressContent(): Boolean = number == null
} }

View File

@ -6,11 +6,13 @@ import eu.kanade.tachiyomi.multisrc.greenshit.MangaDto
import eu.kanade.tachiyomi.multisrc.greenshit.ResultDto import eu.kanade.tachiyomi.multisrc.greenshit.ResultDto
import eu.kanade.tachiyomi.multisrc.greenshit.WrapperChapterDto import eu.kanade.tachiyomi.multisrc.greenshit.WrapperChapterDto
import eu.kanade.tachiyomi.network.GET 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.MangasPage
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import keiyoushi.utils.parseAs import keiyoushi.utils.parseAs
import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import okhttp3.Response import okhttp3.Response
@ -23,6 +25,10 @@ class SussyToons : GreenShit(
override val versionId = 2 override val versionId = 2
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(2)
.build()
override fun popularMangaRequest(page: Int): Request = override fun popularMangaRequest(page: Int): Request =
GET("$apiUrl/obras/top5", headers) GET("$apiUrl/obras/top5", headers)