From e2eca020a9684f2fa5e69b6aef53e80cf387bb8f Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Sun, 5 Jan 2020 17:27:43 -0500 Subject: [PATCH] Scantrad - date parsing fix (#1984) --- src/fr/scantrad/build.gradle | 2 +- .../extension/fr/scantrad/Scantrad.kt | 81 +++++++++++-------- 2 files changed, 47 insertions(+), 36 deletions(-) diff --git a/src/fr/scantrad/build.gradle b/src/fr/scantrad/build.gradle index 509746579..10da3c5ab 100644 --- a/src/fr/scantrad/build.gradle +++ b/src/fr/scantrad/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: Scantrad' pkgNameSuffix = 'fr.scantrad' extClass = '.Scantrad' - extVersionCode = 3 + extVersionCode = 4 libVersion = '1.2' } diff --git a/src/fr/scantrad/src/eu/kanade/tachiyomi/extension/fr/scantrad/Scantrad.kt b/src/fr/scantrad/src/eu/kanade/tachiyomi/extension/fr/scantrad/Scantrad.kt index a03285510..25ee95eed 100644 --- a/src/fr/scantrad/src/eu/kanade/tachiyomi/extension/fr/scantrad/Scantrad.kt +++ b/src/fr/scantrad/src/eu/kanade/tachiyomi/extension/fr/scantrad/Scantrad.kt @@ -10,8 +10,11 @@ import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element -import java.util.* +import java.util.Calendar +import java.util.Locale +import java.text.SimpleDateFormat import rx.Observable +import java.lang.Exception class Scantrad : ParsedHttpSource() { @@ -132,41 +135,49 @@ class Scantrad : ParsedHttpSource() { } private fun parseChapterDate(date: String): Long { - val value = date.split(" ")[3].toInt() + val value = date.split(" ")[3].toIntOrNull() - return when (date.split(" ")[4]) { - "minute", "minutes" -> Calendar.getInstance().apply { - add(Calendar.MINUTE, value * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - "heure", "heures" -> Calendar.getInstance().apply { - add(Calendar.HOUR_OF_DAY, value * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - "jour", "jours" -> Calendar.getInstance().apply { - add(Calendar.DATE, value * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - "semaine", "semaines" -> Calendar.getInstance().apply { - add(Calendar.DATE, value * 7 * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - "mois" -> Calendar.getInstance().apply { - add(Calendar.MONTH, value * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - "an", "ans" -> Calendar.getInstance().apply { - add(Calendar.YEAR, value * -1) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - else -> { - return 0 + return if (value != null) { + when (date.split(" ")[4]) { + "minute", "minutes" -> Calendar.getInstance().apply { + add(Calendar.MINUTE, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "heure", "heures" -> Calendar.getInstance().apply { + add(Calendar.HOUR_OF_DAY, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "jour", "jours" -> Calendar.getInstance().apply { + add(Calendar.DATE, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "semaine", "semaines" -> Calendar.getInstance().apply { + add(Calendar.DATE, value * 7 * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "mois" -> Calendar.getInstance().apply { + add(Calendar.MONTH, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + "an", "ans", "année" -> Calendar.getInstance().apply { + add(Calendar.YEAR, value * -1) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + else -> { + return 0L + } + } + } else { + try { + SimpleDateFormat("dd MMM yyyy", Locale.FRENCH).parse(date.substringAfter("le ")).time + } catch (_: Exception) { + 0L } } }