From 901630551ac9ac372a2c17725ca72c743a7c1348 Mon Sep 17 00:00:00 2001 From: Aurel <68382673+Nyantad@users.noreply.github.com> Date: Tue, 16 Sep 2025 03:30:30 +0200 Subject: [PATCH] Webtoons: Option to use sequential chapter numbers + french regex fix (#10451) * fix(Webtoons): update chapter number handling * update extVersionCode to 52 * revert to old ver to add 2 options * Update src/all/webtoons/src/eu/kanade/tachiyomi/extension/all/webtoons/Webtoons.kt --- src/all/webtoons/build.gradle | 2 +- .../tachiyomi/extension/all/webtoons/Webtoons.kt | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/all/webtoons/build.gradle b/src/all/webtoons/build.gradle index 45ed5b4fb..a4379c970 100644 --- a/src/all/webtoons/build.gradle +++ b/src/all/webtoons/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Webtoons.com' extClass = '.WebtoonsFactory' - extVersionCode = 51 + extVersionCode = 52 isNsfw = false } diff --git a/src/all/webtoons/src/eu/kanade/tachiyomi/extension/all/webtoons/Webtoons.kt b/src/all/webtoons/src/eu/kanade/tachiyomi/extension/all/webtoons/Webtoons.kt index e1a6e60a5..d4f515b14 100644 --- a/src/all/webtoons/src/eu/kanade/tachiyomi/extension/all/webtoons/Webtoons.kt +++ b/src/all/webtoons/src/eu/kanade/tachiyomi/extension/all/webtoons/Webtoons.kt @@ -298,7 +298,7 @@ open class Webtoons( } } - if (unrecognized > recognized) { + if (useSequentialNumberingPref() || unrecognized > recognized) { chapters.onEachIndexed { index, chapter -> chapter.chapterNumber = (index + 1).toFloat() } @@ -353,7 +353,7 @@ open class Webtoons( // possible bonus/mini/special episode - 6 capture group // episode number - 11 capture group private val episodeNoRegex = Regex( - """(?:(s(eason)?|part|vol(ume)?)\s*\.?\s*(\d+).*?)?(.*?(mini|bonus|special).*?)?(e(p(isode)?)?|ch(apter)?)\s*\.?\s*(\d+(\.\d+)?)""", + """(?:(s(eason)?|saison|part|vol(ume)?)\s*\.?\s*(\d+).*?)?(.*?(mini|bonus|special).*?)?(e(p(isode)?)?|ch(apter)?)\s*\.?\s*(\d+(\.\d+)?)""", RegexOption.IGNORE_CASE, ) @@ -416,6 +416,7 @@ open class Webtoons( private fun showAuthorsNotesPref() = preferences.getBoolean(SHOW_AUTHORS_NOTES_KEY, false) private fun useMaxQualityPref() = preferences.getBoolean(USE_MAX_QUALITY_KEY, false) + private fun useSequentialNumberingPref() = preferences.getBoolean(USE_SEQUENTIAL_NUMBERING_KEY, false) override fun setupPreferenceScreen(screen: PreferenceScreen) { SwitchPreferenceCompat(screen.context).apply { @@ -431,6 +432,13 @@ open class Webtoons( summary = "Enable to load images in maximum quality." setDefaultValue(false) }.also(screen::addPreference) + + SwitchPreferenceCompat(screen.context).apply { + key = USE_SEQUENTIAL_NUMBERING_KEY + title = "Use sequential chapter numbering" + summary = "Enable to use sequential numbering instead of official episode numbers." + setDefaultValue(false) + }.also(screen::addPreference) } override fun imageUrlParse(response: Response): String { @@ -440,4 +448,5 @@ open class Webtoons( private const val SHOW_AUTHORS_NOTES_KEY = "showAuthorsNotes" private const val USE_MAX_QUALITY_KEY = "useMaxQuality" +private const val USE_SEQUENTIAL_NUMBERING_KEY = "useSequentialNumbering" const val ID_SEARCH_PREFIX = "id:"