From 3c473ea28d05e90d3c52070ec258c90f37fb9983 Mon Sep 17 00:00:00 2001
From: Riztard Lanthorn <riyanluqman@gmail.com>
Date: Sun, 22 Nov 2020 21:12:33 +0700
Subject: [PATCH] Komiku fix chapter (#4921)

Komiku fix chapter
---
 src/id/komiku/build.gradle                    |  2 +-
 .../tachiyomi/extension/id/komiku/Komiku.kt   | 22 +++++++++++--------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/id/komiku/build.gradle b/src/id/komiku/build.gradle
index ee3bef18b..4d28beb10 100644
--- a/src/id/komiku/build.gradle
+++ b/src/id/komiku/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'Komiku'
     pkgNameSuffix = 'id.komiku'
     extClass = '.Komiku'
-    extVersionCode = 3
+    extVersionCode = 4
     libVersion = '1.2'
 }
 
diff --git a/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt b/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt
index 10dea5590..3b7c5ad21 100644
--- a/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt
+++ b/src/id/komiku/src/eu/kanade/tachiyomi/extension/id/komiku/Komiku.kt
@@ -9,7 +9,9 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource
 import okhttp3.OkHttpClient
 import org.jsoup.nodes.Document
 import org.jsoup.nodes.Element
+import java.text.SimpleDateFormat
 import java.util.Calendar
+import java.util.Locale
 
 class Komiku : ParsedHttpSource() {
     override val name = "Komiku"
@@ -73,26 +75,28 @@ class Komiku : ParsedHttpSource() {
         else -> SManga.UNKNOWN
     }
 
-    override fun chapterListSelector() = "table.chapter tr:has(td.judulseries)"
+    override fun chapterListSelector() = "table#Daftar_Chapter tr:has(td.judulseries)"
 
     override fun chapterFromElement(element: Element) = SChapter.create().apply {
-        setUrlWithoutDomain(element.select("a.popunder").attr("href"))
-        name = element.select("a.popunder").attr("title")
+        setUrlWithoutDomain(element.select("a").attr("href"))
+        name = element.select("a").attr("title")
 
-        // Has datetime attribute, but all are set to start of current day for whatever reason, so parsing text instead
-        date_upload = parseRelativeDate(element.select("time").text().trim()) ?: 0
+        val timeStamp = element.select("td.tanggalseries")
+        if (timeStamp.text().contains("lalu")) {
+            date_upload = parseRelativeDate(timeStamp.text().trim()) ?: 0
+        } else {
+            date_upload = parseDate(timeStamp.last())
+        }
     }
 
+    private fun parseDate(element: Element): Long = SimpleDateFormat("dd/MM/yyyy", Locale.US).parse(element.text())?.time ?: 0
+
     // Used Google translate here
     private fun parseRelativeDate(date: String): Long? {
         val trimmedDate = date.substringBefore(" lalu").removeSuffix("s").split(" ")
 
         val calendar = Calendar.getInstance()
         when (trimmedDate[1]) {
-            "tahun" -> calendar.apply { add(Calendar.YEAR, -trimmedDate[0].toInt()) }
-            "bulan" -> calendar.apply { add(Calendar.MONTH, -trimmedDate[0].toInt()) }
-            "minggu" -> calendar.apply { add(Calendar.WEEK_OF_MONTH, -trimmedDate[0].toInt()) }
-            "hari" -> calendar.apply { add(Calendar.DAY_OF_MONTH, -trimmedDate[0].toInt()) }
             "jam" -> calendar.apply { add(Calendar.HOUR_OF_DAY, -trimmedDate[0].toInt()) }
             "menit" -> calendar.apply { add(Calendar.MINUTE, -trimmedDate[0].toInt()) }
             "detik" -> calendar.apply { add(Calendar.SECOND, 0) }