81 lines
2.7 KiB
Kotlin
81 lines
2.7 KiB
Kotlin
package eu.kanade.tachiyomi.extension.es.ragnarokscan
|
|
|
|
import eu.kanade.tachiyomi.multisrc.madara.Madara
|
|
import eu.kanade.tachiyomi.multisrc.madara.WordSet
|
|
import eu.kanade.tachiyomi.source.model.SChapter
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import org.jsoup.nodes.Element
|
|
import java.text.ParseException
|
|
import java.text.SimpleDateFormat
|
|
import java.util.Locale
|
|
|
|
class RagnarokScan : Madara(
|
|
"RagnarokScan",
|
|
"https://ragnarokscan.com",
|
|
"es",
|
|
SimpleDateFormat("MMMMM dd, yyyy", Locale("es")),
|
|
) {
|
|
// "mangaSubstring" has changed, so users will have to migrate
|
|
override val versionId = 2
|
|
override val mangaSubString = "series"
|
|
override val chapterUrlSuffix = ""
|
|
|
|
override fun popularMangaSelector() = "div#series-card:has(a:not([href*='bilibilicomics.com']))"
|
|
override val popularMangaUrlSelector = "a.series-link"
|
|
|
|
override val mangaDetailsSelectorTag = "div.tags-content a.notUsed" // Source use this for the scanlator
|
|
override val mangaDetailsSelectorStatus = "div.post-status div.summary-content"
|
|
|
|
override fun popularMangaFromElement(element: Element): SManga {
|
|
val manga = SManga.create()
|
|
|
|
with(element) {
|
|
select(popularMangaUrlSelector).first()?.let {
|
|
manga.setUrlWithoutDomain(it.attr("abs:href"))
|
|
manga.title = it.attr("title")
|
|
}
|
|
|
|
select("img").first()?.let {
|
|
manga.thumbnail_url = imageFromElement(it)
|
|
}
|
|
}
|
|
|
|
return manga
|
|
}
|
|
|
|
override fun chapterFromElement(element: Element): SChapter {
|
|
val chapter = SChapter.create()
|
|
|
|
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.select("p.chapter-manhwa-title").text()
|
|
chapter.date_upload = parseChapterDate(select("span.chapter-release-date").text())
|
|
}
|
|
}
|
|
|
|
return chapter
|
|
}
|
|
|
|
override fun parseChapterDate(date: String?): Long {
|
|
date ?: return 0
|
|
|
|
fun SimpleDateFormat.tryParse(string: String): Long {
|
|
return try {
|
|
parse(string)?.time ?: 0
|
|
} catch (_: ParseException) {
|
|
0
|
|
}
|
|
}
|
|
|
|
return when {
|
|
WordSet("minuto", "minutos", "hora", "horas", "día", "días").endsWith(date) -> {
|
|
parseRelativeDate(date)
|
|
}
|
|
else -> SimpleDateFormat("MMMMM dd, yyyy", Locale("es")).tryParse(date)
|
|
}
|
|
}
|
|
}
|