42 lines
2.1 KiB
Kotlin
42 lines
2.1 KiB
Kotlin
package eu.kanade.tachiyomi.extension.id.soulscans
|
|
|
|
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import org.jsoup.nodes.Document
|
|
import java.util.Locale
|
|
|
|
class SoulScans : MangaThemesia("Soul Scans", "https://soulscans.my.id", "id") {
|
|
|
|
override val hasProjectPage = true
|
|
|
|
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
|
document.selectFirst(seriesDetailsSelector)?.let { seriesDetails ->
|
|
title = seriesDetails.selectFirst(seriesTitleSelector)?.text().orEmpty()
|
|
artist = seriesDetails.selectFirst(seriesArtistSelector)?.ownText().removeEmptyPlaceholder()
|
|
author = seriesDetails.selectFirst(seriesAuthorSelector)?.ownText().removeEmptyPlaceholder()
|
|
description = seriesDetails.select(seriesDescriptionSelector).joinToString("\n") { it.text() }.trim()
|
|
// Add alternative name to manga description
|
|
val altName = seriesDetails.selectFirst(seriesAltNameSelector)?.ownText().takeIf { it.isNullOrBlank().not() }
|
|
altName?.let {
|
|
description = "$description\n\n$altNamePrefix$altName".trim()
|
|
}
|
|
val genres = seriesDetails.select(seriesGenreSelector).map { it.text() }.toMutableList()
|
|
// Add series type (manga/manhwa/manhua/other) to genre
|
|
seriesDetails.selectFirst(seriesTypeSelector)?.ownText().takeIf { it.isNullOrBlank().not() }?.let { genres.add(it) }
|
|
genre = genres.map { genre ->
|
|
genre.lowercase(Locale.forLanguageTag(lang)).replaceFirstChar { char ->
|
|
if (char.isLowerCase()) {
|
|
char.titlecase(Locale.forLanguageTag(lang))
|
|
} else {
|
|
char.toString()
|
|
}
|
|
}
|
|
}
|
|
.joinToString { it.trim() }
|
|
|
|
status = seriesDetails.selectFirst(seriesStatusSelector)?.text().parseStatus()
|
|
seriesDetails.select(seriesThumbnailSelector).firstOrNull()?.let { thumbnail_url = it.imgAttr() }
|
|
}
|
|
}
|
|
}
|