2021-09-06 10:19:14 +00:00
|
|
|
|
package eu.kanade.tachiyomi.extension.all.asurascans
|
|
|
|
|
|
|
|
|
|
import eu.kanade.tachiyomi.source.SourceFactory
|
|
|
|
|
import eu.kanade.tachiyomi.source.model.Page
|
|
|
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
|
|
|
import org.jsoup.nodes.Document
|
|
|
|
|
import java.text.SimpleDateFormat
|
|
|
|
|
import java.util.Locale
|
|
|
|
|
|
|
|
|
|
class AsuraScansFactory : SourceFactory {
|
|
|
|
|
override fun createSources() = listOf(
|
|
|
|
|
AsuraScansEn(),
|
|
|
|
|
AsuraScansTr()
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-25 15:51:09 +00:00
|
|
|
|
class AsuraScansEn : AsuraScans("https://asurascans.com", "en", SimpleDateFormat("MMM d, yyyy", Locale.US)) {
|
2021-12-07 13:02:03 +00:00
|
|
|
|
override val pageSelector = "div.rdminimal > p > img"
|
2021-09-06 10:19:14 +00:00
|
|
|
|
|
|
|
|
|
// Skip scriptPages
|
|
|
|
|
override fun pageListParse(document: Document): List<Page> {
|
|
|
|
|
return document.select(pageSelector)
|
2021-11-21 23:40:12 +00:00
|
|
|
|
.filterNot { it.attr("src").isNullOrEmpty() }
|
|
|
|
|
.mapIndexed { i, img -> Page(i, "", img.attr("src")) }
|
2021-09-06 10:19:14 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-25 15:51:09 +00:00
|
|
|
|
class AsuraScansTr : AsuraScans("https://tr.asurascans.com", "tr", SimpleDateFormat("MMM d, yyyy", Locale("tr"))) {
|
2021-09-06 10:19:14 +00:00
|
|
|
|
override fun mangaDetailsParse(document: Document): SManga {
|
|
|
|
|
return SManga.create().apply {
|
|
|
|
|
document.select("div.bigcontent").firstOrNull()?.let { infoElement ->
|
|
|
|
|
status = parseStatus(infoElement.select(".imptdt:contains(Durum) i").firstOrNull()?.ownText())
|
|
|
|
|
infoElement.select(".fmed b:contains(Yazar)+span").firstOrNull()?.ownText().let {
|
|
|
|
|
if (it.isNullOrBlank().not() && it != "N/A" && it != "-") {
|
|
|
|
|
author = it
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
infoElement.select(".fmed b:contains(Çizer)+span").firstOrNull()?.ownText().let {
|
|
|
|
|
if (it.isNullOrBlank().not() && it != "N/A" && it != "-") {
|
|
|
|
|
artist = it
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
description = infoElement.select("div.desc p, div.entry-content p").joinToString("\n") { it.text() }
|
|
|
|
|
thumbnail_url = infoElement.select("div.thumb img").imgAttr()
|
|
|
|
|
|
|
|
|
|
val genres = infoElement.select(".mgen a")
|
|
|
|
|
.map { element -> element.text().toLowerCase(Locale.ROOT) }
|
|
|
|
|
.toMutableSet()
|
|
|
|
|
|
|
|
|
|
// add series type(manga/manhwa/manhua/other) thinggy to genre
|
|
|
|
|
document.select(seriesTypeSelector).firstOrNull()?.ownText()?.let {
|
|
|
|
|
if (it.isEmpty().not() && genres.contains(it).not()) {
|
|
|
|
|
genres.add(it.toLowerCase(Locale.ROOT))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
genre = genres.toList().map { it.capitalize(Locale.ROOT) }.joinToString(", ")
|
|
|
|
|
|
|
|
|
|
// add alternative name to manga description
|
|
|
|
|
document.select(altNameSelector).firstOrNull()?.ownText()?.let {
|
|
|
|
|
if (it.isBlank().not() && it != "N/A" && it != "-") {
|
|
|
|
|
description = when {
|
|
|
|
|
description.isNullOrBlank() -> altName + it
|
|
|
|
|
else -> description + "\n\n$altName" + it
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
override val seriesTypeSelector = ".imptdt:contains(Tür) a"
|
|
|
|
|
override val altName: String = "Alternatif isim: "
|
|
|
|
|
|
|
|
|
|
override fun parseStatus(element: String?): Int = when {
|
|
|
|
|
element == null -> SManga.UNKNOWN
|
|
|
|
|
listOf("Devam Ediyor").any { it.contains(element, ignoreCase = true) } -> SManga.ONGOING
|
|
|
|
|
listOf("Tamamlandı").any { it.contains(element, ignoreCase = true) } -> SManga.COMPLETED
|
|
|
|
|
else -> SManga.UNKNOWN
|
|
|
|
|
}
|
|
|
|
|
}
|