From f74b23e3eacd2642cffbc9bcc59c55ebf35828e4 Mon Sep 17 00:00:00 2001
From: seew3l <90949336+seew3l@users.noreply.github.com>
Date: Wed, 18 Jan 2023 17:18:14 -0500
Subject: [PATCH] DatGarScanlation: Update selectors (#15013)

* DatGarScanlation: Update selectors

* Add requested changes

* Lint
---
 .../datgarscanlation/src/DatGarScanlation.kt  | 32 +++++++++++++++++++
 .../multisrc/zeistmanga/ZeistManga.kt         |  3 +-
 .../zeistmanga/ZeistMangaGenerator.kt         |  2 +-
 3 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 multisrc/overrides/zeistmanga/datgarscanlation/src/DatGarScanlation.kt

diff --git a/multisrc/overrides/zeistmanga/datgarscanlation/src/DatGarScanlation.kt b/multisrc/overrides/zeistmanga/datgarscanlation/src/DatGarScanlation.kt
new file mode 100644
index 000000000..7171ca443
--- /dev/null
+++ b/multisrc/overrides/zeistmanga/datgarscanlation/src/DatGarScanlation.kt
@@ -0,0 +1,32 @@
+package eu.kanade.tachiyomi.extension.es.datgarscanlation
+
+import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
+import org.jsoup.nodes.Document
+
+class DatGarScanlation : ZeistManga("DatGarScanlation", "https://datgarscanlation.blogspot.com", "es") {
+
+    private val altChapterFeedRegex = """label\s*=\s*'([^']+)'""".toRegex()
+    private val altScriptSelector = "#latest > script"
+
+    override fun getChaptersUrl(doc: Document): String {
+        var chapterRegex = chapterFeedRegex
+        var script = doc.selectFirst(scriptSelector)
+
+        if (script == null) {
+            script = doc.selectFirst(altScriptSelector)
+            chapterRegex = altChapterFeedRegex
+        }
+
+        val feed = chapterRegex
+            .find(script.html())
+            ?.groupValues?.get(1)
+            ?: throw Exception("Failed to find chapter feed")
+
+        val url = apiUrl(feed)
+            .addQueryParameter("start-index", "2") // Only get chapters
+            .addQueryParameter("max-results", "999999") // Get all chapters
+            .build()
+
+        return url.toString()
+    }
+}
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt
index 075806e26..8ecd4f21d 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt
@@ -42,6 +42,7 @@ abstract class ZeistManga(
             .addQueryParameter("start-index", "2") // Only get chapters
             .addQueryParameter("max-results", "999999") // Get all chapters
             .build()
+
         return url.toString()
     }
 
@@ -167,7 +168,7 @@ abstract class ZeistManga(
 
     override fun searchMangaNextPageSelector(): String? = null
 
-    private fun apiUrl(feed: String = "Series"): HttpUrl.Builder {
+    open fun apiUrl(feed: String = "Series"): HttpUrl.Builder {
         return "$baseUrl/feeds/posts/default/-/".toHttpUrl().newBuilder()
             .addPathSegment(feed)
             .addQueryParameter("alt", "json")
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
index c2846620f..08b900b1d 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
@@ -9,7 +9,7 @@ class ZeistMangaGenerator : ThemeSourceGenerator {
 
     override val themeClass = "ZeistManga"
 
-    override val baseVersionCode: Int = 2
+    override val baseVersionCode: Int = 3
 
     override val sources = listOf(
         SingleLang("DatGarScanlation", "https://datgarscanlation.blogspot.com", "es"),