53 lines
2.1 KiB
Kotlin
53 lines
2.1 KiB
Kotlin
package eu.kanade.tachiyomi.extension.en.readmanhua
|
|
|
|
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
|
import eu.kanade.tachiyomi.multisrc.madara.WordSet
|
|
import eu.kanade.tachiyomi.source.model.SChapter
|
|
import org.jsoup.nodes.Element
|
|
import java.text.SimpleDateFormat
|
|
import java.util.Calendar
|
|
import java.util.Locale
|
|
|
|
class ReadManhua : Madara(
|
|
"ReadManhua",
|
|
"https://readmanhua.net",
|
|
"en",
|
|
dateFormat = SimpleDateFormat("dd MMM yyyy", Locale.US)
|
|
) {
|
|
|
|
override fun chapterFromElement(element: Element): SChapter {
|
|
val chapter = SChapter.create()
|
|
val year = Calendar.getInstance().get(Calendar.YEAR).toLong()
|
|
|
|
with(element) {
|
|
select(chapterUrlSelector).first()?.let { urlElement ->
|
|
chapter.url = urlElement.attr("abs:href").let {
|
|
it.substringBefore("?style=paged") + if (!it.endsWith(chapterUrlSuffix)) chapterUrlSuffix else ""
|
|
}
|
|
chapter.name = urlElement.text()
|
|
}
|
|
|
|
// Dates can be part of a "new" graphic or plain text
|
|
chapter.date_upload = select("img").firstOrNull()?.attr("alt")?.let { parseRelativeDate(it) }
|
|
?: parseChapterDate(select("span.chapter-release-date i").firstOrNull()?.text() + " " + year)
|
|
}
|
|
|
|
return chapter
|
|
}
|
|
|
|
// Parses dates in this form:
|
|
// 21 horas ago
|
|
private fun parseRelativeDate(date: String): Long {
|
|
val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0
|
|
val cal = Calendar.getInstance()
|
|
|
|
return when {
|
|
WordSet("hari", "gün", "jour", "día", "dia", "day").anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
|
|
WordSet("jam", "saat", "heure", "hora", "hour").anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis
|
|
WordSet("menit", "dakika", "min", "minute", "minuto").anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis
|
|
WordSet("detik", "segundo", "second").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis
|
|
else -> 0
|
|
}
|
|
}
|
|
}
|