diff --git a/multisrc/overrides/mangathemesia/soulscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000..a58edc097b Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000..688a42f617 Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000..f52b8fbdca Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000..3f0e50f679 Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000..ca52688a05 Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png new file mode 100644 index 0000000000..2eded446a5 Binary files /dev/null and b/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png differ diff --git a/multisrc/overrides/mangathemesia/soulscans/src/SoulScans.kt b/multisrc/overrides/mangathemesia/soulscans/src/SoulScans.kt new file mode 100644 index 0000000000..162e5c1519 --- /dev/null +++ b/multisrc/overrides/mangathemesia/soulscans/src/SoulScans.kt @@ -0,0 +1,45 @@ +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() } + } + } + + private fun String?.removeEmptyPlaceholder(): String? { + return if (this.isNullOrBlank() || this == "-" || this == "N/A") null else this + } +} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt index 62e7a39195..8fe253596f 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt @@ -119,6 +119,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("Silence Scan", "https://silencescan.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 5), SingleLang("SkyMangas", "https://skymangas.com", "es"), SingleLang("Snudae Scans", "https://snudaescans.com", "en", isNsfw = true, className = "BatotoScans", overrideVersionCode = 1), + SingleLang("Soul Scans", "https://soulscans.my.id", "id"), SingleLang("SSSScanlator", "https://sssscanlator.com", "pt-BR"), SingleLang("Starlight Scan", "https://starligthscan.com", "pt-BR", isNsfw = true), SingleLang("Summer Fansub", "https://smmr.in", "pt-BR", isNsfw = true),