From da1cfdc5eedde7369c829c8f31460deff1e3670d Mon Sep 17 00:00:00 2001
From: Vetle Ledaal <vetle.ledaal@gmail.com>
Date: Fri, 21 Jul 2023 23:41:40 +0200
Subject: [PATCH] WeLoveMangaOne: fix chapter and page logic (#17196)

---
 .../welovemangaone/src/WeLoveMangaOne.kt      | 36 +++++++++++++++++++
 .../multisrc/fmreader/FMReaderGenerator.kt    |  2 +-
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/multisrc/overrides/fmreader/welovemangaone/src/WeLoveMangaOne.kt b/multisrc/overrides/fmreader/welovemangaone/src/WeLoveMangaOne.kt
index f1c09a21c..8c07321f4 100644
--- a/multisrc/overrides/fmreader/welovemangaone/src/WeLoveMangaOne.kt
+++ b/multisrc/overrides/fmreader/welovemangaone/src/WeLoveMangaOne.kt
@@ -3,6 +3,10 @@ package eu.kanade.tachiyomi.extension.ja.welovemangaone
 import eu.kanade.tachiyomi.multisrc.fmreader.FMReader
 import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.source.model.SChapter
+import eu.kanade.tachiyomi.source.model.SManga
+import eu.kanade.tachiyomi.util.asJsoup
+import okhttp3.HttpUrl.Companion.toHttpUrl
+import okhttp3.Request
 import org.jsoup.nodes.Element
 import java.util.Calendar
 
@@ -10,6 +14,18 @@ class WeLoveMangaOne : FMReader("WeLoveMangaOne", "https://welovemanga.one", "ja
     override fun latestUpdatesRequest(page: Int) =
         GET("$baseUrl/manga-list.html?page=$page&sort=last_update")
 
+    override fun chapterListRequest(manga: SManga): Request {
+        val mangaId = MID_URL_REGEX.find(manga.url)
+            ?.groupValues?.get(1)
+            ?: throw Exception("Could not find manga id")
+
+        val xhrUrl = "$baseUrl/app/manga/controllers/cont.Listchapter.php".toHttpUrl().newBuilder()
+            .addQueryParameter("mid", mangaId)
+            .build()
+
+        return GET(xhrUrl, headers)
+    }
+
     override fun chapterFromElement(element: Element, mangaTitle: String): SChapter {
         return SChapter.create().apply {
             element.let {
@@ -41,4 +57,24 @@ class WeLoveMangaOne : FMReader("WeLoveMangaOne", "https://welovemanga.one", "ja
 
         return chapterDate.timeInMillis
     }
+
+    override fun pageListRequest(chapter: SChapter): Request {
+        val request = super.pageListRequest(chapter)
+        val response = client.newCall(request).execute()
+        val document = response.asJsoup()
+
+        val chapterId = document.selectFirst("#chapter")
+            ?.`val`()
+            ?: throw Exception("Could not find chapter id")
+
+        val xhrUrl = "$baseUrl/app/manga/controllers/cont.listImg.php".toHttpUrl().newBuilder()
+            .addQueryParameter("cid", chapterId)
+            .build()
+
+        return GET(xhrUrl, headers)
+    }
+
+    companion object {
+        private val MID_URL_REGEX = "(\\d+)/".toRegex()
+    }
 }
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReaderGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReaderGenerator.kt
index 3f9996d17..8ed603206 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReaderGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/fmreader/FMReaderGenerator.kt
@@ -22,7 +22,7 @@ class FMReaderGenerator : ThemeSourceGenerator {
         SingleLang("Say Truyen", "https://saytruyenvip.com", "vi", overrideVersionCode = 3),
         SingleLang("WeLoveManga", "https://weloma.art", "ja", pkgName = "rawlh", overrideVersionCode = 4),
         SingleLang("Manga1000", "https://manga1000.top", "ja"),
-        SingleLang("WeLoveMangaOne", "https://welovemanga.one", "ja"),
+        SingleLang("WeLoveMangaOne", "https://welovemanga.one", "ja", isNsfw = true, overrideVersionCode = 1),
     )
 
     companion object {