From f7620bc174f4792e4f5f79082b54680b165eb356 Mon Sep 17 00:00:00 2001
From: Promchai Chooseang <promchai2sin@gmail.com>
Date: Thu, 4 Nov 2021 17:32:42 +0700
Subject: [PATCH] Fix Mukudoujin chapter number (#9729)

* Add MikuDoujin
* Add MikuDoujin V.1.2.1

* Update MikuDoujin.kt

* Update MikuDoujin
* Add ability to search using genre

* Add Rh2PlusManga
* Add Rh2PlusManga V.1.12.2
* Use Madara multi-source themes

* Change MikuDoujin gradle and Add Rh2PlusManga generator.
* update file to suggestion.
* add Rh2PlusManga to MadaraGenerator.kt.

* Fix Thai Madara source time format and MikuDoujin pages selector.
* add Thai relative time wordlist to Madara parseRelativeDate.
* change Rh2PlusManga and Mangauptocat date format.
* change Mangauptocat base url.
* change MikuDoujin pageListParse selector.

* Fix MikuDoujin Chapter number.
* fix MikuDoujin when try to fetch chapter name with non numeric ending word.
---
 src/th/mikudoujin/build.gradle                |  2 +-
 .../extension/th/mikudoujin/MikuDoujin.kt     | 22 ++++++++++++++-----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/th/mikudoujin/build.gradle b/src/th/mikudoujin/build.gradle
index 8993debde..2719c2da9 100644
--- a/src/th/mikudoujin/build.gradle
+++ b/src/th/mikudoujin/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'MikuDoujin'
     pkgNameSuffix = 'th.mikudoujin'
     extClass = '.MikuDoujin'
-    extVersionCode = 2
+    extVersionCode = 3
     isNsfw = true
 }
 
diff --git a/src/th/mikudoujin/src/eu/kanade/tachiyomi/extension/th/mikudoujin/MikuDoujin.kt b/src/th/mikudoujin/src/eu/kanade/tachiyomi/extension/th/mikudoujin/MikuDoujin.kt
index ae7a8fd16..f46c3a8b8 100644
--- a/src/th/mikudoujin/src/eu/kanade/tachiyomi/extension/th/mikudoujin/MikuDoujin.kt
+++ b/src/th/mikudoujin/src/eu/kanade/tachiyomi/extension/th/mikudoujin/MikuDoujin.kt
@@ -143,7 +143,9 @@ class MikuDoujin : ParsedHttpSource() {
 
     override fun chapterListSelector() = "table.table-episode tr"
 
-    override fun chapterFromElement(element: Element): SChapter {
+    override fun chapterFromElement(element: Element): SChapter = throw Exception("Unused")
+
+    private fun chapterFromElementWithIndex(element: Element, idx: Int, manga: SManga): SChapter {
         val chapter = SChapter.create()
         element.select("td a").let {
             chapter.setUrlWithoutDomain(it.attr("href"))
@@ -151,7 +153,15 @@ class MikuDoujin : ParsedHttpSource() {
             if (chapter.name.isEmpty()) {
                 chapter.chapter_number = 0.0f
             } else {
-                chapter.chapter_number = chapter.name.split(" ").last().toFloat()
+                val lastWord = chapter.name.split(" ").last()
+                try {
+                    chapter.chapter_number = lastWord.toFloat()
+                } catch (ex: NumberFormatException) {
+                    if (lastWord == "จบ") {
+                        manga.status = SManga.COMPLETED
+                    }
+                    chapter.chapter_number = (idx + 1).toFloat()
+                }
             }
         }
 
@@ -167,6 +177,7 @@ class MikuDoujin : ParsedHttpSource() {
                 val mangaDocument = it.asJsoup()
 
                 if (mangaDocument.select(chapterListSelector()).isEmpty()) {
+                    manga.status = SManga.COMPLETED
                     val createdChapter = SChapter.create().apply {
                         url = manga.url
                         name = "Chapter 1"
@@ -174,9 +185,10 @@ class MikuDoujin : ParsedHttpSource() {
                     }
                     chList = listOf(createdChapter)
                 } else {
-                    chList = mangaDocument.select(chapterListSelector()).map { Chapter ->
-                        chapterFromElement(Chapter)
-                    }
+                    chList =
+                        mangaDocument.select(chapterListSelector()).mapIndexed { idx, Chapter ->
+                            chapterFromElementWithIndex(Chapter, idx, manga)
+                        }
                 }
                 chList
             }