diff --git a/src/fr/poseidonscans/build.gradle b/src/fr/poseidonscans/build.gradle index 004f8f775..6e53ab56a 100644 --- a/src/fr/poseidonscans/build.gradle +++ b/src/fr/poseidonscans/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Poseidon Scans' extClass = '.PoseidonScans' - extVersionCode = 45 + extVersionCode = 46 isNsfw = false } diff --git a/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScans.kt b/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScans.kt index 990f85388..86ba975e9 100644 --- a/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScans.kt +++ b/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScans.kt @@ -388,11 +388,35 @@ class PoseidonScans : HttpSource() { } return mangaDto.chapters - ?.filter { it.isPremium != true } ?.mapNotNull { ch -> + // If chapter is premium, check if premium period has expired + if (ch.isPremium == true) { + ch.premiumUntil?.let { premiumUntilString -> + val premiumUntilDate = parseIsoDate(premiumUntilString) + if (premiumUntilDate > 0) { + // Exclude if premium period is still active + if (System.currentTimeMillis() <= premiumUntilDate) { + return@mapNotNull null + } + } else { + // If we can't parse the premium until date, exclude the chapter for safety + return@mapNotNull null + } + } ?: return@mapNotNull null // If premiumUntil is null but isPremium is true, exclude + } val chapterNumberString = ch.number.toString().removeSuffix(".0") SChapter.create().apply { - val baseName = "Chapitre $chapterNumberString" + val isVolume = ch.isVolume == true || ( + ch.number == ch.number.toInt().toFloat() && + ch.title?.lowercase()?.contains("volume") == true + ) + + val baseName = if (isVolume) { + "Volume $chapterNumberString" + } else { + "Chapitre $chapterNumberString" + } + name = ch.title?.trim()?.takeIf { it.isNotBlank() } ?.let { title -> "$baseName - $title" } ?: baseName diff --git a/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScansDto.kt b/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScansDto.kt index 3576979c1..d8300afc1 100644 --- a/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScansDto.kt +++ b/src/fr/poseidonscans/src/eu/kanade/tachiyomi/extension/fr/poseidonscans/PoseidonScansDto.kt @@ -41,6 +41,8 @@ class ChapterData( val title: String? = null, val createdAt: String, val isPremium: Boolean? = false, + val premiumUntil: String? = null, + val isVolume: Boolean? = false, ) @Serializable