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() } } } }